La sentencia EGL transfer transfiere el control de un programa principal a otro, finaliza el programa que realiza la transferencia y, opcionalmente, pasa un registro cuyos datos se aceptan al registro de entrada del programa receptor. No puede utilizarse una sentencia transfer en un programa llamado.
El programa puede transferir el control mediante una sentencia del formato
transferir a transacción o mediante una sentencia en el formato transferir a programa:
- Una transferencia a transacción actúa del siguiente modo:
- En un programa principal ejecutado en CICS para z/OS, esta sentencia compromete los recursos recuperables, cierra los archivos, cierra los cursores e inicia una transacción nueva.
- En un programa ejecutado como un programa principal por lotes
z/OS o como un
como programa principal por lotes o de texto
Java, el
comportamiento depende del valor de la opción synchOnTrxTransfer del
descriptor de construcción:
- Si el valor de synchOnTrxTransfer es YES, la sentencia transfer compromete los recursos recuperables, cierra archivos, cierra cursores e inicia un programa en la misma unidad de ejecución.
- Si el valor de synchOnTrxTransfer es NO (valor por omisión), la sentencia transfer también inicia un programa en la misma unidad de ejecución, pero no cierra ni compromete recursos, que están disponibles para el programa invocado.
- En un programa Web o manejador de páginas, no puede
realizarse una transferencia a transacción; en lugar de ello, utilice la sentencia
forward.
- Una sentencia de tipo transferir a programa no compromete ni retrotrae los recursos recuperables, pero cierra archivos, cierra cursores e inicia un programa en la misma unidad de ejecución.
El componente de opciones de enlace, elemento transferLink no
tiene ningún efecto cuando se transfiere el control desde código
Java a
código
Java; de
lo contrario, es significativo.
Si transfiere código de control a un código que
no se ha escrito con EGL o
VisualAge
Generator, es aconsejable establecer el elemento
transferLink del
componente de opciones de enlace del siguiente modo:
- Si transfiere a un programa, establezca la propiedad linkType
en externallyDefined
- Si transfiere a una transacción, establezca la propiedad externallyDefined
en yes
Si transfiere código de control a un código que
no se ha escrito con EGL o
VisualAge
Generator, es aconsejable establecer el elemento transferLink del
componente de opciones de enlace.
Establezca la propiedad linkType en externallyDefined.
Si la ejecución se realiza en modalidad de compatibilidad con
VisualAge
Generator, puede especificar la opción externallyDefined en la sentencia
transfer, como ocurre en los programas migrados desde
VisualAge
Generator; sin embargo, no es aconsejable establecer el valor equivalente en el componente de
opciones de enlace. Para obtener detalles acerca de la modalidad de compatibilidad de
VisualAge
Generator, consulte el apartado Compatibilidad con
VisualAge
Generator.
- program nombreDestino (valor por omisión)
- El programa que recibe el control. Si está generando para COBOL y
especifica un nombre de programa con más de 8 caracteres, el nombre de programa se trunca al
llegar a los 8 caracteres con caracteres de sustitución (si es necesario), como se describe
en el apartado Alias de nombres.
- transaction nombreDestino
- La transacción o el programa que recibe el control, como se ha descrito anteriormente.
- sysVar.transferName
- Función de sistema que contiene un nombre destino que puede establecerse durante la ejecución.
Para obtener detalles, consulte la función sysVar.transferName.
- passing nombreRegistro
- Un registro que se recibe como registro de entrada en el programa destino. El
registro pasado puede ser de cualquier tipo, pero la longitud y los tipos primitivos
deben ser compatibles con el registro que recibe los datos. El registro de entrada en el
programa destino debe ser de tipo basicRecord.
- externallyDefined
- No recomendado para nuevos desarrollos, como se ha descrito anteriormente.