La sentencia EGL call transfiere el control a otro programa y, opcionalmente, pasa una serie de valores. El control vuelve al llamador cuando el programa llamado finaliza; si el programa llamado cambia los datos que se han pasado por medio de una variable, cambia también el área de almacenamiento disponible para el llamador.
El nombre especificado no puede ser una palabra reservada. Si el llamador debe llamar a un programa no EGL que tiene el mismo nombre que una palabra reservada EGL, utilice un nombre de programa diferente en la sentencia call y, a continuación, utilice un componente de opciones de enlace, elemento callLink, para especificar un alias, que es el nombre utilizado durante la ejecución.
Si el programa llamado es un programa Java, el nombre del programa llamado será sensible a las mayúsculas y minúsculas; calledProgram es distinto a CALLEDPROGRAM. En caso contrario, la determinación de si el nombre de programa es sensible a las mayúsculas y minúsculas depende del sistema en el que resida el programa llamado: sensible a las mayúsculas y minúsculas para UNIX, no sensible a las mayúsculas y minúsculas en otros casos.
En el depurador EGL, el nombre del programa llamado no es sensible a las mayúsculas y minúsculas.
Es aconsejable que un programa no generado por EGL se identifique como definido externamente no en la sentencia call, sino en el componente de opciones de enlace utilizado durante la generación. (La propiedad relacionada se encuentra en el componente de opciones de enlace, elemento callLink, y también se denomina externallyDefined).
El indicador está soportado (durante el desarrollo) si la propiedad de programa VAGCompatibility está seleccionada o (durante la generación) si la opción del descriptor de construcción VAGCompatibility está establecida en yes.
Es aconsejable indicar la preferencia de la renovación de pantalla no en la sentencia call, sino en el componente de opciones de enlace utilizado durante la generación. (La propiedad relacionada se encuentra en el componente de opciones de enlace, elemento callLink, y se denomina refreshScreen).
A continuación se ofrece un ejemplo:
if (userRequest == "C") try call programA; onException myErrorHandler(12); end end
El número, tipo y orden de los argumentos de una sentencia call debe corresponder al número, tipo y orden de los valores esperados por el programa llamado.
Es muy aconsejable que el número de bytes pasados en cada argumento sea el mismo que el número de bytes esperado. Si el programa llamado está en CICS y las longitudes no son iguales, se produce una finalización anormal del entorno de ejecución. En el caso de un programa Java generado por EGL, una Una discrepancia de longitudes sólo provoca un error si la corrección de la discrepancia en tiempo de ejecución provoca una discrepancia de tipos.
En el caso de Java, se produce un Un error si se añaden blancos a un elemento de datos de tipo NUM, por ejemplo, pero no si se añaden blancos a un elemento de datos de tipo CHAR.
Las llamadas recursivas están soportadas en todos los sistemas destino.
El comportamiento de la llamada depende parcialmente del sistema destino, como se muestra en la tabla siguiente.
Sistema destino | Detalles específicos de plataforma |
---|---|
AIX | Las llamadas recursivas están soportadas. |
CICS para z/OS | Las llamadas recursivas no están soportadas. El código de retorno que el programa llamado coloca en el registro 15 no está disponible para el llamador. |
iSeries | Las llamadas recursivas están soportadas. |
Linux | Las llamadas recursivas están soportadas. |
z/OS por lotes | Las llamadas recursivas no están soportadas. |
Windows 2000, Windows NT | Las llamadas recursivas están soportadas. |
z/OS UNIX System Services | Las llamadas recursivas están soportadas. |
Sistema destino | Detalles específicos de plataforma |
---|---|
AIX | Las llamadas recursivas están soportadas. |
iSeries COBOL | Las llamadas recursivas no están soportadas. |
iSeries Java | Las llamadas recursivas están soportadas. |
Linux | Las llamadas recursivas están soportadas. |
z/OS por lotes | Las llamadas recursivas no están soportadas. |
Windows 2000, Windows NT | Las llamadas recursivas están soportadas. |
z/OS UNIX System Services | Las llamadas recursivas están soportadas. |
La llamada resulta afectada por el componente de opciones de enlace, si existe, utilizado durante la generación. (Puede incluir un componente de opciones de enlace estableciendo la opción linkage del descriptor de construcción).
Para obtener detalles acerca de la opción linkage, consulte el apartado Componente de opciones de enlace.
Conceptos relacionados
Componente de opciones de enlace
Diagrama de sintaxis
Consulta relacionada
Sentencias EGL
Manejo de excepciones
linkage
Tipos primitivos