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 salida3 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 mapset5 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 impresora6 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 protegido4 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 modificadoEtiqueta 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 |