Los programas IMS habituales utilizan una estructura controlada por mensajes como la de la figura siguiente:
En este ejemplo, el controlador IMS inicia el programa de transacción cuando la cola de mensajes asociada con el programa contiene un mensaje. Otro programa puede haber colocado el mensaje en la cola, o el controlador puede haber leído la entrada del terminal. El programa toma el menaje de la cola, realiza las operaciones de E/S de base de datos necesarias y añade mensajes a las colas de salida para continuar el proceso. La cola de salida puede representar el terminal de entrada, otro terminal o impresora o una cola asociada con otra transacción. A continuación, el programa realiza un bucle de retorno hacia el principio y procesa el próximo mensaje de su cola de entrada.
Los programas PL/I o COBOL habituales deben continuar el ciclo hasta que la cola de mensajes está vacía, ya que varios terminales ejecutan la misma transacción simultáneamente. Sin embargo, los programas EGL repiten en bucle automáticamente para leer el próximo mensaje de la cola. No es necesario definir directamente funciones de control de colas de mensajes. Puede definir programas para IMS igual que define programas para CICS, que utilizan una estructura lógica síncrona en lugar de una estructura controlada por mensajes. Con el modelo síncrono, sólo es necesario tener en cuenta el proceso que debe producirse para un solo usuario de un único terminal. Esto simplifica tanto el diseño como la definición del programa.
IMS requiere que el usuario comprometa todos los cambios de base de datos y libere todos los bloqueos y posiciones de base de datos cuando espera la entrada del usuario. En EGL, esto implica la creación de un programa segmentado (o un programa de un solo segmento). Al definir el programa, recuerde que EGL realiza un compromiso en cada sentencia de E/S converse. Debe conocer el funcionamiento de la segmentación para poder desarrollar programas para IMS; consulte la sección Segmentación en programas de textUI.
Conceptos relacionados
Soporte de bases de datos DL/I
Segmentación en programas de textUI
Consulta relacionada
add
converse
get
Tareas relacionadas