CICS Desarrollo de Aplicaciones CICS • Customer Information Control System • Producto de I.B.M. utilizado para el manejo de aplicaciones ON LINE • Plataforma en el Mainframe por la cual programas Cobol son capaces de realizar procesos transaccionales en una terminal Esquema de proceso Batch Esquema de Proceso On Line CICS/VTAM TERMINAL CICS/VTAM Definición de mapas y uso Concepto de terminal 3270 – Despliegue de datos en formato texto TECLEAR NOMBRE Y NO. POLIZA Constantes – Variables Todos los campos (constantes o variables) contienen el BYTE DE ATRIBUTO BMS • Basic Mapping Support • Simplifica la programación – Para la comunicación con terminales – En la presentación de información en éstas • Si quisiéramos enviar un mensaje a la terminal con el texto “HOLA AMIGOS” • Y que se presente en el renglón 12 y columna 1 • Deberá haber 880 caracteres en blanco antes del punto deseado BMS R -12 C -01 HOLA AMIGOS Blancos (880) HOLA AMIGOS Tendremos que armar un Data Stream: BMS Una alternativa – Utilizar caracteres de control CARACTERES DE CONTROL HOLA AMIGOS La segunda solución es la más viable El programador tendría que colocar éstos caracteres de control Solución real: BMS BMS • Actúa como interfaz entre el programa aplicativo y el controlador de comunicaciones con terminales • Permite se escriban los programas de aplicación sin importar las características de la red corporativa • Genera dos tipos de Mapas – Físicos – Simbólicos Mapa físico • Conjunto de postulados fuente • Describen el formato de despliegue de información • Incluye: – Longitud y localización del campo – Atributo de campo (protegido, brillante, etc.) – Constantes y campos de entrada/salida – Características de la terminal Mapa Físico ÞBANCO SANTANDER POLIZA MAPA ... ... ... ... ... ... ... ... ... ... ... ... *.................... NOMBRE *.............................. Mapa Simbólico • Etiquetas o nombres que el programador asigna a los campos • Constante o variables que se despliegan en la terminal • Se incluye en la Working-Storage Section • Comúnmente llamado Copybook Cobol • Se genera al momento de ensamblar las macros y siempre y cuando no se tengan errores • El programador tiene acceso a los campos: – Longitud del campo – Byte de atributo Mapa Simbólico Þ DSECT 1 2 1 2 A cada campo de la terminal, BMS le asigna un prefijo, como se muestra en la figura BMS Los mapas físicos se definen en CICS : – Codificados con macros de Ensamblador Los mapas simbólicos deberán estar en la biblioteca de COPYS de la aplicación Creación de mapas Los físicos y simbólicos se generan independientes al programa Ejemplo: 1. Se genera el mapa físico MAP Codificación de las Macros BIBLIOTECA MAPAS 2. Se genera el mapa simbólico DSECT ENSAMBLE Y LINK BIBLIOTECA COPYS Mapset INICIO DEL MAPSET DFHMSD..... MAPA 1 MAPA 2 MAPA 3 MAPA 4 ……………… --- --- --- --- --- --FIN DEL MAPSET DFHMDI ..... DFHMDF..... DFHMDF..... DFHMDF..... DFHMDI ..... DFHMDF..... DFHMDF..... DFHMDF..... DFHMDI ..... DFHMDF..... DFHMDF..... DFHMDF..... DFHMDI ..... DFHMDF..... DFHMDF..... DFHMDF..... DFHMSD Macro DFHMSD Codificación – Principales parámetros NOMBRE DFHMSD TYPE = MODE = LANG = TERM = DSECT MAP FINAL Creación de Mapset SIMBOLICO Compila mapa Fin de descripción de Mapset IN OUT INOUT Uso solo display de entrada Uso solo display de salida Uso de entrada y salida ASM COBOL PL1 Tipo El programa que usará el mapa está escrito en: Assembler Cobol PL1 Emulación a terminal 3270 Macro DFHMDI Codificación – Principales parámetros NOMBRE DFHMDI SIZE = (línea, columna), (1 a 7 caracteres) LINE = nnn, Especifica líneas y columnas del mapa Define la posición inicial del mapa en la pantalla (de 1 a 240) COLUMN = nnn, Define la posición de izquierda a derecha en Pantalla de acuerdo al parámetro JUSTIFY (de 1 a 240) LEFT JUSTIFY = RIGTH Alinea el mapa a la izquierda o derecha de la pantalla. Default=LEFT. DATA = (Ver lámina anterior) FIELD Macro DFHMDI Codificación – – SIZE. Indica el tamaño de la pantalla dentro del Mapset La ubicación del mapa depende del parámetro JUSTIFY LEFT. ubicará la pantalla n posiciones después del inicio de la pantalla y hacia la izquierda RIGTH ubicará la pantalla n posiciones antes del final de la pantalla y hacia la derecha. Macro DFHMDF Codificación – Principales parámetros NOMBRE DFHMDF POS=(línea, columna) (1 a 7 caracteres Campo opcional) Posición relativa con respecto al mapa no a la pantalla, del byte de atributo. ASKIP, NUM, BRT, ATTRB= ( PROT, NORM, FSET, IC) UNPROT, DRK, Define características del campo INITIAL = ‘constantes’ Constante, título del campo LENGTH = 1 to 256 Longitud del campo PICIN = ´valor’ Genera picture para Cobol (*) PICOUT= ‘valor’ (*) Macro DFHMDF • El nombre de campo se usa de acuerdo al manejo de variables y constantes • Requerido para definir variables • Para constantes puede o no utilizarse • Los campos se deben definir en orden de arriba abajo y de izquierda a derecha • Algunos valores del parámetro ATTRIB • ASKIP. Provoca que el cursor salte automáticamente al siguiente campo • PROT. Define un campo protegido, no modificable en pantalla • UNPROT. Define un campo disponible para entrada de datos Macro DFHMDF Algunos valores del parámetro ATTRIB – – – – – – NUM. Define un campo numérico BRT. Campo visualizable en intensidad brillante NORM. Campo con brillantez normal DRK. Campo no desplegable (invisible) para efectos de seguridad IC. Coloca al inicio el cursor en la posición de éste campo FSET. Campo modificable por el operador Byte de atributo • Este byte siempre precede al campo. • Atributos que puede tener: – Protegido. El operador no puede teclear sobre él – Brillante. Despliegue del campo con mayor luminosidad – Desprotegido. El operador puede modificar o dar entrada a datos – Normal. Despliegue del campo con brillantez normal – No desplegable. Los caracteres en el campo no son visibles, para datos confidenciales Comandos de CICS • Formatos de comandos y separadores de código de aplicación – Cobol EXEC CICS función opción (argumento) opción (argumento) END-EXEC. Formato comando receive • Utilizado para recibir información de un mapa y desde la terminal. – Principales parámetros EXEC CICS END-EXEC. RECEIVE MAP(„nombre mapa‟) MAPSET(„nombre mapset‟) INTO(I/O área) SET (pointer) Formato comando Send • Utilizado para enviar un mapa a la terminal – Principales parámetros EXEC CICS SEND MAP(‘nombre mapa’) MAPSET(‘nombre mapset’) DATAONLY Solo los datos son MAPONLY ALARM CURSOR ERASE FREEKB ERASEUP END-EXEC. enviados Solo el mapa físico es enviado Emite sonido la terminal Respeta última posición cursor Borra pantalla antes de enviar Libera el teclado Borra campos no protegidos Cobol/CICS Incluir mapa simbólico en programa Cobol – Ejemplo: IDENTIFICATION DIVISION. PROGRAM-ID. EJEMPLO. ... ... ... ENVIRONMENT DIVISION. DATA DIVISION. ... ... ... WORKING-STORAGE SECTION. … … … COPY MAPA1. PROCEDURE DIVISION. … … … … … .. EXEC CICS END EXEC. RECEIVE MAP(MAPA1) MAPSET(MSET1) MAPA1 …… …… …… Biblioteca de copys de aplicación – En el ejemplo anterior el contenido del módulo carga MAPA1 es movido al área I/O del programa MAPA1 – Esto al momento de ejecución, con la sentencia RECEIVE – Codificación completa en la página siguiente Codificación completa IDENTIFICATION DIVISION. PROGRAM-ID. EJEMPLO. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. COPY MAPA1 PROCEDURE DIVISION. EXEC CICS HANDLE CONDITION MAPFAIL (NO-HAY-MAPA) END-EXEC EXEC CICS RECEIVE MAP(MAPA1) MAPSET (MSET1) INTO (MAPA1I) END-EXEC. IF POLIZAI IS NOT NUMERIC MOVE ‘POLIZA ERRONEA’ TO MESSGO ELSE MOVE ‘POLIZA CORRECTA’ TO MESSG0. EXEC CICS SEND MAP(MAPA1) MAPSET(MSET1) FROM (MAPA10) END-EXEC. EXEC CICS RETURN END-EXEC. NO-HAY-MAPA. MOVE ‘ ‘ TO TRANA MOVE ‘PRUEBA’ TO TRANO EXEC CICS SEND MAP(MAPA1) MAPSET(MSET1) FROM(MAPA1O) END-EXEC. EXEC CICS RETURN END-EXEC. Handle Condition Especificación de condiciones de excepción Se presentan al momento de ejecución de una transacción Ejemplo de utilización en la siguiente página Handle Condition IDENTIFICATION DIVISION. ………… ENVIRONMENT DIVISION. ……………… DATA DIVISION. WORKING-STORAGE SECTION. ……………… PROCEDURE DIVISION. ... ... ... ... EXEC CICS HANDLE CONDITION NOTFND (CAMINO-B) DUPKEY (CAMINO-C) END-EXEC. ... ... ... ... ... ... ... ... ... ... ... ... EXEC CICS READ DATASET ( ‘FILETEST’) RIDFLD (LLAVE) END-EXEC. EXEC CICS WRITE DATASET (‘FILETEST’) RIDFLD (LLAVE) END-EXEC. ... ... ... ... ... ... ... ... ... ... ... ... FIN-DE-TRANSACCIÓN. ... ... ... ... ... ... CAMINO-B SECTION. ... ... ... ... ... ... ... ... ... CAMINO-C SECTION. ... ... ... ... ... ... ... ... ... Ejemplo de receive y Send IDENTIFICATION DIVISION. ... ... ... ... ... ... WORKING-STORAGE SECTION. 77 LONG-MENSAJE PIC S9(4) COMP VALUE 15. 01 IO-TERMINAL. 02 TRANSAC PIC X(4). 02 FILLER PIC X. 02 MENSAJE PIC X(11). ... ... ... PROCEDURE DIVISION. EXEC CICS HANDLE CONDITION LENGERR (050-LONG-ERROR) END EXEC. ... ... EXEC CICS RECEIVE INTO (IO-TERMINAL) LENGTH (LONG-MENSAJE) END EXEC. ... ... MOVE ‘HOLA’ TO TRANSAC. EXEC CICS SEND FROM (IO-TERMINAL) LENGTH (LONG-MENSAJE) END EXEC. 050-LONG-ERROR. ... ... ... ... Transacción • Transacción – Un programa Cobol se asocia a un recurso en CICS llamado TRANSACCION – Nombre del programa de 8 caracteres – Nombre de transacción de 4 caracteres – Ejemplo: • Nombre de programa ZM2IJG31 • Nombre de transacción TEST – CICS debe tener registrados estos nombres junto con sus características Tarea • Tarea – Unidad de trabajo en CICS – Un programa aplicativo corriendo bajo CICS TRANSACCION TRANSACCION TRANSACCION TAREA 1 TAREA 2 TAREA 3 APLICACION Programas •CICS proporciona –Comandos requeridos para la comunicación con las terminales –Control en la concurrencia de programas en ejecución y usuarios –Capacidad de acceso a datos de diversas estructuras (DB2, VSAM, IMS, DL/1, etc.) Precompilador de CICS • Compilador Cobol no entiende comandos de CICS • En la preparación para la ejecución de programas – Se ejecuta un paso previo de pre compilación – Revisión de sintaxis de los comandos de CICS Precompilador CICS COMANDO ANTES DE PASAR POR EL TRADUCTOR EXEC CICS HANDLE CONDITION MAPFAIL (500-ENVIA-MAPA) END EXEC. * * EXEC CICS * END EXEC. MOVE ‘ COMANDO DESPUES DE PASAR POR EL TRADUCTOR HANDLE CONDITION MAPFAIL (500-ENVIA-MAPA) ‘ TO DFHEIVO CALL ´DFHEIT´ USING DFHEIVO GO TO 500-ENVIA-MAPA DEPENDING ON DFHEIGDI Preparación de programas PROGRAMA FUENTE LISTADO DEL TRADUCTOR PRECOMPILADOR (TRADUCTOR COMANDOS) PROGRAMA FUENTE TRADUCIDO LISTADO DEL COMPILADOR COMPILADOR COBOL MODULO OBJETO LINKAGE EDITOR MODULO DE CARGA LISTADO LINKAGE EDITOR Comandos básicos de CICS Transferencia de control – Cuando en cualquier parte de un programa se requiere pasar el control de ejecución a otro – En forma temporal o definitiva – Temporal. Cuando un programa interrumpe su ejecución para que otro se ejecute. Al terminar regresa a la última instrucción en secuencia del programa llamador – Definitiva. Cuando termina la ejecución del programa llamado, no regresa al programa llamador. Comandos básicos de CICS Transferencia temporal PRGTEST Inicia proceso IDENTIFICATION DIVISION. ... ... ... ... PROCEDURE DIVISION. ... ... ... ... EXEC CICS LINK PROGRAM(NEXTPRG) END-EXEC. MOVE ... ... ... ... ... ... EXEC CICS RETURN END-EXEC. (Retorna control al CICS) NEXTPRG IDENTIFICATION DIVISION. ... ... ... ... PROCEDURE DIVISION. ... ... ... ... Cede control ... ... temporal ... ... ... ... ... ... ... ... EXEC CICS RETURN END-EXEC. Comandos básicos de CICS Transferencia Definitiva PROGA Inicia proceso PROGB IDENTIFICATION DIVISION. ... ... ... ... IDENTIFICATION DIVISION. ... ... ... ... PROCEDURE DIVISION. Cede control definitivo... ... ... ... EXEC CICS XCTL PROGRAM(PROGB) END-EXEC. PROCEDURE DIVISION. ... ... ... ... ... ... ... ... ... ... MOVE ... ... ... ... ... ... EXEC CICS RETURN END-EXEC. ... ... ... ... EXEC CICS RETURN END-EXEC. (Retorna control al CICS) Comandos básicos de CICS Transferencia de control – Si no existe el programa llamado en las tablas de CICS, tendremos un Abend – Es posible evitar éste Abend mediante el uso de la sentencia Handle Condition – Dentro del programa aplicativo: EXEC CICS HANDLE CONDITION (PGMIDERR(500-PROG-NO-ENCONTRADO) END-EXEC. ... ... ... ... 500-PROGRAMA-NO-ENCONTRADO. ... ... Área de comunicación Ejemplo: – Se requiere un programa PROGA cuya función será sumar 2 números y dejar el resultado en un campo – Que pueda ser llamado por cualquier otro programa – Se utiliza un área de comunicación llamada COMMAREA – Este bloque de datos especifica el área compartida por los programas – LENGTH especifica el número de bytes a transmitir Área de comunicación Ejemplo: PROGRAMA LLAMADOR · · WORKING-STORAGE SECTION. 01 CAMPOS. 02 NUM-A PIC 9(5). 02 NUM-B PIC 9(5). 02 RESUL PIC 9(6). · · · · PROCEDURE DIVISION. · · MOVE 6 TO NUM-A MOVE 127 TO NUM-B EXEC CICS LINK PROGRAM (PROGA) COMMAREA (CAMPOS) LENGTH (16) END EXEC. MOVE RESUL TO......... Ya afectado PROGRAMA LLAMADO (PROGA) WORKING-STORAGE SECTION. LINKAGE SECTION. 01 DFHCOMMAREA. 02 A PIC 9 (5). 02 B PIC 9 (5). 02 C PIC 9 (6). PROCEDURE DIVISION. ……… IF EIBCALEN > 0........OK .... .... .... OK. COMPUTE C = A + B EXEC CICS RETURN END-EXEC Comandos básicos de CICS • Comando RETURN – Regresa el control del proceso a CICS o al programa llamador – Una variante: El postulado TRANSID, define la próxima transacción a ejecutar – Ejemplo: EXEC CICS END-EXEC. RETURN TRANSID(„TRAN‟) – Al terminar este programa, el control del proceso pasa al CICS – Siempre que esto no llame a otro programa – Puede utilizar el postulado COMMAREA para pasar datos a otro programa EIB • Exec Interface Block • Bloque de información con datos útiles para el programador • Es generado por cada tarea iniciada • Principales campos • • • • • • • • EIBDATE. Fecha del día EIBTIME. Hora de inicio de la tarea EIBTASKN. Número de tarea EIBTRNID. Identificación de la transacción EIBTRMID. Número de terminal EIBAID. Identifica última tecla pulsada EIBCPOSN. Ultima posición del cursor en la pantalla EIBCALEN. Longitud área de comunicación (COMMAREA) Operación terminales • Los caracteres tecleados se transmiten al CPU por pulsar las teclas – Enter – Clear – Teclas función PF1 a PF24 – Program Attention PA1 Y PA2 – Clear • Se genera un Attention Identifier Byte (AIDBYTE) e indica cual tecla se pulsó Operación terminales • MDT (Modified Data Tag), característica que tienen los datos que da entrada o modifica el operador y viajan al CPU. • Input/Output Data Stream. Grupo de caracteres que son enviados o recibidos de la terminal. – Van acompañados de caracteres de control. Archivos y facilidades • Tipos de archivos – DB2 – VSAM – BDAM – SAM Archivos y facilidades • Archivos propios de CICS – TRANSIENT DATA (TD) – TEMPORARY STORAGE (TS) Transient Data (TD) •TRANSIENT DATA QUEUES deben ser leídas secuencialmente • Son depósitos de información para proceso futuro • TDQ pueden ser definidas e instaladas con RDO mientras CICS esta corriendo Transient Data (TD) • Son de dos tipos: – EXTRAPARTITION – INTRAPARTITION • Extrapartition. Procesadas fuera de la partición o región del CICS – Cada destino es un archivo físico – Definido como Input File u Output File en la DCT • Intrapartition. Procesadas dentro de la partición o región del CICS Transient Data (TD) • Para escribir en TDQ se utiliza el comando: EXEC CICS WRITEQ TD QUEUE(nombre) FROM(data-area) LENGTH(valor-dato) END EXEC. Indica escribir en TRANSIENT DATA Identifica el nombre de la cola área de datos donde se encuentra el registro a grabar Campo binario de 2 bytes que especifica la longitud del registro a grabar Comando delete (TD) • Utilizado para borrar colas Intrapartición • Libera la memoria asociada a ésta • Formato: EXEC CICS DELETE TD QUEUE (nombre-queue) END-EXEC. Temporary Storage (TS) • • • • Medio de almacenamiento de datos Para utilización posterior Similar a Transient Data Utilizado comúnmente para procesos de Data Transfer entre programas – Las tareas pueden dejar información en TEMPORARY STORAGE – TS puede ser consultado por la misma tarea o por otras distintas – La información de TS se escribe en forma de registros de longitud variable – El almacenamiento puede ser hecho en memoria o en dispositivo auxiliar (DISCO) Temporary Storage (TS) • A cada cola TS se le asigna un nombre de 8 caracteres, como identificador • Este nombre es asignado por el programa cuando el registro es escrito • Varias tareas pueden estar ejecutando el mismo programa – Se puede causar un conflicto pues todas las tareas tratarían de escribir el mismo registro en la TS – La identificación del registro debe manejarse en forma dinámica por cada tarea – Se asocia el identificador de TS con el número de terminal donde la tarea se encuentra activa Temporary Storage (TS) • Para escribir en TSQ se utiliza el comando: EXEC CICS WRITEQ TS QUEUE(nombre) FROM(data-area) LENGTH(valor-dato) ITEM(número) REWRITE MAIN/AUXILIARY memoria Indica escribir en TEMPORARY STORAGE Identifica el nombre de la cola área de datos del registro a grabar Campo binario de 2 bytes que especifica la longitud del registro a grabar Campo binario de 2 bytes que contiene el número de registro que va a ser agregado Indica una actualización Especifica si es grabado en principal o auxiliar, default AUXILIAR END EXEC. Temporary Storage (TS) • Para leer en TSQ se utiliza el comando: EXEC CICS READQ TS QUEUE(nombre) IN TO(data-area) LENGTH(valor-dato) ITEM(número)/NEXT END EXEC. Lectura de TEMPORARY STORAGE Identifica el nombre de la cola área donde dejará el registro leído Campo binario de 2 bytes que especifica la longitud del registro ITEM indica acceso directo a ese registro NEXT indica recuperación secuencial una vez que se ha iniciado lectura de un ítem Temporary Storage (TS) • Para borrar una TSQ se utiliza el comando: EXEC CICS END EXEC. DELETEQ TS Borra TEMPORARY STORAGE QUEUE(nombre) Identifica el nombre de la cola Transacciones propias de CICS CEDA, CEMT, CECI, CEBR, CEDF, CESN, CESF Todas las transacciones de CICS inician con CE o con C Las transacciones de usuario no pueden iniciar con C Depuración de Aplicaciones • EXECUTION DIAGNOSTIC FACILITY(EDF) – Intercepta la ejecución de los comandos de CICS en los programas de aplicación – Permite que veamos que pasa dentro del programa CICS – Cada comando se despliega antes y después de su ejecución – Nos permite interactuar con el programa de aplicación e inclusive indagar resultados de la ejecución • Invocamos EDF desde alguna terminal, mediante la instrucción CEDF • Seguido del nombre de la transacción que queremos depurar o indagar Menú Acceso CICS BIENVENIDOS AL TOR1 ALTAMIRA CICS TS V220 DESARROLLO 11:38:09 ******\ ****** \ ********\ ********\ **\ ** \\\\** **\ \ **\ ** \ \\ **\ ** \ **\ ** \ **\ ** \ **\ ** \ **\ ** \ ********\ ******** \ ******\ ****** \\ \\\\\\ ******\ ******\ ******\ ****** \ **\ ** \\\ **\ ** \ **\ ** \ **\ ** \ **\ ** \ **\ ** \ ******\ ****** \ ******\ ****** \ \\\\\\ ******\ ****** \ ********\ ********\ **\ ** \\\\** **\ \ **\ ** \ \\ **\ ** \ **\ ** \ **\ ** \ **\ ** \ **\ ** \ ********\ ******** \ ******\ ****** \\ \\\\\\ Sign on to CICS ******\ ****** \(R) ********\ ********\ **\ ** \\\\** **\ \ **\ ** \ \\ *******\ ******* \ *******\ ******* \ \\\\** **\ \ **\ ** \ **\ ** \ ********\ ******** \ ******\ ****** \\ \\\\\\ APPLID CICSDTA1 BIENVENIDOS AL TOR1 ALTAMIRA CICS TS V220 DESARROLLO Type your userid and password, then press ENTER: Userid . . . . Password . . . Language . . . New Password . . . DFHCE3520 Please type your userid. F3=Exit Groupid . . . Acceso a EDF CEDF THIS TERMINAL: EDF MODE ON Inmediatamente después de que se despliega el mensaje anterior, se pulsa la tecla CLEAR y se digita la transacción a depurar EDF • Intercepta la ejecución del programa • Al inicio del programa, muestra el bloque EIB • Al inicio de la ejecución de cada comando CICS, no de la ejecución de las instrucciones Cobol • EDF intercepta además la ejecución de las instrucciones de SQL, todas aquellas que contienen EXEC SQL • Al terminar la ejecución de los comandos mencionados a excepción de ABEND, XCTL y RETURN • Al terminar el programa ya sea de forma normal o por abnormal task termination Estructura De Pantalla • Todas las pantallas de EDF tienen el mismo formato general, pero cambia el contenido de cada una de ellas, dependiendo del punto donde el programa ha sido interrumpido • A continuación se muestra el formato para el caso de que el EDF ha interceptado un comando CICS SEND MAP Estructura De Pantalla TRANSACTION: HA00 PROGRAM: QC1CMSA TASK: 0016683 APPLID: CICSDM21 DISPLAY: 00 STATUS: COMMAND EXECUTION COMPLETE EXEC CICS SEND MAP 1 MAP ('QCRMPFK') FROM ('.........B......................................................'...) LENGTH (206) MAPSET ('QCRMLAE') 2 TERMINAL ACCUM OFFSET:X'001E16' RESPONSE: NORMAL LINE:00828 ENTER: CONTINUE PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: EIBFN=X'1804‘ EIBRESP=0 SWITCH HEX/CHAR WORKING STORAGE SCROLL FORWARD EIB DISPLAY 3 PF3 : PF6 : PF9 : PF12: END EDF SESSION USER DISPLAY STOP CONDITIONS ABEND USER TASK 4 Estructura De Pantalla Los círculos muestran: 1. 2. 3. 4. El encabezado. Contiene el identificador de la transacción que se está ejecutando, el nombre del programa que se está ejecutando, el número de tarea asignado por CICS la transacción, el número de pantalla que se está visualizando y el status de la ejecución del comando El cuerpo de la pantalla. Al inicio de la transacción muestra el contenido de la COMMAREA y algunos de los campos contenidos en el bloque EIB, en el caso de la pantalla mostrada anteriormente, muestra el comando a ejecutar (SEND), sus parámetros y valores actuales, así como las direcciones de memoria donde se encuentran Línea de mensaje. Despliega la dirección en donde se encuentra la instrucción actualmente en ejecución, el número de línea y el último valor del campo EIBFN, el resultado y código de respuesta de la ejecución del comando Menú de opciones. Muestra las diferentes teclas de control u de función aplicables al evento Estructura De Pantalla Dependiendo del punto de intercepción en el programa, la pantalla de EDF varía de contenido, Al inicio de la transacción y programa se muestra: TRANSACTION: HA00 PROGRAM: QC1CENT STATUS: PROGRAM INITIATION + EIBTIME EIBDATE EIBTRNID EIBTASKN EIBTRMID = = = = = 143245 0103211 'HA00' 16350 'X707' EIBCPOSN EIBCALEN EIBAID EIBFN EIBRCODE EIBDS EIBREQID = = = = = = = 4 0 X'7D' X'0000' X'000000000000' '........' '........' ENTER: CONTINUE PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: TASK: 0016350 APPLID: CICSDM21 DISPLAY: SWITCH HEX/CHAR WORKING STORAGE SCROLL FORWARD EIB DISPLAY 00 AT X'002000EA' AT X'002000EB' AT X'002000ED' PF3 : PF6 : PF9 : PF12: END EDF SESSION USER DISPLAY STOP CONDITIONS UNDEFINED Estructura De Pantalla • Se muestra la COMMAREA y el contenido de los principales campos del bloque EIB • En la figura anterior vemos el inicio de una transacción HA00, la cual ejecuta el programa QC1CENT y a la cual CICS le ha asignado la tarea 16350 Estructura De Pantalla TRANSACTION: HA00 PROGRAM: QC1CENT DISPLAY ON CONDITION:- TASK: 0016683 APPLID: CICSDM21 DISPLAY: COMMAND: EXEC CICS OFFSET: LINE NUMBER: CICS EXCEPTIONAL CONDITION: ANY CICS CONDITION TRANSACTION ABEND NORMAL TASK TERMINATION ABNORMAL TASK TERMINATION DLI ERROR STATUS: ANY DLI ERROR STATUS ENTER: CURRENT DISPLAY PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : UNDEFINED PF10: UNDEFINED 00 X'......' ........ ERROR NO YES YES YES .. PF2 : PF5 : PF8 : PF11: UNDEFINED WORKING STORAGE UNDEFINED UNDEFINED PF3 : PF6 : PF9 : PF12: UNDEFINED USER DISPLAY UNDEFINED REMEMBER DISPLAY En éste panel, definimos si queremos que se detenga en algún comando de CICS en específico, en una dirección de ejecución del programa (OFFSET), en alguna línea del programa en específico o al presentarse alguna condición de excepción Working--Storage Working Para verificar los resultados de la ejecución de un programa, podemos cambiar hacia el panel que visualiza el contenido de la WORKING-STORAGE del programa mediante la tecla PF5 Ejemplo: TRANSACTION: HA00 PROGRAM: QC1CENT TASK: 0016683 APPLID: CICSDM21 DISPLAY: ADDRESS: 002000EA 002000E0 000000 7D00 00000000 ..........'..... 002000F0 000006 00000000 00000000 00000000 00000000 ................ 00200100 000016 00000040 40404040 40404000 00000000 ... ..... 00200110 000026 00000000 00000000 00000000 00000000 ................ 00200120 000036 00000000 00000000 00000000 00000000 ................ 00200130 000046 00000000 00000000 00000000 00000000 ................ 00200140 000056 1BC00008 00000000 00000000 00000000 .{.............. 00200150 000066 00000000 00000000 00000000 00000000 ................ 00200160 000076 00000000 00000000 00000000 00000000 ................ 00200170 000086 00000000 00000000 00000000 00000000 ................ 00200180 000096 00000000 00000000 00000000 00000000 ................ 00200190 0000A6 00000000 00000000 00000000 00000000 ................ 002001A0 0000B6 00000000 00000000 00000000 00000000 ................ 002001B0 0000C6 00000000 00000000 00000000 00000000 ................ 002001C0 0000D6 00000000 00000000 00000000 00000000 ................ 002001D0 0000E6 00000000 00000000 00000000 00000000 ................ ENTER: CURRENT DISPLAY PF1 : UNDEFINED PF4 : EIB DISPLAY PF7 : SCROLL BACK HALF PF10: SCROLL BACK FULL PF2 : PF5 : PF8 : PF11: BROWSE INVOKE SCROLL SCROLL TEMP STORAGE CECI FORWARD HALF FORWARD FULL PF3 : PF6 : PF9 : PF12: UNDEFINED USER DISPLAY UNDEFINED REMEMBER DISPLAY 00 Working--Storage Working En la sección “ADDRESS” colocamos la dirección (en hexadecimal) de la posición de memoria que deseamos visualizar Por ejemplo, si queremos visualizar la sección de memoria donde se encuentra el valor del campo EIBAID, tomamos el número de la derecha (diapositiva 68 señalado con rojo) y lo colocamos en la sección “ADDRESS”, a continuación pulsamos Enter El resultado se ve en la figura anterior En otro caso, si queremos desplegar el contenido del bloque EIB, pulsamos la tecla PF4 En la página siguiente se muestra el resultado de ésta acción Ver EIB TRANSACTION: HA00 PROGRAM: QC1CENT STATUS: EXEC INTERFACE BLOCK + EIBTIME EIBDATE EIBTRNID EIBTASKN EIBTRMID = = = = = 143719 0103211 'HA00' 16683 'X707' EIBCPOSN EIBCALEN EIBAID EIBFN EIBRCODE EIBDS EIBREQID = = = = = = = 4 0 X'7D' X'0000' X'000000000000' '........' '........' ENTER: CURRENT DISPLAY PF1 : UNDEFINED PF4 : EIB DISPLAY PF7 : SCROLL BACK PF10: UNDEFINED PF2 : PF5 : PF8 : PF11: TASK: 0016683 APPLID: CICSDM21 DISPLAY: SWITCH HEX/CHAR WORKING STORAGE SCROLL FORWARD UNDEFINED 00 AT X'002000EA' AT X'002000EB' AT X'002000ED' PF3 : PF6 : PF9 : PF12: UNDEFINED USER DISPLAY UNDEFINED REMEMBER DISPLAY Avance en el programa Al pulsar la tecla Enter avanzamos hacia el siguiente comando de CICS, en este caso, veremos el inicio de la ejecución del comando: TRANSACTION: HA00 PROGRAM: QC1CENT TASK: 0016683 APPLID: CICSDM21 DISPLAY: STATUS: ABOUT TO EXECUTE COMMAND EXEC CICS HANDLE ABEND LABEL OFFSET:X'001A16' LINE:01334 ENTER: CONTINUE PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: EIBFN=X'0E0E' SWITCH HEX/CHAR WORKING STORAGE SCROLL FORWARD EIB DISPLAY PF3 : PF6 : PF9 : PF12: UNDEFINED USER DISPLAY STOP CONDITIONS ABEND USER TASK 00 Avance en el programa Un Enter más y veremos la ejecución del comando: TRANSACTION: HA00 PROGRAM: QC1CENT TASK: 0016683 APPLID: CICSDM21 DISPLAY: STATUS: COMMAND EXECUTION COMPLETE EXEC CICS HANDLE ABEND LABEL OFFSET:X'001A16' RESPONSE: NORMAL LINE:01334 ENTER: CONTINUE PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: 00 EIBFN=X'0E0E' EIBRESP=0 SWITCH HEX/CHAR WORKING STORAGE SCROLL FORWARD EIB DISPLAY PF3 : PF6 : PF9 : PF12: END EDF SESSION USER DISPLAY STOP CONDITIONS ABEND USER TASK Sucesivamente seguiremos los comandos de CICS dentro del programa Otras condiciones Es posible que detengamos la ejecución del programa hasta el siguiente comando LINK, para tal efecto configuramos la petición, en el panel PF9 “STOP CONDITIONS” y pulsamos la tecla PF4 para suprimir el despliegue de cualquier otro comando de CICS. EDF se detendrá en el siguiente comando LINK: TRANSACTION: HA00 PROGRAM: QC1CENT TASK: 0016683 APPLID: CICSDM21 DISPLAY: 00 STATUS: ABOUT TO EXECUTE COMMAND EXEC CICS LINK PROGRAM PROGRAM ('QC2CCAE ') COMMAREA ('......b..B...B.8.B.Q.B...AZ..A1..B.............. .. '...) LENGTH (1607) OFFSET:X'009CA8' LINE:05525 ENTER: CONTINUE PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: EIBFN=X'0E02' SWITCH HEX/CHAR WORKING STORAGE SCROLL FORWARD EIB DISPLAY PF3 : PF6 : PF9 : PF12: UNDEFINED USER DISPLAY STOP CONDITIONS ABEND USER TASK Otras condiciones Al pulsar la tecla Enter, se iniciará la ejecución del siguiente programa definido en el comando LINK (QC2CCAE), como se muestra en la siguiente figura: TRANSACTION: HA00 PROGRAM: QC2CCAE TASK: 0016683 APPLID: CICSDM21 DISPLAY: 00 STATUS: PROGRAM INITIATION COMMAREA = '......b..B...B.8.B.Q.B...AZ..A1..B.............. EIBTIME = 144548 EIBDATE = 0103211 EIBTRNID = 'HA00' EIBTASKN = 16683 EIBTRMID = 'X707' + EIBCPOSN EIBCALEN EIBAID EIBFN EIBRCODE EIBDS EIBREQID = = = = = = = 4 1607 X'7D' X'0E02' LINK X'000000000000' '........' '........' ENTER: CONTINUE PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: SWITCH HEX/CHAR WORKING STORAGE SCROLL FORWARD EIB DISPLAY '... AT X'002000EA' AT X'002000EB' AT X'002000ED' PF3 : PF6 : PF9 : PF12: END EDF SESSION USER DISPLAY STOP CONDITIONS UNDEFINED Otras condiciones Si tomamos atención en la figura anterior, veremos que en el renglón de la COMMAREA, a la derecha solo se visualizan una serie de puntos. Esto indica que los datos no se pueden visualizar en formato carácter. Sin embargo al pulsar la tecla PF2, aparecerán estos valores en hexadecimal. TRANSACTION: HA00 PROGRAM: QC2CCAE TASK: 0016683 APPLID: CICSDM21 DISPLAY: 00 STATUS: PROGRAM INITIATION COMMAREA = X'003268565141820C1BC275581BC275F81BC2'... AT X'1BC1E2D8' EIBTIME = X'0144548F' AT X'002000D0' EIBDATE = X'0103211F' AT X'002000D4' EIBTRNID = X'C8C1F0F0' AT X'002000D8' EIBTASKN = X'0016683C' AT X'002000DC' EIBTRMID = X'E7F7F0F7' AT X'002000E0' + EIBCPOSN EIBCALEN EIBAID EIBFN EIBRCODE EIBDS EIBREQID = = = = = = = X'0004' X'0647' X'7D' X'0E02' LINK X'000000000000' X'0000000000000000' X'0000000000000000' ENTER: CONTINUE PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: SWITCH HEX/CHAR WORKING STORAGE SCROLL FORWARD EIB DISPLAY AT AT AT AT AT AT AT PF3 : PF6 : PF9 : PF12: X'002000E6' X'002000E8' X'002000EA' X'002000EB' X'002000ED' X'002000F3' X'002000FB' END EDF SESSION USER DISPLAY STOP CONDITIONS UNDEFINED Otras condiciones Esto es particularmente útil cuando queremos visualizar el contenido de la COMMAREA al termino de un programa e inicio del siguiente. En la figura siguiente observamos otro ejemplo del inicio de un programa Cobol CICS. TRANSACTION: HA00 PROGRAM: HA2C0010 TASK: 0016683 APPLID: CICSDM21 DISPLAY: -02 STATUS: PROGRAM INITIATION COMMAREA = 'SX707NIDEEX28 ...........009.......000000000000000000'... EIBTIME = 144548 EIBDATE = 0103211 EIBTRNID = 'HA00' EIBTASKN = 16683 EIBTRMID = 'X707' + EIBCPOSN EIBCALEN EIBAID EIBFN EIBRCODE EIBDS EIBREQID = = = = = = = 4 3883 X'7D' X'0E02' LINK X'000000000000' '........' '........' ENTER: CURRENT DISPLAY PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: UNDEFINED WORKING STORAGE SCROLL FORWARD NEXT DISPLAY AT X'002000EA' AT X'002000EB' AT X'002000ED' PF3 : PF6 : PF9 : PF12: UNDEFINED USER DISPLAY STOP CONDITIONS UNDEFINED Ejecución de SQL EDF también atrapa las ejecuciones de los postulados de SQL: TRANSACTION: HA00 PROGRAM: HA2C0010 TASK: 0016683 APPLID: CICSDM21 DISPLAY: 00 STATUS: ABOUT TO EXECUTE COMMAND CALL TO RESOURCE MANAGER DSNCSQL EXEC SQL SELECT DBRM=QC2CSQ3, STMT=02347, SECT=00004 IVAR 001: TYPE=CHAR, LEN=00010, IND=000 AT X'1BC31F87' DATA=X'5C5C5C5C5C5C5C5C5C5C' LINE:UNKNOWN ENTER: CONTINUE PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: EIBFN=X'020A' UNDEFINED WORKING STORAGE SCROLL FORWARD EIB DISPLAY PF3 : PF6 : PF9 : PF12: UNDEFINED USER DISPLAY STOP CONDITIONS ABEND USER TASK Ejecución de SQL En la figura anterior se muestra el inicio de la ejecución de un postulado SQL, en la figura siguiente, se muestra el resultado de su ejecución TRANSACTION: HA00 PROGRAM: QC2CCAE TASK: 0016683 APPLID: CICSDM21 DISPLAY: 00 STATUS: COMMAND EXECUTION COMPLETE CALL TO RESOURCE MANAGER DSNCSQL EXEC SQL SELECT P.AUTH=MBVD , S.AUTH= PLAN=BVDHAPO, DBRM=QC2CSQ3, STMT=02347, SECT=00004 SQL COMMUNICATION AREA: SQLCABC = 136 AT X'1BC31480' SQLCODE = 000 AT X'1BC31484' SQLERRML = 000 AT X'1BC31488' SQLERRMC = '' AT X'1BC3148A' SQLERRP = 'DSN' AT X'1BC314D0' SQLERRD(1-6) = 000, 000, 00000, -1, 00000, 000 AT X'1BC314D8' SQLWARN(0-A) = '_ _ _ _ _ _ _ _ _ _ _' AT X'1BC314F0' SQLSTATE = 00000 AT X'1BC314FB' OVAR 001: TYPE=CHAR, LEN=00001, IND=000 AT X'1BC3151F' DATA=X'C1' LINE:UNKNOWN EIBFN=X'020A' ENTER: CONTINUE PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: UNDEFINED WORKING STORAGE SCROLL FORWARD EIB DISPLAY PF3 : PF6 : PF9 : PF12: END EDF SESSION USER DISPLAY STOP CONDITIONS ABEND USER TASK Comando Send Si EDF detiene la ejecución en el comando de CICS SEND: TRANSACTION: HA00 PROGRAM: QC1CMSA TASK: 0016683 APPLID: CICSDM21 DISPLAY: STATUS: ABOUT TO EXECUTE COMMAND EXEC CICS SEND MAP MAP ('HAM000E') FROM ('..............M11') LENGTH (17) MAPSET ('HAM000E') CURSOR (-1) TERMINAL ACCUM OFFSET:X'0020D4' LINE:00884 ENTER: CONTINUE PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: EIBFN=X'1804' SWITCH HEX/CHAR WORKING STORAGE SCROLL FORWARD EIB DISPLAY PF3 : PF6 : PF9 : PF12: UNDEFINED USER DISPLAY STOP CONDITIONS ABEND USER TASK 00 Comando Send Continuamos la ejecución del commando SEND: TRANSACTION: HA00 PROGRAM: QC1CMSA TASK: 0016683 APPLID: CICSDM21 DISPLAY: STATUS: COMMAND EXECUTION COMPLETE EXEC CICS SEND MAP MAP ('HAM000E') FROM ('..............M11') LENGTH (17) MAPSET ('HAM000E') CURSOR (-1) TERMINAL ACCUM OFFSET:X'0020D4' RESPONSE: NORMAL LINE:00884 ENTER: CONTINUE PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: EIBFN=X'1804' EIBRESP=0 SWITCH HEX/CHAR WORKING STORAGE SCROLL FORWARD EIB DISPLAY PF3 : PF6 : PF9 : PF12: END EDF SESSION USER DISPLAY STOP CONDITIONS ABEND USER TASK 00 Comando Send Podemos visualizar el mapa enviado, si pulsamos la tecla PF6 (USER DISPLAY), como se muestra a continuación 0074 X707 0172 IDEEX28 CONTABILIDAD GENERAL MENU CONTABILIDAD GENERAL DM21 30/07/03 HA00 14:45:42 En un segundo envío de pantalla, visualizaremos la figura de la página siguiente: TRANSACTION: HA00 PROGRAM: QC1CMSA TASK: 0016683 APPLID: CICSDM21 DISPLAY: 00 STATUS: COMMAND EXECUTION COMPLETE EXEC CICS SEND MAP MAP ('QCRMPFK') FROM ('.........B......................................................'...) LENGTH (206) MAPSET ('QCRMLAE') TERMINAL ACCUM OFFSET:X'001E16' RESPONSE: NORMAL LINE:00828 ENTER: CONTINUE PF1 : UNDEFINED PF4 : SUPPRESS DISPLAYS PF7 : SCROLL BACK PF10: PREVIOUS DISPLAY PF2 : PF5 : PF8 : PF11: EIBFN=X'1804' EIBRESP=0 SWITCH HEX/CHAR WORKING STORAGE SCROLL FORWARD EIB DISPLAY PF3 : PF6 : PF9 : PF12: END EDF SESSION USER DISPLAY STOP CONDITIONS ABEND USER TASK Comando Send Si pulsamos nuevamente la tecla PF6 (USER DISPLAY) ahora visualizaremos: 0074 X707 0172 IDEEX28 CONTABILIDAD GENERAL MENU CONTABILIDAD GENERAL DM21 30/07/03 HA00 14:45:42 1 - ENTRADA DE ASIENTOS 11 - ASIENTOS CONTABLES 2 - CONSULTA DE APUNTES 22 - POR CUENTA 25 - POR ASIENTO 26 - PARTIDAS PENDIENTES 3 - CONSULTA DE INFORMACION CONTABLE 31 - CONSULTA MAYOR MENSUAL 32 - CONSULTA MAYOR DIARIO 33 - CENTROS DEPENDIENTES 4 - ACCESO A TXNS CONTABILIDAD CENTRAL 40 - TRANSACCIONES CONT. CENTRAL OPCION: 11 Para terminar la ejecución de EDF, pulsamos la tecla PF3 y regresa al modo normal de ejecución del CICS FIN DE MODULO Derechos de autor • Este producto has sido elaborado por • Jorge Godínez Rodríguez. • Derechos reservados – Prohibida su reproducción parcial o total 87