CICS - Guía rápida

CICS es un sistema DB / DC que se utiliza en aplicaciones en línea. CICS se desarrolló porque el sistema operativo por lotes solo puede ejecutar programas por lotes. Los programas CICS se pueden escribir en COBOL, C, C ++, Java, etc. En estos días, los usuarios quieren información en segundos y en tiempo real. Para brindar un servicio tan rápido, necesitamos un sistema que pueda procesar información en línea. CICS permite a los usuarios comunicarse con el sistema de fondo para obtener la información deseada. Los ejemplos de programas en línea incluyen el sistema bancario en línea, la reserva de vuelos, etc. La siguiente imagen muestra los componentes de CICS y cómo están interrelacionados:

Funciones de CICS

Las principales funciones realizadas por CICS en una aplicación son las siguientes:

  • CICS gestiona solicitudes de usuarios concurrentes en una aplicación.

  • Aunque varios usuarios están trabajando en el sistema CICS, le da la sensación al usuario de que es un solo usuario.

  • CICS da acceso a archivos de datos para leerlos o actualizarlos en una aplicación.

Características de CICS

Las características de CICS son las siguientes:

  • CICS es un sistema operativo en sí mismo, ya que administra su propio almacenamiento de procesador, tiene su propio administrador de tareas que maneja la ejecución de múltiples programas y proporciona sus propias funciones de administración de archivos.

  • CICS proporciona un entorno en línea en un sistema operativo por lotes. Los trabajos enviados se ejecutan inmediatamente.

  • CICS es una interfaz de procesamiento de transacciones generalizada.

  • Es posible tener dos o más regiones CICS al mismo tiempo, ya que CICS se ejecuta como un trabajo por lotes en el sistema operativo en el back-end.

El propio CICS actúa como un sistema operativo. Su trabajo es proporcionar un entorno para la ejecución en línea de programas de aplicación. CICS se ejecuta en una región, partición o espacio de direcciones. CICS maneja la programación de los programas que se ejecutan en él. CICS se ejecuta como un trabajo por lotes y podemos verlo en el spool emitiendo el comando PREFIX CICS *. Hay cinco servicios principales proporcionados por CICS. Todos estos servicios juntos realizan una tarea.

Entorno CICS

Los siguientes son los servicios que discutiremos en detalle paso a paso:

  • Servicios del sistema
  • Servicios de comunicación de datos
  • Servicios de manejo de datos
  • Servicios de programación de aplicaciones
  • Servicios de monitorización
  • Servicios del sistema

CICS mantiene funciones de control para administrar la asignación o desasignación de recursos dentro del sistema, que son las siguientes:

  • Task Control- El control de tareas proporciona funciones de programación de tareas y multitarea. Se ocupa del estado de todas las tareas de CICS. Task Control asigna el tiempo del procesador entre las tareas CICS simultáneas. Se llamamultitasking. CICS intenta priorizar el tiempo de respuesta a la tarea más importante.

  • Program Control- Program Control gestiona la carga y liberación de programas de aplicación. Tan pronto como comienza una tarea, es necesario asociar la tarea con el programa de aplicación apropiado. Aunque es posible que muchas tareas necesiten utilizar el mismo programa de aplicación, CICS carga sólo una copia del código en la memoria. Cada tarea se abre paso a través de este código de forma independiente, por lo que muchos usuarios pueden ejecutar transacciones que utilizan simultáneamente la misma copia física de un programa de aplicación.

  • Storage Control- Storage Control gestiona la adquisición y liberación del almacenamiento principal. El control de almacenamiento adquiere, controla y libera almacenamiento dinámico. El almacenamiento dinámico se utiliza para áreas de entrada / salida, programas, etc.

  • Interval Control - Interval Control ofrece servicios de temporizador.

Servicios de comunicación de datos

Los servicios de comunicación de datos interactúan con los métodos de acceso a las telecomunicaciones, como BTAM, VTAM y TCAM, para manejar las solicitudes de comunicación de datos de los programas de aplicación.

  • CICS libera a los programas de aplicación de la carga de lidiar con problemas de hardware de terminal mediante el uso de Basic Mapping Support (BMS).

  • CICS proporciona operación de múltiples regiones (MRO) a través de la cual se puede comunicar más de una región CICS en el mismo sistema.

  • CICS proporciona comunicación entre sistemas (ISC) a través de la cual una región CICS en un sistema puede comunicarse con la región CICS en otro sistema.

Servicios de manejo de datos

Interfaz de servicios de manejo de datos con métodos de acceso a datos como BDAM, VSAM, etc.

  • CICS facilita el servicio de solicitudes de manejo de datos de programas de aplicación. CICS proporciona a los programadores de aplicaciones un conjunto de mandatos para gestionar el acceso a bases de datos y conjuntos de datos y operaciones relacionadas.

  • Los servicios de manejo de datos interactúan con métodos de acceso a bases de datos como IMS / DB, DB2, etc. y facilitan el servicio de solicitudes de bases de datos desde programas de aplicación.

  • CICS facilita la gestión de la integridad de los datos mediante el control de las actualizaciones de registros simultáneas, la protección de los datos como ABEND de tareas y la protección de los datos en caso de fallas del sistema.

Servicios de programación de aplicaciones

Interfaz de servicios de programación de aplicaciones con programas de aplicación. Los servicios de programación de aplicaciones de CICS proporcionan características tales como traducción de nivel de comando, CEDF (la función de depuración) y CECI (la función de interpretación de comandos). Discutiremos más en detalle en los próximos módulos.

Servicios de monitorización

Los servicios de supervisión supervisan varios eventos dentro del espacio de direcciones CICS. Proporciona una serie de información estadística que se puede utilizar para ajustar el sistema.

Debemos tener conocimiento de los términos básicos que se utilizan en CICS para comprender mejor cómo funciona. Los programas de aplicación utilizan CICS para la comunicación con subsistemas y terminales remotos y locales.

Terminal IBM 3270

El sistema de pantalla de información 3270 es una familia de terminales de pantalla e impresora. Se estaban utilizando terminales 3270 para conectarse al mainframe a través de controladores IBM. Hoy en día, el software de emulación 3270 está disponible, lo que significa que incluso las PC normales se pueden utilizar como terminales 3270. Los terminales 3270 son terminales tontos y no realizan ningún procesamiento por sí mismos. Todo el procesamiento debe ser realizado por el programa de aplicación. Los terminales de IBM constan de los siguientes componentes:

Monitor CRT

El monitor CRT muestra los campos de entrada o salida del programa de aplicación. A continuación se muestra una captura de pantalla de un modelo 3278 de monitor CRT. Tiene las siguientes características:

  • Es capaz de mostrar 1920 caracteres.

  • Cada una de estas posiciones de 1920 caracteres es direccionable individualmente.

  • Un programa de aplicación COBOL puede enviar datos a todas las posiciones en la pantalla.

  • Las características de visualización como intensidad, protegido, no protegido del campo se pueden configurar utilizando BMS que discutiremos en detalle en los próximos módulos.

Teclado

Las teclas del teclado de IBM se dividen en las siguientes dos categorías:

  • Non-AID Keys- Todas las demás teclas para alfabetos, números, puntuación, etc. son teclas sin ayuda. Cuando el usuario escribe texto o números utilizando claves que no son de ayuda, CICS ni siquiera sabrá si el usuario está escribiendo algo o no.

  • AID Keys- Las claves AID se conocen como claves de identificación de atención. CICS solo puede detectar claves AID. Después de escribir toda la entrada, solo cuando el usuario presiona una de las teclas AID, CICS toma el control. Teclas AID: ENTER, PF1 a PF24, PA1 a PA3, CLEAR. Las claves de AID se dividen además en dos categorías:

    • PF Keys- Las teclas PF se conocen como teclas de función. Las claves PF permiten la transferencia de datos desde el terminal a CICS. Las teclas PF son ENTER y PF1 a PF24.

    • PA Keys- Las teclas PA se conocen como teclas de acceso al programa. Las claves PA no permiten la transferencia de datos entre el terminal y CICS. Las teclas PA son PA1 a PA3 y CLEAR.

    Transacción

    Un programa CICS se invoca mediante una transacción. Una transacción CICS es una colección de programas relacionados lógicamente en una aplicación. Toda la aplicación podría dividirse lógicamente en varias transacciones.

    • Los identificadores de transacciones que tienen de 1 a 4 caracteres se utilizan para identificar las transacciones que los usuarios quieren realizar.

    • Un programador vincula un programa al identificador de transacción que se utiliza para invocar todos los programas de aplicación para esa transacción en particular.

    Tarea

    Una tarea es una unidad de trabajo que es específica de un usuario.

    • Los usuarios invocan una aplicación utilizando uno de los identificadores de transacción. CICS busca el identificador de transacción para averiguar qué programa invocar primero para realizar el trabajo solicitado. Crea una tarea para hacer el trabajo y transfiere el control al programa mencionado.

    • Una transacción se puede completar mediante varias tareas.

    • Una tarea puede recibir datos y enviar datos al terminal que la inició. Puede leer y escribir archivos y también puede iniciar otras tareas.

    Tarea frente a transacción

    La diferencia entre una transacción y una tarea es que varios usuarios pueden invocar una transacción, pero cada usuario inicia su propia tarea.

    LUW

    LUW son las siglas de Logical Unit of Work. LUW establece que un trabajo debe hacerse completamente o no hacerlo. Una tarea puede contener varias unidades lógicas de trabajo en CICS. Discutiremos más sobre esto en los próximos módulos.

    Solicitud

    Una aplicación es una serie de programas agrupados lógicamente para formar varias transacciones que se utilizan para completar una tarea específica para el usuario final.

    Los cinco componentes del sistema CICS descritos anteriormente son una agrupación conveniente de programas del sistema CICS, cada uno de los cuales realiza sus propias funciones especializadas. El núcleo de CICS conocido como CICS Nucleus, que consta de programas de control y tablas de control de CICS suministrados por IBM.

    Programas de control

    El núcleo CICS es construido por los programas de control y las tablas de control correspondientes. Proporciona ventajas únicas. Hace que el sistema CICS sea muy flexible y, por tanto, fácil de mantener. A continuación se muestran los programas de control importantes de CICS:

    TCP

    TCP se conoce como Programa de control de terminales.

    • TCP se utiliza para recibir mensajes del terminal.

    • Mantiene los requisitos de comunicación de hardware.

    • Solicita a CICS que inicie las tareas.

    KCP

    KCP se conoce como Programa de control de tareas.

    • KCP se utiliza para controlar simultáneamente la ejecución de tareas y sus propiedades relacionadas.

    • Maneja todos los problemas relacionados con la multitarea.

    PCP

    PCP se conoce como Programa de control de programas.

    • PCP se utiliza para localizar y cargar programas para su ejecución.

    • Transfiere el control entre programas y al final, devuelve el control al CICS.

    FCP

    FCP se conoce como programa de control de archivos.

    • FCP se utiliza para proporcionar a los programas de aplicación servicios como leer, insertar, actualizar o eliminar registros en un archivo.

    • Mantiene un control exclusivo sobre los registros para mantener la integridad de los datos durante las actualizaciones de registros.

    SCP

    SCP se conoce como Programa de control de almacenamiento. Se utiliza para controlar la asignación y desasignación de almacenamiento dentro de una región CICS.

    Tablas de control

    CICS consta de tablas y programas de control CICS suministrados por IBM. Estas tablas deben actualizarse de acuerdo con la información de la aplicación para ejecutar correctamente los programas de aplicación CICS. A continuación se muestran las tablas de control importantes:

    TCT

    TCT se conoce como tabla de control de terminales.

    • Cuando iniciamos sesión en un terminal CICS, se realiza una entrada en la tabla TCT.

    • TCT contiene los ID de terminal que están conectados a la región CICS actual.

    • El programa de control del terminal junto con la tabla de control del terminal reconocen los datos entrantes del terminal.

    PCT

    PCT se conoce como tabla de control de programas.

    • Contiene los ID de transacción (TRANSID) y los nombres de programa o ID de programa correspondientes.

    • TRANSID es único en la tabla PCT.

    PPT

    PPT se conoce como tabla de programa de procesamiento. PPT contiene el nombre del programa o el nombre del conjunto de mapas, el contador de uso de tareas, el idioma, el tamaño, la dirección de almacenamiento principal, la dirección de la biblioteca de carga, etc.

    • El nombre del programa o conjunto de mapas es único en una tabla PPT.

    • CICS recibe la transacción y el PCT asigna un nombre de programa correspondiente a la transacción. Comprueba si el programa está cargado o no. Si está cargado, el contador de uso de la tarea aumenta en 1. Si el programa no está cargado, primero se carga el programa y el contador de uso de la tarea se establece en 1. Obtiene la dirección de la biblioteca de carga de la tabla PPT.

    FCT

    FCT se conoce como tabla de control de archivos.

    • Contiene nombres de archivo, tipo de archivo, longitud de registro, etc.

    • Todos los archivos utilizados en un programa CICS deben declararse en FCT y CICS los abre y cierra.

    Transacción

    Cuando se ingresa un identificador de transacción TP02 en el terminal CICS, primero verifica si hay un programa asociado con este identificador de transacción en la tabla PCT. Si encuentra uno, busca en la tabla PPT la ubicación del Programa para ejecutarlo.

    Si el programa ya está disponible en la memoria, comienza a ejecutar ese programa en particular; si no, carga el programa en la memoria desde el almacenamiento secundario y luego comienza a ejecutarlo.

    Ciclo de vida de la transacción

    El ciclo de vida de la transacción tiene los siguientes pasos:

    Paso 1

    El operador de la terminal inicia la transacción escribiendo una identificación de transacción de 1 a 4 caracteres y presionando la tecla ENTER.

    Paso 2

    El TCP comprueba periódicamente la entrada de todos los terminales. Cuando se recibe un mensaje, hace lo siguiente:

    • Indica al SCP que cree un TIOA.

    • Coloca el mensaje en el TIOA.

    • Pasa el control al KCP.

    Paso 3

    El KCP toma el control del TCP y hace lo siguiente:

    • Valida el ID de transacción y la seguridad.

    • Indica al SCP que cree un área de control de tareas.

    • Asigna prioridad a la tarea según la prioridad del terminal (establecida en TCT), la prioridad del operador (establecida en SNT) y la prioridad de transacción (establecida en PCT).

    • Agrega la tarea a la cola de programas en espera.

    • Despacha programas de espera en orden de prioridad.

    • Pasa el control al PCP.

    Etapa 4

    El PCP toma el control del KCP y hace lo siguiente:

    • Localiza el programa y lo carga, si es necesario.

    • Transfiere el control al programa de aplicación.

    Paso 5

    El programa de aplicación toma el control del PCP y hace lo siguiente:

    • Solicita al TCP que coloque el mensaje en el área de ALMACENAMIENTO DE TRABAJO del programa.

    • Solicita al FCP que recupere registros de los archivos.

    Paso 6

    El FCP toma el control del programa de aplicación y hace lo siguiente:

    • Solicita al SCP un área de trabajo de Archivo.

    • Informa al KCP que esta tarea puede esperar hasta que se complete la E / S.

    Paso 7

    El KCP hace lo siguiente:

    • Envía la siguiente tarea en la cola.

    • Vuelve a enviar la tarea anterior cuando se completa la E / S.

    • Transfiere el control al FCP.

    Paso 8

    El FCP devuelve el control al programa de aplicación.

    Paso 9

    El programa de aplicación hace lo siguiente:

    • Procesa los datos del archivo.

    • Solicita a TCP que envíe un mensaje de E / S.

    • Devuelve el control al PCP.

    Paso 10

    El PCP devuelve el control al KCP solicitándole que finalice la tarea.

    Paso 11

    El KCP instruye al SCP para liberar todo el almacenamiento asignado a la tarea (excepto TIOA).

    Paso 12

    El TCP hace lo siguiente:

    • Envía la salida al terminal.

    • Solicita al SCP que libere la TIOA.

    Las transacciones CICS se utilizan para realizar varias operaciones en la región CICS. Discutiremos en detalle las importantes transacciones CICS proporcionadas por IBM.

    CESN

    CESN se conoce como CICS Execute Sign On.

    • CESN se utiliza para iniciar sesión en la región CICS.

    • Necesitamos proporcionar el ID de usuario y la contraseña proporcionados por el administrador de CICS para iniciar sesión en CICS. La siguiente captura de pantalla muestra cómo se ve la pantalla de inicio de sesión:

    CEDA

    CEDA se conoce como CICS Execute Definición y Administración. Los administradores del sistema CICS lo utilizan para definir las entradas de la tabla CICS y otras actividades de administración.

    CEMT

    CEMT se conoce como CICS Execute Master Terminal. Se utiliza para consultar y actualizar el estado de los entornos CICS y también para otras operaciones del sistema.

    • Usando el comando CEMT, podemos administrar transacciones, tareas, archivos, programas, etc.

    • Para obtener todas las opciones posibles, escriba CEMT y presione ENTER. Mostrará todas las opciones.

    • CEMT se utiliza básicamente para cargar un nuevo programa en el CICS o para cargar una nueva copia del programa en el CICS después de que se cambia el programa o el conjunto de mapas.

    Ejemplo

    Se puede sobrescribir el estado del archivo mostrado para cambiarlo. El siguiente ejemplo muestra cómo cerrar un archivo:

    CEMT 
      
    ** Press ENTER & Following Screen is displayed **  
    
    STATUS: ENTER ONE OF THE FOLLOWING 
    Inquire 
    Perform 
    Set 
     
    ** Command to close a file **
      
    CEMT SET FILE (file-name) 
    CEMT I FILE (file-name)

    CECI

    CECI se conoce como CICS Execute Command Interpreter. Muchos mandatos CICS se pueden ejecutar utilizando CECI.

    • CECI se usa para verificar la sintaxis del comando. Ejecuta el comando, solo si la sintaxis es correcta.

    • Escriba la opción CECI en la pantalla CICS vacía después de haber iniciado sesión. Le brinda la lista de opciones disponibles.

    Ejemplo

    El siguiente ejemplo muestra cómo enviar datos de salida mapeados al terminal. Discutiremos sobre MAPS en los próximos módulos.

    CECI SEND MAP (map-name) MAPSET (mapset-name) ERASE

    CEDF

    CEDF se conoce como CICS Execute Debug Facility. Se utiliza para depurar el programa paso a paso, lo que ayuda a encontrar los errores.

    Escriba CEDF y presione Intro en la región CICS. Se mostrará el mensaje El terminal está en modo EDF. Ahora escriba la identificación de la transacción y presione la tecla Intro. Después de la iniciación, con cada tecla enter, se ejecuta una línea. Antes de ejecutar cualquier comando CICS, muestra la pantalla en la que podemos modificar los valores antes de continuar.

    CMAC

    CMAC se conoce como mensajes CICS para códigos de terminación anormal. Se utiliza para encontrar la explicación y las razones de los códigos de terminación anormal de CICS.

    Ejemplo

    El siguiente ejemplo muestra cómo verificar los detalles de un código Abend:

    CMAC abend-code

    CESF

    CESF se conoce como CICS Execute Sign Off. Se utiliza para cerrar sesión en la región CICS.

    Ejemplo

    El siguiente ejemplo muestra cómo cerrar la sesión de la región CICS:

    CESF LOGOFF

    CEBR

    CEBR se conoce como CICS Execute Temporary storage Browse. Se utiliza para mostrar el contenido de una cola de almacenamiento temporal o TSQ.

    CEBR se utiliza durante la depuración para comprobar si los elementos de la cola se están escribiendo y recuperando correctamente. Discutiremos más sobre TSQ en los próximos módulos.

    Ejemplo

    El siguiente ejemplo muestra cómo invocar el comando CEBR:

    CEBR queue-id

    Conceptos de CICS

    Cada comando se puede lograr ejecutando una serie de macros CICS. Discutiremos algunas características básicas que nos ayudarán a comprender mejor los conceptos:

    Multitarea

    Esta característica del sistema operativo permite ejecutar más de una tarea al mismo tiempo. La tarea puede ser compartir el mismo programa o utilizar diferentes programas. El CICS planifica la tarea en su propia región.

    Multi-hilo

    Esta característica del sistema operativo permite ejecutar más de una tarea al mismo tiempo compartiendo el mismo programa. Para que sea posible el subproceso múltiple, un programa de aplicación debe ser unre-entrant program bajo el sistema operativo o un quasi-reentrant bajo el CICS.

    Reentrada

    Un programa reentrante es aquel que no se modifica a sí mismo y puede volver a entrar en sí mismo y continuar procesando después de una interrupción por parte del sistema operativo.

    Cuasi reentrada

    Un programa cuasi-reentrante es un programa reentrante en el entorno CICS. CICS asegura el reingreso al adquirir un área de almacenamiento única para cada tarea. Entre los mandatos CICS, CICS tiene el derecho exclusivo de utilizar los recursos de la CPU y puede ejecutar otros mandatos CICS de otras tareas.

    Hay ocasiones en las que muchos usuarios utilizan simultáneamente el mismo programa; Esto es lo que llamamosmulti-threading. Por ejemplo, supongamos que 50 usuarios están usando un programa A. Aquí el CICS proporcionará 50 almacenamiento de trabajo para ese programa, pero una División de Procedimientos. Y esta técnica se conoce comoquasi-reentrancy.

    Los programas CICS están escritos en lenguaje COBOL en Mainframes. Discutiremos sobre cómo escribir un programa COBOL-CICS simple, compilarlo y luego ejecutarlo.

    Programa CICS

    Escribiremos un programa COBOL-CICS simple que muestra algún mensaje en la pantalla de salida de CICS. Este programa es para demostrar los pasos involucrados en la ejecución de un programa COBOL-CICS. Los siguientes son los pasos para codificar un programa simple:

    Paso 1

    Inicie sesión en Mainframes y abra una sesión de TSO.

    Paso 2

    Cree un nuevo PDS en el que codificaremos nuestro programa.

    Paso 3

    Cree un nuevo miembro dentro del PDS y codifique el siguiente programa:

    IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO.
    DATA DIVISION.
    FILE SECTION.
    WORKING-STORAGE SECTION.
    01 WS-MESSAGE PIC X(40).
    01 WS-LENGTH  PIC S9(4) COMP.
    PROCEDURE DIVISION.
    A000-MAIN-PARA.
       MOVE 'Hello World' TO WS-MESSAGE
       MOVE '+12' TO WS-LENGTH
       EXEC CICS SEND TEXT 
          FROM (WS-MESSAGE)
          LENGHT(WS-LENGTH)  
       END-EXEC
       EXEC CICS RETURN
       END-EXEC.

    Etapa 4

    Después de codificar el programa, necesitamos compilarlo. Podemos compilar el programa usando el siguiente JCL:

    //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C  
    //CICSCOB  EXEC CICSCOB,                                                
    //COPYLIB = ABC.XYZ.COPYLIB,                            
    //LOADLIB = ABC.XYZ.LOADLIB 
    //LIB        JCLLIB ORDER = CICSXXX.CICS.XXXPROC                
    //CPLSTP     EXEC DFHEITVL                                
    //TRN.SYSIN  DD DSN = ABC.XYZ.PDS(HELLO),DISP = SHR     
    //LKED.SYSIN DD *                                        
       NAME HELLO(R)                                          
    //

    Paso 5

    Abra una sesión de CICS.

    Paso 6

    Ahora instalaremos el programa usando el siguiente comando:

    CEMT SET PROG(HELLO) NEW.

    Paso 7

    Ejecute el programa utilizando el ID de transacción asociado. El ID de transacción lo proporciona el administrador. Mostrará la siguiente salida:

    Compilación del programa

    El siguiente diagrama de flujo muestra los pasos utilizados para compilar un programa COBOL-CICS:

    Traductor

    La función de un traductor es verificar si hay errores de sintaxis en los comandos CICS. Los traduce en declaraciones COBOL equivalentes.

    Compilador

    La función de un compilador es expandir los libros de copia COBOL. Compila el código después de verificar el código fuente en busca de errores de sintaxis.

    Editor de enlaces

    La función de un editor de vínculos es vincular diferentes módulos de objetos para crear un único módulo de carga.

    BMS se conoce como soporte de mapeo básico. Una aplicación consta de pantallas formateadas que actúan como puente entre el terminal y los programas CICS. Para que se produzca la comunicación entre el terminal y los programas CICS, utilizamos los servicios de entrada / salida del terminal CICS. Usamos BMS para crear diseños de pantallas con posiciones y atributos adecuados. Las siguientes son las funciones de BMS:

    • BMS actúa como una interfaz entre el terminal y los programas CICS.

    • El diseño y formato de la pantalla es independiente de la lógica de aplicación.

    • BMS hace que el hardware de la aplicación sea independiente.

    Pantalla formateada

    La pantalla que se muestra a continuación es una pantalla de menú y se puede diseñar utilizando BMS. Sus puntos clave son los siguientes:

    • La pantalla puede tener un título, una fecha y cualquier otra información que deba mostrarse.

    • Las opciones 1, 2 y 3 son los campos sin nombre que son los títulos de la pantalla.

    • En el campo Selección, debemos proporcionar la entrada. Luego, esta entrada se envía al programa CICS para su procesamiento posterior.

    • En la parte inferior de la pantalla, se muestran las teclas de acción.

    • Todos los campos y la propia pantalla se definen con macros BMS. Cuando se define el mapa completo, podemos usar JCL para ensamblarlo.

    Términos básicos de BMS

    A continuación se muestran los términos básicos que utilizaremos en los próximos módulos:

    Mapa

    Map es un formato de pantalla única que se puede diseñar utilizando macros BMS. Puede tener nombres que contengan de 1 a 7 caracteres.

    Mapset

    Mapset es una colección de mapas que están vinculados entre sí para formar un módulo de carga. Debería tener una entrada PPT. Puede tener nombres de 1 a 7 caracteres.

    Macros BMS

    BMS map es un programa que está escrito en lenguaje ensamblador para administrar pantallas. Las tres macros que se utilizan para definir la pantalla son DFHMSD, DFHMDI y DFHMDF.

    DFHMSD

    La macro DFHMSD genera la definición de Mapset. Es un identificador de macro que muestra que estamos iniciando un conjunto de mapas. El nombre del conjunto de mapas es el nombre del módulo de carga y debe estar presente una entrada en la tabla PPT. La siguiente tabla muestra la lista de parámetros que se pueden utilizar en DFHMSD:

    No Señor Descripción de parámetros
    1

    TYPE

    TYPE se utiliza para definir el tipo de mapa. Si TYPE =
    MAP - Se crea el mapa físico
    DSECT - Se crea el mapa simbólico
    && SYSPARM - Físico y simbólico, ambos se crean
    FINAL - Para indicar el final de la codificación de un conjunto de mapas.

    2

    MODE

    MODO se utiliza para indicar operaciones de entrada / salida. IF MODE =
    IN - Solo para un mapa de entrada
    OUT - Solo para un mapa de salida
    INOUT Para un mapa de entrada y salida

    3

    LANG

    LANG = ASM / COBOL / PL1
    Decide el idioma de la estructura DSECT, para copiar en el programa de aplicación.

    4

    STORAGE

    Si STORAGE =
    AUTO - Para adquirir un área de mapa simbólico separada para cada mapset
    BASE - Para tener la misma base de almacenamiento para los mapas simbólicos de más de un mapset

    5

    CTRL

    CRTL se utiliza para definir las solicitudes de control de dispositivos. Si CTRL =
    FREEKB - Para desbloquear el teclado
    FRSET - Para restablecer MDT al estado cero
    ALARM - Para configurar una alarma en el tiempo de visualización de la pantalla
    PRINT - Para indicar el conjunto de mapas que se enviará a la impresora.

    6

    TERM

    TERM = tipo asegura la independencia del dispositivo, requerido si se utiliza un terminal diferente al 3270.

    7

    TIOAPFX

    TIOAPFX = YES / NO
    YES - Para reservar el espacio de prefijo (12 bytes) para que los comandos BMS accedan a TIOA correctamente. Necesario para el nivel de mandato de CICS.

    Ejemplo

    El siguiente ejemplo muestra cómo codificar una definición de conjunto de mapas:

    MPST01  DFHMSD TYPE = &SYSPARM, X
       CTRL = (FREEKB,FRSET), X
       LANG = COBOL, X 
       STORAGE = AUTO, X
       TIOAPFX = YES, X
       MODE = INOUT, X
       TERM = 3270
       DFHMSD TYPE = FINAL 
    END

    DFHMDI

    La macro DFHMDI genera definiciones de mapas. Muestra que estamos comenzando un nuevo mapa. El nombre del mapa va seguido de la macro DFHMDI. Mapname se utiliza para enviar o recibir mapas. La siguiente tabla muestra los parámetros que usamos dentro de una macro DFHMDI:

    No Señor Descripción de parámetros
    1

    SIZE

    TAMAÑO = (Línea, Columna)
    Este parámetro da el tamaño del mapa. BMS nos permite construir una pantalla usando varios mapas, y este parámetro se vuelve importante cuando usamos más de un mapa en un solo mapa.

    2

    LINE

    Indica el número de la línea de salida del mapa.

    3

    COLUMN

    Indica el número de columna inicial del mapa.

    4

    JUSTIFY

    Se utiliza para especificar que todo el mapa o los campos del mapa se justifiquen a la izquierda oa la derecha.

    5

    CTRL

    CRTL se utiliza para definir las solicitudes de control de dispositivos. Si CTRL =
    FREEKB - Para desbloquear el teclado
    FRSET - Para restablecer MDT al estado cero
    ALARM - Para establecer una alarma en el tiempo de visualización de la pantalla
    PRINT - Para indicar el mapa que se enviará a la impresora

    6

    TIOAPFX

    TIOAPFX = SÍ / NO

    SÍ - Para reservar el espacio de prefijo (12 bytes) para que los comandos BMS accedan a TIOA correctamente. Necesario para el nivel de mandato de CICS.

    Ejemplo

    El siguiente ejemplo muestra cómo codificar una definición de mapa:

    MAPSTD DFHMDI SIZE = (20,80), X
       LINE = 01, X
       COLUMN = 01, X
       CTRL = (FREEKB,FRSET)

    DFHMDF

    La macro DFHMDF se utiliza para definir nombres de campo. Se menciona el nombre del campo con el que se codifica la macro DFHMDF. Este nombre de campo se usa dentro del programa. No escribimos el nombre del campo contra un campo constante que no queremos usar dentro del programa. La siguiente tabla muestra la lista de parámetros que se pueden usar dentro de una macro DFHMDF:

    No Señor Descripción de parámetros
    1

    POS

    Esta es la posición en la pantalla donde debería aparecer el campo. Un campo comienza con su byte de atributo, por lo que si codifica POS = (1,1), el byte de atributo para ese campo está en la línea 1 en la columna 1, y los datos reales comienzan en la columna 2.

    2

    LENGTH

    Esta es la longitud del campo, sin contar el byte de atributo.

    3

    INITIAL

    Estos son los datos de caracteres para un campo de salida. Usamos esto para especificar etiquetas y títulos para la pantalla y mantenerlos independientes del programa. Para el primer campo en la pantalla del menú, por ejemplo, codificaremos: INITIAL = 'MENU'.

    4

    JUSTIFY

    Se utiliza para especificar que todo el mapa o los campos del mapa se justifiquen a la izquierda oa la derecha.

    5

    ATTRB

    ATTRB = (ASKIP / PROT / UNPROT, NUM, BRT / NORM / DRK, IC, FSET) Describe los atributos del campo.

    ASKIP - Autoskip. No se pueden ingresar datos en este campo. El cursor pasa al siguiente campo.

    PROT - Campo protegido. No se pueden ingresar datos en este campo. Si se ingresan datos, causará el estado de inhibición de entrada.

    UNPROT: campo desprotegido. Se pueden ingresar datos y esto se usa para todos los campos de entrada.

    NUM: campo numérico. Solo se permiten números (0 a 9) y caracteres especiales ('.' Y '-').

    BRT: visualización brillante de un campo (resaltado).

    NORM: visualización normal.

    DRK: pantalla oscura.

    IC - Insertar cursor. El cursor se colocará en este campo. En caso de que IC se especifique más de una vez, el cursor se coloca en el último campo.

    FSET: conjunto de campo. MDT está activado para que los datos de campo se envíen desde el terminal a la computadora principal independientemente de si el usuario ha modificado realmente el campo.

    6

    PICIN

    PICIN se aplica al campo de datos que se utiliza como entrada como PICIN = 9 (8).

    7

    PICOUT

    PICIN se aplica al campo de datos que se utiliza como salida como PICOUT = Z (8).

    Ejemplo

    El siguiente ejemplo muestra cómo codificar una definición de campo:

    DFHMDF POS = (01,01), X
       LENGTH = 7, X
       INITIAL = ‘SCREEN1’, X
          ATTRB = (PROT,NORM)
          STDID DFHMDF POS = (01,70), X
          LENGTH = 08, X
          ATTRB = (PROT,NORM)

    BMS recibe los datos ingresados ​​por el usuario y luego los formatea en un área de mapa simbólico. El programa de aplicación tiene acceso solo a los datos presentes en el mapa simbólico. El programa de aplicación procesa los datos y la salida se envía al mapa simbólico. BMS fusionará la salida de los datos simbólicos con el mapa físico.

    Mapa físico

    Mapa físico es un módulo de carga en la biblioteca de carga que contiene información sobre cómo se debe mostrar el mapa.

    • Contiene los detalles sobre los atributos de todos los campos en el mapa y sus posiciones.

    • Contiene el formato de visualización del mapa para un terminal determinado.

    • Está codificado mediante macros BMS. Se ensambla por separado y se edita por enlace en la biblioteca CICS.

    Mapa simbólico

    Un mapa simbólico es un libro de copias en la biblioteca. El libro de copias lo utiliza el programa de aplicación CICS para enviar y recibir datos desde el terminal.

    • Contiene todos los datos variables que se copian en la sección WORKINGSTORAGE del programa.

    • Tiene todos los campos con nombre. El programador de aplicaciones utiliza estos campos para leer y escribir datos en el mapa.

    Skipper y Stopper Field

    Para un campo con nombre no protegido, en un mapa, si hemos especificado una longitud de 10, esto significa que el campo de nombre puede tomar valores cuya longitud no puede exceder de 10. Pero cuando muestra este mapa usando CICS y comienza a ingresar valores para este campo en la pantalla, podemos ingresar más de 10 caracteres, es decir, hasta el final de la pantalla y podemos ingresar incluso en la siguiente línea. Para evitar esto, utilizamos el campo Skipper o el campo stopper. Un campo Skipper generalmente sería un campo Sin nombre de longitud 1, especificado después de un campo con nombre.

    Campo de patrón

    Si colocamos un campo skipper después del campo no protegido con nombre, mientras ingresamos el valor, una vez que se alcanza la longitud especificada, el cursor se posicionará automáticamente en el siguiente campo no protegido. El siguiente ejemplo muestra cómo agregar un campo de patrón:

    NUMBER  DFHMDF POS = (01,01), X
       LENGTH = 5, X
       ATTRB = (UNPROT,IC)
          DFHMDF POS = (01,07), X
          LENGTH = 1, X
          ATTRB = (ASKIP)

    Campo de tapón

    Si colocamos un campo de tope después del campo no protegido con nombre, mientras ingresamos el valor, una vez que se alcanza la longitud especificada, el cursor detendrá su posicionamiento. El siguiente ejemplo muestra cómo agregar un campo de tope:

    NUMBER  DFHMDF POS = (01,01), X
       LENGTH = 5, X
    	ATTRB = (UNPROT,IC)
    	   DFHMDF POS = (01,07), X
          LENGTH = 1, X
          ATTRB = (PROT)

    Byte de atributo

    El byte de atributo de cualquier campo almacena información sobre las propiedades físicas del campo. El siguiente diagrama y la tabla explican el significado de cada bit.

    Posición de bit Descripción Configuración de bits
    0 y 1   Determinado por el contenido de los bits 2 a 7
    2 y 3 Protección y cambio 00 - Alfanumérico desprotegido
    01 - Numérico desprotegido
    10 - Parada protegida
    11 - Salto protegido
    4 y 5 Intensidad 00 - Normal
    01 - Normal
    10 - Brillante
    11 - Sin pantalla (oscuro)
    6   Debe ser cero siempre
    7 Etiqueta de datos modificada 0 - El campo no se ha modificado
    1 - El campo se ha modificado

    Etiqueta de datos modificada

    La etiqueta de datos modificados (MDT) es el último bit del byte de atributo.

    • MDT es una bandera que contiene un solo bit. Especifica si el valor se transferirá al sistema o no.

    • Su valor predeterminado es 1, cuando se cambia el valor del campo.

    • Si MDT es 0, los datos no se pueden transferir; y si MDT es 1, los datos se pueden transferir.

    Enviar mapa

    El comando send map escribe la salida formateada en el terminal. Se utiliza para enviar el mapa al terminal desde el programa de aplicación. El siguiente segmento de código muestra cómo enviar un mapa a la terminal:

    EXEC CICS SEND 
       MAP('map-name')
       MAPSET('mapset-name')
       [FROM(data-area)]
       [LENGTH(data_value)]
       [DATAONLY]
       [MAPONLY]
       [CURSOR]
       [ERASE/ERASEAUP]
       [FREEKB] 
       [FRSET]
    END-EXEC

    La siguiente tabla enumera los parámetros utilizados en un comando de mapa de envío junto con su significado.

    No Señor Descripción de parámetros
    1

    Map-name

    Es el nombre del mapa que queremos enviar. Es obligatorio.

    2

    Mapset-name

    Es el nombre del conjunto de mapas que contiene el nombre del mapa. El nombre del conjunto de mapas es necesario a menos que sea el mismo que el nombre del mapa.

    3

    FROM

    Se usa si hemos decidido usar un nombre DSECT diferente, debemos usar la opción FROM (dsect-name) junto con el comando SEND MAP.

    4

    MAPONLY

    Significa que no se fusionarán datos de su programa en el mapa y solo se transmitirá la información del mapa.

    5

    DATAONLY

    Es el opuesto lógico de MAPONLY. Lo usamos para modificar los datos variables en una pantalla que ya ha sido creada. Solo los datos de su programa se envían a la pantalla. Las constantes en el mapa no se envían.

    6

    ERASE

    Provoca que se borre toda la pantalla antes de que se muestre lo que estamos enviando.

    7

    ERASEUP

    Hace que solo se borren los campos desprotegidos.

    8

    FRSET

    Flag Reset desactiva la etiqueta de datos modificada en el byte de atributo para todos los campos en la pantalla antes de que lo que está enviando se coloque allí.

    9

    CURSOR

    Se puede utilizar para colocar el cursor en la pantalla del terminal. El cursor se puede configurar moviendo -1 a la parte L del campo y luego enviando el mapa.

    10

    ALARM

    Hace que suene la alarma audible.

    11

    FREEKB.

    El teclado se desbloquea si especificamos FREEKB en el mapa o en el comando SEND.

    12

    PRINT

    Permite que la salida de un comando SEND se imprima en una impresora.

    13

    FORMFEED

    Hace que la impresora restaure el papel al principio de la página siguiente antes de que se imprima la salida.

    Recibir mapa

    Cuando queremos recibir entrada de un terminal, usamos el comando RECEIVE MAP. Los parámetros MAP y MAPSET tienen exactamente el mismo significado que para el comando SEND MAP. El siguiente segmento de código muestra cómo recibir un mapa:

    EXEC CICS RECEIVE 
       MAP('map-name')
       MAPSET('mapset-name')
       [INTO(data-area)]
       [FROM(data-area)]
       [LENGTH(data_value)]
    END-EXEC

    Ejecución del conjunto de mapas

    Los siguientes pasos son necesarios para desarrollar y ejecutar un conjunto de mapas:

    • Step 1 - Abra una sesión de TSO.

    • Step 2 - Cree un nuevo PDS.

    • Step 3 - Codifique un conjunto de mapas en un miembro nuevo de acuerdo con el requisito.

    • Step 4 - Ensamble el conjunto de mapas utilizando el JCL proporcionado por el administrador de CICS.

    • Step 5 - Abra una sesión CICS.

    • Step 6 - Instale el programa usando el comando -

      CEMT SET PROG (mapset-name) NUEVO

    • Step 7 - Escriba el siguiente comando para enviar el mapa a la terminal -

      CECI SEND MAP (nombre del mapa) MAPSET (nombre del conjunto de mapas) BORRAR FREEKB

    Cualquier programa de aplicación necesitaría una interfaz para interactuar con CICS. EIB (Execute Interface Block) actúa como una interfaz para permitir que los programas de aplicación se comuniquen con el CICS. EIB contiene la información requerida durante la ejecución de un programa.

    Verbos COBOL restringidos

    Mientras codificamos un programa CICS, no podemos usar los comandos que devuelven el control directamente al MVS. Si codificamos estos verbos COBOL, no dará ningún error de compilación, pero podemos obtener resultados impredecibles. A continuación se muestran los verbos COBOL que no deben usarse en un programa CICS:

    • Declaraciones de E / S de archivos como Abrir, Leer, Escribir, Reescribir, Cerrar, Eliminar e Iniciar. Todas las E / S de archivos en CICS son manejadas por el módulo de control de archivos y tienen su propio conjunto de declaraciones como READ, WRITE, REWRITE y DELETE que discutiremos en los próximos módulos.

    • No se requiere la sección de archivos ni la división de medio ambiente.

    • Las declaraciones COBOL que invocan funciones del sistema operativo como Aceptar, Fecha / Hora no se pueden utilizar.

    • No use DISPLAY, FUSION, STOP RUN y GO BACK.

    Ejecutar bloque de interfaz

    Execute Interface Block (EIB) es un bloque de control que CICS carga automáticamente para cada programa.

    • El EIB es exclusivo de una tarea y existe mientras dura la tarea. Contiene un conjunto de información relacionada con el sistema correspondiente a la tarea.

    • Contiene información sobre el identificador de la transacción, la hora, la fecha, etc., que CICS utiliza durante la ejecución de un programa de aplicación.

    • Todos los programas que se ejecutan como parte de la tarea tienen acceso al mismo EIB.

    • Los datos en EIB en tiempo de ejecución se pueden ver ejecutando el programa en modo CEDF.

    Campos EIB

    La siguiente tabla proporciona una lista de campos que están presentes en EIB:

    Campo EIB Cláusula PIC Descripción
    EIBAID X (1) Tecla de ayuda presionada
    EIBCALEN S9 (4) COMP Contiene longitud de DFHCOMMAREA
    EIBDATE S9 (7) COMP-3 Contiene la fecha actual del sistema
    EIBRCODE X (6) Contiene el código de retorno de la última transacción.
    EIBTASKN S9 (7) COMP-3 Contiene número de tarea
    EIBTIME S9 (7) COMP-3 Contiene la hora actual del sistema
    EIBTRMID X (4) Identificador de terminal
    EIBTRNID X (4) Identificador de transacción

    Clasificación de programas CICS

    Los programas CICS se clasifican en las siguientes tres categorías que analizaremos una por una:

    • Programas no conversacionales
    • Programas conversacionales
    • Programas pseudoconversacionales: discutiremos en el siguiente módulo

    Programas no conversacionales

    Al ejecutar programas no conversacionales, no se requiere intervención humana. Todas las entradas necesarias se proporcionan cuando se inicia el programa.

    • Son similares a los programas por lotes que se ejecutan en modo por lotes. Entonces, en CICS, rara vez se desarrollan.

    • Podemos decir que se utilizan solo para mostrar una secuencia de pantallas a intervalos regulares de tiempo.

    Ejemplo

    El siguiente ejemplo muestra un programa no conversacional que simplemente mostrará "HELLO WORLD" en el terminal CICS como salida:

    IDENTIFICATION DIVISION.                                
    PROGRAM-ID. HELLO.                                      
    DATA DIVISION.                                          
    WORKING-STORAGE SECTION.                                
    01 WS-MESSAGE          PIC X(30).                       
    PROCEDURE DIVISION.                                     
    ********************************************************
    * SENDING DATA TO SCREEN                               * 
    ********************************************************
       MOVE 'HELLO WORLD' TO WS-MESSAGE                
       EXEC CICS SEND TEXT                             
          FROM (WS-MESSAGE)                          
       END-EXEC                                        
    ********************************************************
    * TASK TERMINATES WITHOUT ANY INTERACTION FROM THE USER* 
    ********************************************************
       EXEC CICS RETURN                                
    END-EXEC.

    Programa conversacional

    Enviar un mensaje al terminal y recibir una respuesta del usuario se denomina conversation. Una aplicación en línea logra una conversación entre el usuario y el programa de aplicación mediante un par de comandos SEND y RECEIVE. Los puntos clave de un programa conversacional son los siguientes:

    • El sistema envía un mensaje a la pantalla y espera la respuesta del usuario.

    • El tiempo que tarda el usuario en responder se conoce como Think Time. Este tiempo es considerablemente alto, lo que es un gran inconveniente de los programas conversacionales.

    • El usuario proporciona la entrada necesaria y presiona una tecla AID.

    • La aplicación procesa la entrada del usuario y envía la salida.

    • El programa se carga en el almacenamiento principal al principio y se retiene hasta que finaliza la tarea.

    Ejemplo

    El siguiente ejemplo muestra un programa de conversión que toma la entrada del usuario y luego simplemente muestra la misma entrada en el terminal CICS como salida:

    IDENTIFICATION DIVISION.                               
    PROGRAM-ID. HELLO.                                     
    DATA DIVISION.                                         
    WORKING-STORAGE SECTION.                               
    01 WS-MESSAGE          PIC X(30) VALUE SPACES.         
    PROCEDURE DIVISION.                                    
       MOVE 'ENTER MESSAGE' TO WS-MESSAGE           
    ********************************************************
    * SENDING DATA FROM PROGRAM TO SCREEN                  * 
    ********************************************************
       EXEC CICS SEND TEXT                            
          FROM (WS-MESSAGE)                         
       END-EXEC                                       
    ********************************************************
    * GETTING INPUT FROM USER                              * 
    ********************************************************
       EXEC CICS RECEIVE                              
          INTO(WS-MESSAGE)                          
       END-EXEC                                       
       EXEC CICS SEND TEXT                            
          FROM (WS-MESSAGE)                         
       END-EXEC                                       
    ********************************************************
    * COMMAND TO TERMINATE THE TRANSACTION                 * 
    ********************************************************
       EXEC CICS RETURN                               
    END-EXEC.

A partir de ahora, hemos cubierto los programas de conversión y no conversión. Los programas de conversión tienen un gran inconveniente ya que suthink timees considerablemente alto. Para superar este problema, la programación de pseudoconversión entró en escena. Ahora discutiremos más sobre programas de pseudoconversión.

Programa de pseudoconversión

A continuación se muestra la secuencia de eventos que tienen lugar en un programa de pseudoconversión:

  • Step 1 - El sistema envía un mensaje a la pantalla y finaliza la transacción, especificando la transacción que se iniciará cuando se reciba la entrada del usuario.

  • Step 2- El sistema asigna los recursos utilizados por esta transacción a otras transacciones que se ejecutan en el sistema. Entonces podemos utilizar los recursos en un programa de pseudoconversión hasta que el usuario dé la entrada.

  • Step 3- El sistema sondea la entrada del terminal a intervalos regulares de tiempo. Cuando se recibe la entrada, se procesa y se muestra la salida.

  • Step 4 - El programa de aplicación se carga en el almacenamiento principal cuando es necesario y se libera cuando no está en uso.

Técnicas de pseudo conversión

El punto importante a tener en cuenta en la pseudoconversación es el paso de datos entre cada tarea. Discutiremos sobre las técnicas para pasar datos.

COMAREA

COMMAREA se conoce como área de comunicación. COMMAREA se utiliza para pasar datos entre tareas. El siguiente ejemplo muestra cómo pasar COMMAREA donde WSCOMMAREA y WS-COMMAREA-LENGTH se declaran en la sección de almacenamiento de trabajo:

EXEC CICS RETURN
   TRANSID ('transaction-id')
   COMMAREA (WS-COMMAREA)
   LENGTH  (WS-COMMAREA-LENGTH)
END-EXEC.

DFHCOMMAREA

DFHCOMMAREA es un área de memoria especial que CICS proporciona para cada tarea.

  • Se utiliza para pasar datos de un programa a otro. Los programas pueden existir en la misma transacción o también en transacciones diferentes.

  • Se declara en la Sección de Vinculación del programa en el nivel 01.

  • Debe tener la misma cláusula de imagen que WS-COMMAREA.

  • Los datos se pueden mover de DFHCOMMAREA a WS-COMMAREA usando una instrucción MOVE.

MOVE DFHCOMMAREA TO WS-COMMAREA.

Ejemplo

Después de enviar el mapa, la tarea finaliza y espera la respuesta del usuario. En esta etapa, los datos deben guardarse, porque aunque la tarea ha finalizado, la transacción no. Cuando se reanude esta transacción, se requerirá el estado anterior de la tarea. El usuario ingresa la entrada. Esto ahora tiene que ser recibido por el comando RECEIVE MAP y luego validado. El siguiente ejemplo muestra cómo declarar COMMAREA y DFHCOMMAREA -

WORKING-STORAGE SECTION.
01 WS-COMMAREA.
   05 WS-DATA PIC X(10).
   
LINKAGE SECTION.
01 DFHCOMMAREA.
   05 LK-DATA PIC X(10).

Pseudocódigo

A continuación se muestra la lógica del pseudo código que usamos en la pseudo programación:

MOVE DFHCOMMAREA TO WS-COMMAREA
IF EIBCALEN = 0
   STEP1: SEND MAP
   STEP2: MOVE <internal-transaction-id1> to WS-COMMAREA
   STEP3: ISSUE CONDITIONAL RETURN
ELSE
   IF WS-COMMAREA = <internal-transaction-id1> 
      STEP4: RECEIVE MAP
      STEP5: PROCESS DATA
      STEP6: SEND OUTPUT MAP
      STEP7: MOVE <internal-transaction-ID2> to WS-COMMAREA
      STEP8: ISSUE CONDITIONAL RETURN 
   END-IF
END-IF      
STEP9: REPEAT STEP3 TO STEP7 UNTIL EXIT

Ejemplo

El siguiente ejemplo muestra un programa de pseudoconversión:

******************************************************************
* PROGRAM TO DEMONSTRATE PSEUDO-CONVERSATION                     *
******************************************************************
IDENTIFICATION DIVISION.                                         
PROGRAM-ID. HELLO.                                               
DATA DIVISION.                                                   
WORKING-STORAGE SECTION.                                         
01 WS-MESSAGE          PIC X(30).                                
01 WS-COMMAREA         PIC X(10) VALUE SPACES.                    
LINKAGE SECTION.                                                 
01 DFHCOMMAREA         PIC X(10).                                 
PROCEDURE DIVISION.
   MOVE DFHCOMMAREA TO WS-COMMAREA
   IF  WS-COMMAREA  =  SPACES                                   
******************************************************************
* TRANSACTION GETTING EXECUTED FOR THE FIRST TIME                *
******************************************************************
   MOVE 'HELLO' TO WS-MESSAGE                               
   EXEC CICS SEND TEXT                                      
      FROM (WS-MESSAGE)                                   
   END-EXEC                                                 
   MOVE 'FIRST' TO WS-COMMAREA                              
******************************************************************
* TASK ENDS AS A RESULT OF RETURN. IF AID KEY PRESSED, NEXT      *
* TRANSACTION SHOULD BE TP002. DATA PASSED FROM WS-COMMAREA TO   *
* DFHCOMMAREA                                                    *
******************************************************************
   EXEC CICS RETURN                                         
      TRANSID('TP002')                                      
      COMMAREA(WS-COMMAREA)                                
   END-EXEC                                                 
******************************************************************
* IF  COMMAREA IS NOT EMPTY , THEN TP002 HAS BEEN EXECUTED ONCE  *
* ALREADY, USER INTERACTION IS FACILITATED BY RECEIVE            *
******************************************************************
   ELSE                                                         
      EXEC CICS RECEIVE                                        
         INTO(WS-MESSAGE)                                    
   END-EXEC
      EXEC CICS SEND TEXT                                      
      FROM (WS-MESSAGE)                                   
   END-EXEC                                                 
******************************************************************
* TASK ENDS AS A RESULT OF RETURN, NO NEXT TRANSACTION SPECIFIED *
* TO BE EXECUTED                                                 *
******************************************************************
   EXEC CICS RETURN                                         
   END-EXEC                                                 
END-IF.

Ventajas de la pseudoconversión

A continuación se muestran las ventajas de la pseudoconversión:

  • Los recursos se utilizan mejor. Los recursos se liberan tan pronto como el programa se suspende temporalmente.

  • Parece que está en modo conversacional.

  • Tiene mejor tiempo de respuesta.

Declaraciones de devolución

A continuación se muestran los dos tipos de declaraciones de retorno que se utilizan en CICS:

Retorno-1

Cuando se emite la siguiente declaración de devolución incondicional, la tarea y la transacción (programa) finalizan.

EXEC CICS RETURN 
END-EXEC.

Retorno-2

Cuando se emite el siguiente retorno condicional, es decir, retorno con declaración TRANSID, el control vuelve al CICS con el siguiente transid a ejecutar. La siguiente transacción comienza cuando el usuario presiona una tecla AID.

EXEC CICS RETURN
   TRANSID ('trans-id')
   [COMMAREA(WS-COMMAREA)]
END-EXEC.

Como hemos comentado en módulos anteriores, las claves AID se conocen como claves de identificación de atención. CICS solo puede detectar claves AID. Después de escribir toda la entrada, solo cuando el usuario presiona una de las teclas AID, CICS toma el control. Las teclas AID incluyen ENTER, PF1 a PF24, PA1 a PA3 y CLEAR.

Validación de claves AID

La tecla presionada por el usuario se verifica usando EIBAID.

  • EIBAID tiene un byte de longitud y contiene el valor del identificador de atención real utilizado en el flujo de entrada 3270.

  • CICS nos proporciona un conjunto precodificado de variables que se pueden utilizar en el programa de aplicación escribiendo la siguiente declaración:

    COPIAR DFHAID

DFHAID

DFHAID es un libro de copias que se utiliza en programas de aplicación para incluir un conjunto de variables precodificadas por CICS. El siguiente contenido está presente en el copybook de DFHAID:

01    DFHAID.                             
   02  DFHNULL   PIC  X  VALUE IS ' '.     
   02  DFHENTER  PIC  X  VALUE IS ''''.    
   02  DFHCLEAR  PIC  X  VALUE IS '_'.     
   02  DFHCLRP   PIC  X  VALUE IS '¦'.     
   02  DFHPEN    PIC  X  VALUE IS '='.     
   02  DFHOPID   PIC  X  VALUE IS 'W'.     
   02  DFHMSRE   PIC  X  VALUE IS 'X'.     
   02  DFHSTRF   PIC  X  VALUE IS 'h'.     
   02  DFHTRIG   PIC  X  VALUE IS '"'.     
   02  DFHPA1    PIC  X  VALUE IS '%'.     
   02  DFHPA2    PIC  X  VALUE IS '>'.     
   02  DFHPA3    PIC  X  VALUE IS ','.     
   02  DFHPF1    PIC  X  VALUE IS '1'.     
   02  DFHPF2    PIC  X  VALUE IS '2'.     
   02  DFHPF3    PIC  X  VALUE IS '3'.     
   02  DFHPF4    PIC  X  VALUE IS '4'.     
   02  DFHPF5    PIC  X  VALUE IS '5'.     
   02  DFHPF6    PIC  X  VALUE IS '6'.     
   02  DFHPF7    PIC  X  VALUE IS '7'.     
   02  DFHPF8    PIC  X  VALUE IS '8'.     
   02  DFHPF9    PIC  X  VALUE IS '9'.     
   02  DFHPF10   PIC  X  VALUE IS ':'.     
   02  DFHPF11   PIC  X  VALUE IS '#'.     
   02  DFHPF12   PIC  X  VALUE IS '@'.     
   02  DFHPF13   PIC  X  VALUE IS 'A'.     
   02  DFHPF14   PIC  X  VALUE IS 'B'.     
   02  DFHPF15   PIC  X  VALUE IS 'C'.   
   02  DFHPF16   PIC  X  VALUE IS 'D'.   
   02  DFHPF17   PIC  X  VALUE IS 'E'.   
   02  DFHPF18   PIC  X  VALUE IS 'F'.   
   02  DFHPF19   PIC  X  VALUE IS 'G'.   
   02  DFHPF20   PIC  X  VALUE IS 'H'.   
   02  DFHPF21   PIC  X  VALUE IS 'I'.   
   02  DFHPF22   PIC  X  VALUE IS '¢'.   
   02  DFHPF23   PIC  X  VALUE IS '.'.   
   02  DFHPF24   PIC  X  VALUE IS '<'.

Ejemplo

El siguiente ejemplo muestra cómo utilizar el cuaderno de copias DFHAID en un programa de aplicación:

IDENTIFICATION DIVISION.                                         
PROGRAM-ID. HELLO.                                               
DATA DIVISION.   
WORKING-STORAGE SECTION.
COPY DFHAID.
PROCEDURE DIVISION.
A000-AIDKEY-PARA.
   EVALUATE EIBAID
      WHEN DFHAID
         PERFORM A000-PROCES-PARA
      WHEN DFHPF1
         PERFORM A001-HELP-PARA
      WHEN DFHPF3
         PERFORM A001-EXIT-PARA
    END-EVALUATE.

Posicionamiento del cursor

Hay dos formas de anular la posición especificada en la definición del mapa.

  • Una forma es especificar la posición de la pantalla en relación con el número de línea y columna en la opción CURSOR del comando enviar mapa.

  • Otra forma es mover -1 a la variable del mapa simbólico con el sufijo L. Luego, envíe el mapa con una opción de CURSOR en ENVIAR MAPA.

Ejemplo

El siguiente ejemplo muestra cómo anular la posición del cursor para el campo NOMBRE:

MOVE -1 TO NAMEL
   EXEC CICS SEND 
      MAP ('map-name')
      MAPSET ('name-field')
      ERASE
      FREEKB
      CURSOR
   END-EXEC.

Modificación dinámica de atributos

Al enviar un mapa, si queremos tener diferentes atributos para un campo que no sea el especificado en el mapa, podemos anularlo configurando el campo en el programa. A continuación se muestra la explicación para anular los atributos de un campo:

  • Para anular los atributos de un campo, debemos incluir DFHATTR en el programa de aplicación. Lo proporciona CICS.

  • El atributo requerido se puede elegir de la lista y mover a la variable de campo simbólico con el sufijo 'A'.

DFHATTR tiene el siguiente contenido:

01  CICS-ATTRIBUTES.
   05  ATTR-UXN            PIC X(01) VALUE SPACE.
   05  ATTR-UXMN           PIC X(01) VALUE 'A'.
   05  ATTR-UXNL           PIC X(01) VALUE 'D'.
   05  ATTR-UXMNL          PIC X(01) VALUE 'E'.
   05  ATTR-UXBL           PIC X(01) VALUE 'H'.
   05  ATTR-UXMBL          PIC X(01) VALUE 'I'.
   05  ATTR-UXD            PIC X(01) VALUE '<'.
   05  ATTR-UXMD           PIC X(01) VALUE '('.
   05  ATTR-U9N            PIC X(01) VALUE '&'.
   05  ATTR-U9MN           PIC X(01) VALUE 'J'.
   05  ATTR-U9NL           PIC X(01) VALUE 'M'.
   05  ATTR-U9MNL          PIC X(01) VALUE 'N'.
   05  ATTR-U9BL           PIC X(01) VALUE 'Q'.
   05  ATTR-U9MBL          PIC X(01) VALUE 'R'.
   05  ATTR-U9D            PIC X(01) VALUE '*'.
   05  ATTR-U9MD           PIC X(01) VALUE ')'.
   05  ATTR-PXN            PIC X(01) VALUE '-'.
   05  ATTR-PXMN           PIC X(01) VALUE '/'.
   05  ATTR-PXNL           PIC X(01) VALUE 'U'.
   05  ATTR-PXMNL          PIC X(01) VALUE 'V'.
   05  ATTR-PXBL           PIC X(01) VALUE 'Y'.
   05  ATTR-PXMBL          PIC X(01) VALUE 'Z'.
   05  ATTR-PXD            PIC X(01) VALUE '%'.
   05  ATTR-PSN            PIC X(01) VALUE '0'.
   05  ATTR-PSMN           PIC X(01) VALUE '1'.
   05  ATTR-PSNL           PIC X(01) VALUE '4'.
   05  ATTR-PSMNL          PIC X(01) VALUE '5'.
   05  ATTR-PSBL           PIC X(01) VALUE '8'.
   05  ATTR-PSMBL          PIC X(01) VALUE '9'.
   05  ATTR-PSD            PIC X(01) VALUE '@'.
   05  ATTR-PSMD           PIC X(01) VALUE "'".

CICS nos permite acceder a los datos de archivos de muchas formas. La mayoría de los accesos a archivos son aleatorios en el sistema en línea, ya que las transacciones que se procesarán no se agrupan ni se clasifican en ningún tipo de orden. Por lo tanto, CICS admite los métodos de acceso directo habituales: VSAM y DAM (método de acceso directo). También nos permite acceder a los datos utilizando administradores de bases de datos.

Acceso aleatorio

Los siguientes son los comandos que se utilizan para el procesamiento aleatorio:

No Señor Comandos y descripción
1 LEER

El comando READ lee datos de un archivo usando la clave principal.

2 ESCRIBIR

El comando de escritura se usa para agregar nuevos registros a un archivo.

3 VOLVER A ESCRIBIR

El comando REWRITE se usa para modificar un registro que ya está presente en un archivo.

4 ELIMINAR

El comando DELETE se usa para eliminar un registro que está presente en un archivo.

Acceso secuencial

Los siguientes son los comandos que se utilizan para el procesamiento secuencial:

No Señor Comandos y descripción
1 STARTBR

STARTBR se conoce como inicio de exploración.

2 READNEXT / READPREV

Cuando emitimos un comando STARTBR, no hace que los registros estén disponibles.

3 RESETBR

El comando RESETBR nos permite restablecer nuestro punto de partida en medio de una navegación.

4 ENDBR

Cuando hayamos terminado de leer un archivo secuencialmente, finalizamos la exploración usando el comando ENDBR.

Hay muchos tipos de abendsy errores que uno puede enfrentar al usar una aplicación CICS. Pueden surgir errores debido tanto a problemas de hardware como de software. Discutiremos sobre errores y manejo de errores en este módulo.

Errores CICS

A continuación se muestran los errores de CICS que pueden surgir durante la ejecución de aplicaciones CICS:

  • Algunos errores CICS esperados surgen cuando las condiciones no son normales en el sistema CICS. Por ejemplo, si estamos leyendo un registro en particular y no se encuentra el registro, aparece el error "No encontrado".Mapfailes un error similar. Los errores en esta categoría se manejan mediante lógica explícita en el programa.

  • Los errores lógicos surgen debido a algunas razones, como la división por cero, el carácter ilegal en el campo numérico o el error de identificación de la transacción.

  • Los errores relacionados con el hardware u otras condiciones del sistema están fuera del control de un programa de aplicación. Por ejemplo, obtener un error de entrada / salida al acceder a un archivo.

Comandos de manejo de errores

CICS proporciona varios mecanismos para identificar los errores y manejarlos en nuestros programas. Los siguientes son los comandos que se utilizan para manejar los errores CICS esperados:

No Señor Manipulación de comandos y descripción
1 Condición de manejo

La condición de identificador se usa para transferir el control del programa a un párrafo o una etiqueta de procedimiento.

2 Manejar Abend

Si un programa termina anormalmente debido a algunas razones, como un error de entrada-salida, entonces se puede manejar usando el comando Handle Abend CICS.

3 Abend

El comando Abend se usa para terminar la tarea intencionalmente.

4 Ignorar condición

Ignorar condición se usa cuando no queremos que se realice ninguna acción si ocurre una terminación anormal particular o un error que se menciona dentro de la condición de ignorar.

5 No manejar

No se puede especificar ningún identificador para ningún mandato CICS.

El Programa de control de programas (PCP) de CICS gestiona el flujo de programas de aplicación. Todos los programas de aplicación deben tener una entrada en la Tabla de programas de procesamiento. Los siguientes son los comandos que se utilizan para los servicios de control de programas:

  • XCTL
  • Link
  • Load
  • Release
  • Return

Programar niveles lógicos

Los programas de aplicación que se ejecutan bajo CICS tienen varios niveles lógicos. El primer programa que recibe el control directamente está en el nivel lógico más alto, es decir, el nivel 1. El programa vinculado está en el siguiente nivel lógico del programa de vinculación. Los programas XCTL se ejecutan al mismo nivel. Quedará claro cuándo pasaremos por Link y XCTL, más adelante en este módulo. La siguiente imagen muestra los niveles lógicos:

XCTL

La explicación fundamental de XCTL es la siguiente:

  • El comando XCTL se utiliza para pasar el control de un programa a otro en el mismo nivel.

  • No espera que le devuelvan el control.

  • Es similar a la instrucción GO TO.

  • Un programa XCTL puede ser pseudo-conversacional.

Ejemplo

El siguiente ejemplo muestra cómo usar el comando XCTL para pasar el control a otro programa:

IDENTIFICATION DIVISION.                                         
PROGRAM-ID. PROG1.  
WORKING-STORAGE SECTION.
01 WS-COMMAREA    PIC X(100).                                             
PROCEDURE DIVISION.

EXEC CICS XCTL
   PROGRAM ('PROG2')
   COMMAREA (WS-COMMAREA)
   LENGTH (100)
END-EXEC.

Este comando transfiere el control a pasar al programa 'PROG2' con 100 bytes de datos. COMMAREA es un parámetro opcional y es el nombre del área que contiene los datos que se pasarán o el área a la que se devolverán los resultados.

Enlace

El comando Link se usa para transferir el control a otro programa en un nivel inferior. Espera que le devuelvan el control. Un programa vinculado no puede ser pseudoconversacional.

Ejemplo

El siguiente ejemplo muestra cómo usar el comando Link para pasar el control a otro programa:

IDENTIFICATION DIVISION.                                         
PROGRAM-ID. PROG1.  
WORKING-STORAGE SECTION.
01 WS-COMMAREA    PIC X(100).                                             
PROCEDURE DIVISION.

EXEC CICS LINK
   PROGRAM ('PROG2')
   COMMAREA (WS-COMMAREA)
   LENGTH (100)
END-EXEC.

Carga

El comando Load se usa para cargar un programa o una tabla. A continuación se muestra la sintaxis del comando Cargar:

EXEC CICS LOAD
   PROGRAM ('name')
END-EXEC.

Lanzamiento

El comando de liberación se usa para liberar un programa o una tabla. A continuación se muestra la sintaxis del comando Release:

EXEC CICS RELEASE
   PROGRAM ('name')
END-EXEC.

Regreso

El comando de retorno se utiliza para devolver el control al siguiente nivel lógico superior. A continuación se muestra la sintaxis del comando Retorno:

EXEC CICS RETURN
   PROGRAM ('name')
   COMMAREA (data-value)
   LENGTH (data-value)
END-EXEC.

Operaciones de control de intervalo

Las operaciones de control de intervalo son de los dos tipos siguientes:

ASKTIME

ASKTIME se utiliza para solicitar la fecha y hora actual o la marca de tiempo. Luego, movemos este valor a la variable de almacenamiento de trabajo dentro del programa. A continuación se muestra la sintaxis del comando ASKTIME:

EXEC CICS ASKTIME
   [ABSTIME(WS-TIMESTAMP)]
END-EXEC.

FORMATTIME

FORMATTIME formatea la marca de tiempo en el formato requerido según las opciones, que pueden ser YYDDD, YYMMDD o YYDDMM para la fecha. DATESEP indica el separador para DATE al igual que la variable TIMESEP para TIME. A continuación se muestra la sintaxis del comando FORMATTIME:

EXEC CICS FORMATTIME
   ABSTIME(WS-TIMESTAMP)
   [YYDDD(WS-DATE)]
   [YYMMDD(WS-DATE)]
   [YYDDMM(WS-DATE)]
   [DATESEP(WS-DATE-SEP)]
   [TIME(WS-TIME)]
   [TIMESEP(WS-TIME-SEP)]
END-EXEC.

Hay diferentes blocs de notas disponibles en CICS para guardar datos o transferir los datos entre transacciones. Hay cinco áreas de almacenamiento proporcionadas por CICS, que discutiremos en este módulo.

COMAREA

COMMAREA se comporta como un bloc de notas que se puede utilizar para pasar datos de un programa a otro programa, ya sea dentro de la misma transacción o de diferentes transacciones. Debe definirse en la SECCIÓN LINKAGE usando el nombre DFHCOMMAREA.

Área de trabajo común

Cualquier transacción en la región CICS puede acceder al área de trabajo común y, por lo tanto, todas las transacciones del sistema que decidan utilizarla deben acordar el formato y el uso de la misma. Solo hay un CWA en toda la región CICS.

Área de trabajo de transacciones

El área de trabajo de transacción se utiliza para pasar datos entre los programas de aplicación que se ejecutan en la misma transacción. TWA existe solo por la duración de la transacción. Su tamaño se define en la tabla de control del programa.

Cola de almacenamiento temporal

La cola de almacenamiento temporal (TSQ) es una función proporcionada por el Programa de control de almacenamiento temporal (TSP).

  • Un TSQ es una cola de registros que pueden ser creados, leídos y eliminados por diferentes tareas o programas en la misma región CICS.

  • Se utiliza un identificador de cola para identificar TSQ.

  • Un registro dentro de una TSQ se identifica por la posición relativa conocida como número de artículo.

  • Los registros en TSQ permanecen accesibles hasta que se elimine explícitamente toda la TSQ.

  • Los registros en TSQ se pueden leer de forma secuencial o directa.

  • Las TSQ se pueden escribir en el almacenamiento principal o en el almacenamiento auxiliar en el DASD.

WRITEQ TS

Este comando se utiliza para agregar elementos a una TSQ existente. Además, podemos crear una nueva TSQ usando este comando. A continuación se muestra la sintaxis del comando WRITEQ TS:

Sintaxis

EXEC CICS WRITEQ TS
   QUEUE ('queue-name')
   FROM (queue-record)
   [LENGTH (queue-record-length)]
   [ITEM (item-number)]
   [REWRITE]
   [MAIN /AUXILIARY]
END-EXEC.

A continuación se muestran los detalles de los parámetros utilizados en el comando WRITEQ TS:

  • La COLA se identifica por el nombre que se menciona en este parámetro.

  • Las opciones FROM y LENGTH se utilizan para especificar el registro que se va a escribir en la cola y su longitud.

  • Si se especifica la opción ELEMENTO, CICS asigna un número de artículo al registro en la cola y establece el área de datos proporcionada en esa opción en el número de artículo. Si el registro inicia una nueva cola, el número de artículo asignado es 1 y los números de artículo siguientes siguen secuencialmente.

  • La opción REWRITE se usa para actualizar un registro que ya está presente en la cola.

  • La opción MAIN / AUXILIARY se usa para almacenar registros en el almacenamiento principal o auxiliar. El valor predeterminado es AUXILIAR.

READQ TS

Este comando se utiliza para leer la cola de almacenamiento temporal. A continuación se muestra la sintaxis de READQ TS:

Sintaxis

EXEC CICS READQ TS
   QUEUE ('queue-name')
   INTO (queue-record)
   [LENGTH (queue-record-length)]
   [ITEM (item-number)]
   [NEXT]
END-EXEC.

DELETEQ TS

Este comando se utiliza para eliminar la cola de almacenamiento temporal. A continuación se muestra la sintaxis de DELETEQ TS:

Sintaxis

EXEC CICS DELETEQ TS
   QUEUE ('queue-name')
END-EXEC.

Cola de datos transitorios

La cola de datos transitorios es de naturaleza transitoria, ya que se puede crear y eliminar rápidamente. Solo permite acceso secuencial.

  • El contenido de la cola se puede leer solo una vez, ya que se destruye una vez que se realiza una lectura y de ahí el nombre Transitorio.

  • No se puede actualizar.

  • Requiere una entrada en DCT.

WRITEQ TD

Este comando se utiliza para escribir colas de datos transitorios y siempre se escriben en un archivo. A continuación se muestra la sintaxis del comando WRITEQ TD:

Sintaxis

EXEC CICS WRITEQ TD
   QUEUE ('queue-name')
   FROM (queue-record)
   [LENGTH (queue-record-length)]
END-EXEC.

READQ TD

Este comando se utiliza para leer la cola de datos transitorios. A continuación se muestra la sintaxis de READQ TD:

Sintaxis

EXEC CICS READQ TD
   QUEUE ('queue-name')
   INTO (queue-record)
   [LENGTH (queue-record-length)]
END-EXEC.

DELETEQ TD

Este comando se utiliza para eliminar la cola de datos transitorios. A continuación se muestra la sintaxis de DELETEQ TD:

Sintaxis

EXEC CICS DELETEQ TD
   QUEUE ('queue-name')
END-EXEC.

La comunicación mutua que tiene lugar entre dos o más sistemas se conoce como intercommunication.

Beneficios de la intercomunicación

Los importantes beneficios de la intercomunicación son los siguientes:

  • No necesitamos replicar los datos en todos los sistemas.

  • Los usuarios no necesitan tener conexiones a múltiples sistemas para acceder a los datos almacenados en ellos.

  • Mejora el rendimiento de la aplicación.

Terminologías básicas

Se debe tener conocimiento de la terminología básica utilizada en el sistema CICS. Los siguientes son los términos básicos:

Sistema local

Un sistema local es un sistema que inicia una solicitud de intercomunicación.

Recurso local

Un recurso local es un recurso que se encuentra en el sistema local.

Sistema Remoto

Un sistema remoto es un sistema que se inicia como resultado de una solicitud de intercomunicación.

Recurso remoto

Un recurso remoto es un recurso que se encuentra en el sistema remoto.

MVS Sysplex

MVS Sysplex es una configuración de varios sistemas operativos MVS. Funcionan como un solo sistema al compartir funciones y programas.

CICSPlex

CICSPlex se describe comúnmente como un conjunto de regiones CICS interconectadas que procesan la carga de trabajo del cliente. Un CICSPlex es un conjunto de regiones CICS interconectadas que poseen terminales, aplicaciones, recursos, etc.

Métodos de intercomunicación

Hay dos formas en las que CICS puede comunicarse con otros sistemas:

  • MRO - La operación de múltiples regiones se usa cuando dos regiones CICS dentro del mismo MVSPLEX necesitan comunicarse entre sí.

  • ISC - La comunicación entre sistemas se utiliza cuando una región CICS en un servidor LOCAL tiene que comunicarse con una región CICS en el servidor REMOTO.

Mientras trabaja con CICS, puede encontrar terminaciones anómalas. A continuación se muestran los códigos de finalización anormal comunes con su descripción que lo ayudarán a resolver los problemas:

No Señor Código y descripción
1

ASRA

Excepción de verificación de programa

2

AEI0

Error de ID de programa

3

AEI9

Condición de falla del mapa

4

AEIO

Llave duplicada

5

AEIN

Registro duplicado

6

AEID

Se alcanzó el final del archivo

7

AEIS

El archivo no está abierto

8

AEIP

Condición de solicitud no válida

9

AEY7

No autorizado para usar el recurso

10

APCT

Programa no encontrado

11

AFCA

No se encontró el conjunto de datos

12

AKCT

Error de tiempo de espera

13

ABM0

Mapa especificado no encontrado

14

AICA

Programa en bucle infinito

15

AAOW

Error de lógica interna