La pantalla 3 de este mandato contiene el nivel actual. Estos datos son necesarios para poder depurar un objeto. Los programas de servicio suelen utilizarse para las funciones habituales que se realizan con frecuencia en las aplicaciones. Los programas de servicio permiten volver a utilizar, simplificar el mantenimiento y reducir los requi- sitos de almacenamiento.
Cuando enlaza un programa de servicio a un programa normal, el contenido del programa de servicio no se copia en el programa enlazado. Puesto que un programa de servicio se enlaza por referencia a un programa, se puede llamar a los procedimientos exportados del programa de servicio mediante las llamadas del procedimiento enlazado. La llamada inicial tiene una cierta can- tidad de actividades generales porque el enlace no se completa hasta que se llama al programa de servicio. Si cambia la interfaz con un programa de servicio, tal vez tenga que enlazar de nuevo todos los programas enlazados al programa de servicio original.
Sin embargo, si las modificaciones necesarias son compatibles ascendentemente, tal vez pueda reducir la cantidad de operaciones de enlace nuevas si ha creado el programa de servicio utilizando el lenguaje enlazador. El lenguaje enlazador le permite controlar las exportaciones de un programa de servicio.
Tabla 7. El procedimiento vuelve al llamador. Figura 42 Parte 2 de 2. Fuente del programa de servicio CvtToHex. Se necesita una para cada procedimiento cuyas expor- taciones desee hacer disponibles al llamador.
En este caso, se basa en el. Utiliza una serie de siete caracteres que se pasa dos veces a CVTTOHEX; una vez cuando el valor de la serie hexadecimal es 10 es decir, convertir 5 caracteres y la otra cuando su valor es 14, es decir, la longitud real. Si alguna de estas condiciones no se cumple, se emite un mensaje de error. Figura 45 Parte 2 de 2. Modificar el fuente del lenguaje enlazador para manejar la interfaz asociada con el nuevo procedimiento.
Modificar el fuente del lenguaje enlazador para manejar la interfaz asociada con el nuevo procedimiento, como se ha mencionado anteriormente. Este mandato se puede utilizar de forma interactiva, como parte de un trabajo de proceso por lotes o incluirlo en un programa CL. Consultar en maestro empleados 2.
Cambiar maestro empleados 3. El archivo se ha creado utilizando SDA. Puede entrar el mandato de forma interactiva o en un trabajo de proceso por lotes. Nota: Los mensajes de consulta no se emiten nunca para subprocedimientos. Las respuestas a estos men- sajes se pueden especificar de forma individual o general. Este nombre es exclusivo en el trabajo. Lo suprime el sistema cuando finaliza el trabajo.
Este mandato proporciona opciones. Se han asignado 10 bytes para PGM A, pero este programa modifica 11 bytes. Figura 52 Parte 2 de 5. Figura 52 Parte 4 de 5. Figura 52 Parte 5 de 5. Una vez se devuelve la llamada, los intentos de acceder al puntero pueden causar problemas. Una vez se haya perdido el puntero, no es posible liberar el almace- namiento al que apuntaba.
Figura 54 Parte 1 de 2. Figura 54 Parte 2 de 2. El procedimiento devuelve al llamador el elemento solicitado o ceros. Se devuelven ceros si el elemento solicitado no se ha almacenado en la matriz. Llamada a programas y procedimientos En ILE, es posible llamar a un programa o a un procedimiento.
Por este motivo, a menudo se hace referencia a una llamada de prototipos como una llamada de libre formato. Una "llamada a programa" ILE es una forma especial de llamada a procedimiento; es decir, se trata de una llamada al procedimiento de entrada del programa. Utilizando cualquier tipo de llamada a procedimiento, puede llamar a:. Una entrada de pila de llamadas es una llamada a un programa o procedimiento. Hay una pila de llamadas por cada trabajo. Llamadas a programas y procedimientos en la pila de llamadas.
Intente evitar situaciones que puedan conducir accidentalmente a llamadas recu- rrentes. El procedimiento B devuelve las llamadas al proce- dimiento C, quien a su vez llama al procedimiento A. Una vez el procedimiento C llama al procedimiento A, se ha realizado una llamada recurrente.
La secuencia de pila de llamadas se muestra en la Figura Pila de llamadas recurrentes que se ha de evitar. Las llamadas recurrentes no condicionales pueden conducir a una recurrencia infinita que puede conllevar el agotamiento de los recursos del sistema.
En general, un procedimiento recurrente adecuado comienza con una prueba para deter- minar si se ha obtenido el resultado deseado. Por otro lado, si es el llamador, entonces la mayor parte de las decisiones ya se han tomado en su nombre. Sin embargo, tenga en cuenta que el procedimiento llamado debe escribirse de modo que maneje menos datos de los necesarios. Tabla 8. La llamada de formato libre hace referencia a la sintaxis de llamada en la que se especifican los argumentos de la llamada en una sintaxis de formato libre, de modo muy similar a los argumentos para las funciones incorpo- radas.
Contrasta son la llamada de formato fijo, en la que los argumentos se colocan en especificaciones separadas. Existen dos modos de realizar una llamada de formato libre dependiendo de si se va a utilizar un valor de retorno. Para llamar a un programa o procedimiento de prototipos siga estos pasos generales: 1. El factor 1 debe estar en blanco. Utilice el nombre del procedimiento de modo que sea coherente con el tipo de datos del valor de retorno especificado.
Sin embargo, dicho requisito no existe para llamadas a procedimientos. Cuando a un procedimiento se le pasan descriptores operativos que no espera, dichos descriptores simplemente se ignoran.
Este ejemplo consta de un programa de servicio que convierte series de caracteres que se pasan a dicho pro- grama en su equivalente hexadecimal. El programa de servicio utiliza descriptores operativos para determinar la longitud de la serie de caracteres y la longitud a con- vertir. Puede que no tenga importancia alguna para el procedimiento llamado. El procedimiento llamado debe esperar esto, lo cual significa que se le debe haber indicado en el prototipo.
Esto puede suceder cuando un campo nuevo es obligatorio. Las llamadas antiguos pueden permanecer sin modificar. Para crear estos programas, siga estos pasos: 1. Primavera, Sta. Por ejemplo, considere esta sentencia de llamada. Resumiendo, es importante saber que pueden producirse efectos colaterales.
Las dos operaciones de llamada son muy parecidas en cuanto a la sintaxis y a su uso. Para llamar a un programa o procedimiento, siga estos pasos generales: 1. Identifique el objeto al que se va a llamar en la entrada del Factor 2. Opcionalmente codifique un indicador de error posiciones 73 y 74 o un indi- cador LR posiciones 75 y 76 o ambos.
Cuando un objeto llamado tiene un error, el indicador de error, si se ha especi- ficado, se activa. Las dos operaciones transfieren el control del objeto de llamada al objeto que se llama. Tabla En un proce- Valor transferido desde la Valor situado en la entrada del dimiento entrada del campo de resultado campo de resultado al volver.
Este nombre se puede especificar en el campo de resultado de una o de varias operaciones de llamada. Retorno desde un programa o procedimiento llamado Cuando un programa o procedimiento retorna, su entrada de pila de llamadas se elimina de la pila de llamadas. Si desea reinicializarlas, debe restaurarlas manualmente. La Figura 72 muestra un ejemplo de una "llamada" a una API enlazable. El factor 2 debe contener el literal o la constante con nombre 'GDDM' no una variable.
El depurador de fuente ILE El depurador de fuentes ILE se utiliza para detectar y eliminar errores en los objetos de programa y en los programas de servicio. En este punto puede realizar otras acciones, como visualizar o cambiar los valores de los campos.
Nota: Si el programa se ha optimizado, puede seguir visualizando campos, pero sus valores pueden no ser fiables. EVAL Le permite visualizar o cambiar el valor de una variable o visualizar el valor de las expresiones, registros, estructuras o matrices.
UP Mueve la ventana visualizada del fuente al principio de la vista el espacio entrado. DOWN Mueve la ventana visualizada del fuente hacia el final de la vista el espacio que haya especificado. Entre PF1 Ayuda 4. Ponga el cursor en Expresiones y pulse Intro para visualizar la ayuda para expresiones.
Si lo hace, las vistas de estos miembros fuente pueden no ser utilizables. Una vez creada, la vista del listado no depende de los miembros fuente en los que se basa. Tipo SET 3. El fuente de un programa OPM puede mostrarse si se cumplen las condiciones siguientes: 1.
Final Depurar. Vista fuente del procedimiento ILE C cproc. Puede ver la pantalla Seleccionar Vista en la Figura Pulse F15 Seleccionar vista. Puede ver la ventana Seleccionar Vista en la Figura Escriba un 1 junto a la vista del listado y pulse Intro.
Llame al programa. En este punto, puede seguir los pasos del programa o reanudar el proceso. Teclee opciones, pulse intro. Notas: 1. Si se violan estas restricciones, se emite un mensaje de error.
Final Pulse Intro para continuar. Al pulsar F10 Saltar o F22 Entrar en se realiza un solo paso. Si selecciona entrar en la sentencia de llamada, entonces cada sentencia de la sentencia de llamada se ejecuta como un solo paso. Nota: No puede saltar y entrar en subrutinas RPG. Sin embargo, puede saltar y entrar en subprocedimientos. Pulse F22 Entrar en. Al pulsar F22 se realiza un solo paso. Entrada en el conmutador de un subproceso.
La variable nombre-campo es el nombre del campo, de la estructura de datos o de la matriz que desea visualizar o evaluar. Figura 95 Parte 2 de 2. La variable nombre-campo es el nombre del campo que desea visualizar en formato hexadecimal.
Si la longitud del campo de menor de 16 bytes, el espacio restante se rellena con ceros hasta llegar a los 16 bytes. La variable nombre-campo es el nombre del campo que desea visualizar en formato de caracteres.
Varias operaciones MOVE mueven valores al sub- campo. Puesto que no hay subcampos definidos, no puede visualizar la estructura de datos. El nombre de campo puede ser el nombre de una matriz si la matriz tiene posibilidad de nulos. Cuando el depurador visualiza un campo con posibilidad de nulos, el contenido del campo se visualiza con independencia de si el campo se considera o no se considera nulo.
Por ejemplo, suponga que FLD1 tiene posibilidad de nulos y actualmente muestra un valor nulo. Por lo tanto, cualquier sentencia fuente que haga referencia a la tabla o. Nombre-campo es el nombre de la variable que desea cambiar y valor es el identificador, literal o constantes que desea asignar a la variable nombre-campo. Figura 98 Parte 2 de 2. Si el nombre no estaba definido anteriormente, se muestra un mensaje de error. Figura Parte 4 de 4.
Los mane- jadores de excepciones ILE le permiten manejar excepciones en aplicaciones de lenguaje mixto de una manera coherente. El proceso de manejo de excepciones comienza de nuevo para esta entrada de la pila de llamadas. Pasada 1 Pila de llamadas. Como ejemplo de las excepciones de archivo puede citarse un tipo de registro no definido o un error de dispositivo.
Puede: 1. El indicador se activa b. Tanto los pro- cedimientos principales como los subprocedimientos pueden acceder a ellas. Existen ciertas diferencias de comportamiento para algunos errores determi- nados. Manejador de indicadores de error 2. Manejador de condiciones ILE 4. Manejador de subrutina de errores de programa 5.
Excepciones anidadas Las excepciones se pueden anidar. Ejemplo de un mensaje de escape no manejado El siguiente ejemplo describe lo que sucede cuando se emite un mensaje de escape y el procedimiento que lo ha emitido no puede manejarlo. Pila de llamadas Lista de manejadores de excepciones activos. Entonces sucede lo siguiente: 1. Por lo tanto, se genera MCH En la Figura se muestra este ejemplo y los eventos que se producen. El manejo de excepciones puede interrumpir este proceso normal y, por lo tanto, es posible que las variables de programa contenidas en los registros no se devuelvan a sus ubicaciones de almace- namiento asignadas.
Indicadores de error 2. El error se trata como cualquier otro error de programa. Por lo tanto, la llamada a la subrutina de error refleja que se ha vuelto al proceso del programa.
El error se trata como cual- quier otro error de programa. Codifique el resto de la subrutina de error de archivo. Si se trata de un error de bloqueo de registro, el registro se graba en un archivo de anotaciones. Y lo peor es que, en muchos sitios de trabajos tratan de no utilizar estos conceptos sino hacerlos a la vieja manera. Es complicado "romper" con determinados esquemas.
Pero es necesario adaptarse y modernizarse Logicamente el procedimiento llamado tiene que estar preparado para no recibir algunos de esos datos. Un ejemplo de llamada es simple. Excelente articulo, gracias Fernando, soy de la vieja escuela RPG basado hojas, este articulo me resulta muy util para enfocarme en aprender ILE y no quedarme en el pasado.
Hector, desde Santiago, Chile. Para hacer el crtsrvpgm no es necesario crear un directorio de enlace. Imagina los modulos relacionados con clientes en un directorio de enlace y los modulos relacionado con proveedores en otro directorio. Estoy perdido. Un saludo y gracias. Lo realmente lo importante es la signatura y esta puede cambiar o no dependiendo del cambio que hayas hecho en el fuente. Ya sabes, si cambia la signature y no tiene las versiones anteriores , el programa que lo utilice con la signature anterior, va a fallar.
Espero haberte ayudado Un saludo. Muchas gracias Hola Creo que desde SO no existe ninguna funcionalidad para extraer el fuente a partir de objetivo compilado.
Lo siento. Se basa en cuatro conceptos:. Por ejemplo, calcular una determina tasa asociada a un importe. PCalculaTasa B. DCalculaTasa PI 15 4. D Importe 15 2 Const. D Pais 3 Const. Se utiliza para recopilar una o varias funcionalidades en un fuente. Un modulo puede "llamar" a otro modulo.
0コメント