Puede llamar a un programa
IMS remotamente, desde
código
Java
generado por EGL. El programa llamado puede generarse a partir de EGL o
VisualAge
Generator o puede escribirse en otro lenguaje.
El programa al que se accede en
IMS no es el mismo
programa llamado, sino un programa capturador proporcionado por Enterprise Developer Server para
z/OS. Tal como se
muestra más tarde, el programador del sistema debe reenlazar ese programa capturador. El efecto de
esa tarea es asignar un alias para cada PSB de tiempo de ejecución asociado con cualesquiera
transacciones invocadas remotamente por código
Java
generado por EGL.
El proceso de tiempo de ejecución es el siguiente:
-
El tiempo de ejecución EGL toma el nombre del código de transacción
IMS del componente de
opciones de enlace utilizado en tiempo de generación del programa de llamada.
- EGL utiliza los conectores de
IMS Connect para
someter este código de transacción, así como el nombre y los parámetros del programa llamado a la
cola de mensajes de
IMS.
- El programa capturador lee el nombre del programa llamado y los parámetros de esta cola de
mensajes y utiliza una llamada de
z/OS para invocar el
programa solicitado
- Al volver a ganar el control, el programa capturador somete los datos devueltos a la cola
IMS
- IMS Connect lee
los datos de la cola y devuelve los datos al programa llamante
A
continuación se ofrece un ejemplo:
- En IMS, el
programador de sistemas lleva a cabo las tareas siguientes:
- Crea una definición de sistema que asocia una transacción (por ejemplo, TRAN1) con un PSB (por
ejemplo, PSB1).
- Enlaza el programa capturador ELAISVN para asignarle el alias PSB1. El enlace puede incluir
hasta 64 alias de esta especie y el nombre del módulo puede ser cualquiera. Si desea más de 64
alias, cree un segundo módulo de carga.
- Puede poner una sentencia en el programa
Java para
llamar a PGMX y para proporcionar parámetros para ese programa.
- En el descriptor de construcción utilizado para generar el programa, puede establecer la opción
del descriptor de construcción linkage en un componente de opciones de enlace llamado
pgmLinkage
- En ese componente de opciones de enlace para el programa PGMX, puede establecer el elemento
callLink, propiedad serverID, en el código de
transacción adecuado (en este casos, TRAN1.)
- En tiempo de ejecución,
IMS Connect envía el
código de transacción (TRAN1), nombre de programa (PGMX) y los parámetros a la cola de mensajes
IMS.
- Puesto que se ha invocado TRAN1,
IMS planifica PSB1 que
inicia el programa capturador.
- El programa capturador lee la cola de mensajes para el nombre del programa (PGMX) y los
parámetros y después llama a PGMX.
- Cuando PGMX finaliza, el control vuelve al programa capturador, que sitúa los datos devueltos
en la cola de mensajes de
IMS.
- IMS Connect
devuelve los datos al código
Java.
La transacción TRAN1 debe definirse en
IMS como un programa
de proceso de mensajes. Utilice la definición de sistema
IMS siguiente como
modelo:
APPLCTN PGMTYPE=TP,PSB=PSB1
TRANSACT CODE=TRAN1,MODE=SNGL,EDIT=ULC
Los datos se plegarán en caracteres en mayúscula si se omite la sentencia EDIT=ULC en la
definición de transacción.
A continuación se proporciona un ejemplo del JCL que el programador del sistema puede utilizar
para reenlazar el ELAISVN del programa capturador, en este caso para asignar los alias PSB1 y PSB2:
//L EXEC ELARLINK
//L.SYSLMOD DD DISP=SHR,DSN=nombre-biblioteca-carga
//L.SYSIN DD *
INCLUDE SELALMD(ELAISVN)
ENTRY ELAISVN
ALIAS PSB1
ALIAS PSB2
NAME nombre-módulo-carga(R)
/*
- nombre-biblioteca-carga
- Nombre de la biblioteca de carga
- nombre-módulo-carga
- Nombre del módulo de carga; normalmente ELAISVN
IMS necesita que el
nombre de un PSB de tiempo de ejecución sea idéntico al nombre (o, en este caso, el alias) del
primer programa de una transacción. Si desea que se llame al programa llamado, no solo desde el
código remoto, sino que en otra transacción de
IMS, debe hacer lo
siguiente:
- Cree un segundo PSB denominado para el primer programa de la transacción
- Estructure el PSB igual que el PSB planificado para la invocación remota
Consulta relacionada
Elemento callLink