Estos fragmentos de programas EGL muestran la interacción con terminales, colas de mensajes y archivos serie IMS.
//definir el PSB Record addToQueue type PSBRecord { defaultPSBName="MYTRXCD1" } // tres PCB necesarios para CBLTDLI en IMS iopcb IO_PCBRecord { @PCB { pcbType = TP } }; elaalt ALT_PCBRecord { @PCB { pcbType = TP } }; elaexp ALT_PCBRecord { @PCB { pcbType = TP } }; // otros PCB de base de datos ... end Record myTransactionPart type serialRecord { fileName=”MYMSGQUE” } ... end program addtrans type textUIProgram { alias = “MYTRXCD1”, // IMS requiere que el pgm coincida con el nombre PSB segmented = yes, @DLI { psb = “mypsb” }} use MYFORMS; // MYFORMS es un formGroup que contiene FORM1 // declarar variables myTransaction myTransactionPart; // registro serie para cola de mensajes mypsb addToQueue; // psb function main() converse FORM1; // realizar el proceso necesario move FORM1 to myTransaction byName; add myTransaction; end end
<ResourceAssociations name="RESOURCEASSOC601_REORDER"> <association fileName="MYMSGQUE"> <imsvs> <smsgq systemName=”NEXTTRX" pcbName="elaalt"/> </imsvs> </association> <association fileName="MYINQUE"> <imsvs> <smsgq systemName=”NEXTTRX" pcbName="iopcb"/> </imsvs> </association> </ResourceAssociations>
Dado que addtrans es un programa textUI, EGL hará que se comporte adecuadamente en un entorno IMS y lea la cola de mensajes hasta esté vacía. Esto significa que EGL creará un bucle en el programa a fin de que, una vez que éste haya terminado de colocar la transacción en el archivo serie para el proceso por lotes posterior, volverá a la sentencia converse para solicitar otra transacción desde el terminal.
También puede crear un programa para procesar los mensajes que el programa addtrans escribe en la cola de mensajes. Debe ser un programa básico que obtenga registros de un archivo serie y asocie el archivo serie con el PCN de E/S.
//definir el PSB Record getFromQueue type PSBRecord { defaultPSBName="MYTRXCD2" } // tres PCB necesarios para CBLTDLI en IMS iopcb IO_PCBRecord { @PCB { pcbType = TP } }; elaalt ALT_PCBRecord { @PCB { pcbType = TP } }; elaexp ALT_PCBRecord { @PCB { pcbType = TP } }; // otros PCB de base de datos end program gettrans type basicProgram { alias = “MYTRXCD2” @DLI { psb = “mypsb” }} // declarar variables myTransaction myTransactionPart // registro serie para cola de mensajes {fileName="MYINQUE"}; mypsb getFromQueue; // psb function main() while (myTransaction not endOfFile) get next myTransaction; // realizar el proceso necesario end end end
Al generar el programa para los entornos IMS/VS o BMP IMS, también debe especificar un componente de asociación de recursos que asocie el archivo serie con una cola de mensajes y que suministre el nombre de la transacción a la que debe enviarse, así como el nombre del PCB que debe utilizarse. En este caso, el PCB de E/S se utiliza como entrada, como se muestra en el componente ResourceAssociations en la sección anterior.
Conceptos relacionados
Soporte de bases de datos DL/I
Consulta relacionada
add
audit()
close
converse
get next
Tareas relacionadas
Interactuar con terminales en IMS
Utilizar archivos serie y de impresión en IMS