CICS Febrero de 2008 CICS Customer Information Control System OLTP (on(on-line transaction procesing) SISTEMA OPERATIVO CICS USUARIO PROGRAMAS FICHEROS Y BASES DE DATOS Módulos del CICS KC SC Control de Tareas Control de Memoria PC TC Control de Programas Control de terminales FC Control de Ficheros TS Control memoria temporal TD Control datos transitorios BMS, IC, DC Tablas del CICS TCT PCT Terminales TransaccionesTransacciones>Programas PPT FCT Programas Ficheros DCT Fichero datos transitorios Conversación • Conversacional: 1. 2. 3. 4. 5. • Visualizar pantalla Esperar respuesta Recibir respuesta Actualizar fichero Visualizar un mensaje de O.K. No conversacional: – Se realiza la tarea y el programa desaparece Pseudoconversacional • Transacción 1: 1. Visualizar pantalla • Transacción 2: 3. Recibir respuesta 4. Actualizar fichero 5. Visualizar un mensaje de O.K. Funcionamiento del CICS TC PC Librería 2 3 ACCT 1 Funcionamiento del CICS BMS PC Librería 3 Menú PROGRAMA ACCT00 5 4 Funcionamiento del CICS BMS PC FC Librería Selección Fichero 6 8 PROGRAMA ACCT01 7 Proceso de compilación Fuente Traductor Informe Traductor Informe Compilador Fuente traducido Compilador Objeto Linkeditor Informe Linkeditor Load Restricciones programas CICS • No se pude utilizar: – La INPUT-OUTPUT SECTION dentro de la ENVIRONMENT DIVISION – La FILE SECTION dentro de la DATA DIVISION – Los verbos: • • • • • • • • • READ WRITE OPEN CLOSE ACCEPT DISPLAY TRACE SORT Etc. Formato comandos CICS EXEC CICS RECEIVE MAP(‘A’) END-EXEC Caracteres no imprimibles MOVE ‘ ‘ TO DFHEIV0 MOVE ‘A’ TO DFHC0070 CALL ‘DFHEI1’ USING DFHEIV0 DFHC0070 El traductor se encarga de definir las variables necesarias en nuestro programa Ficheros soportados • DAM (Direct Access Method) • VSAM (Virtual Storage Access Method) – KSDS (Key Sequenced Data Set) – ESDS (Entry Sequenced Data Set) – RRDS (Relative Record Data Set) Gestión de errores EXEC CICS HANDLE CONDITION DUPREC(párrafo) ERROR(párrafo) END-EXEC 01 C-RESP PIC S9(8) COMP. EXEC CICS RECEIVE MAP(‘A’) RESP(C-RESP) END-EXEC IF C-RESP = DFHRESP(MAPFAIL) ... Transferencia de control • Vía CALL – Tal y como se hacía en los programas “batch” • Vía LINK – Equivale a una PERFORM. El programa llamado se ejecuta y al terminar se devuelve el control a la siguiente instrucción • Vía XCTL – Equivale a un GOTO. El programa llamador se descarga de la memoria y se ejecuta el programa llamado • Vía RETURN (opción TRANSID) – Sólo puede emitir un RETURN con opción TRANSID un programa que devuelve control al CICS LINK EXEC CICS LINK PROGRAM(‘nombre’) [COMMAREA(identificador)] [LENGTH(identificador)] END-EXEC XCTL EXEC CICS XCTL PROGRAM(‘nombre’) [COMMAREA(identificador)] [LENGTH(identificador)] END-EXEC RETURN EXEC CICS RETURN TRANSID(‘nombre’) [COMMAREA(identificador)] [LENGTH(identificador)] END-EXEC START EXEC CICS START TRANSID(‘nombre’) [COMMAREA(identificador)] [LENGTH(identificador)] [INTERVAL(hhmmss) COMP-3] END-EXEC RETRIEVE EXEC CICS RETRIEVE [INTO(identificador)] [LENGTH(identificador)] END-EXEC Paso de datos • El programa llamador: – Define la COMMAREA en la WORKINGSTORAGE SECTION con cualquier nombre • El programa llamado: – Recibe los datos en un área de la LINKAGE SECTION que debe llamarse DFHCOMMAREA. – Puede determinar la longitud de este área a través de EIBCALEN • La COMMAREA se pasa por referencia Control de terminales EXEC CICS SEND MAP(‘nombre’) [MAPSET(‘nombre’)] [ERASE] [FREEKB] END-EXEC EXEC CICS RECEIVE MAP(‘nombre’) [MAPSET(‘nombre’)] END-EXEC Lectura de ficheros EXEC CICS READ DATASET(‘nombre’) INTO(área-datos) [LENGTH(long.)] RIFLD(clave) [KEYLENGTH(long.) GENERIC] [GTEQ | EQUAL] [UPDATE] END-EXEC “Browse” de ficheros EXEC CICS STARTBR | RESETBR DATASET(‘nombre’) RIFLD(clave) [REQID(número)] [KEYLENGTH(long.) GENERIC] [GTEQ | EQUAL] END-EXEC EXEC CICS ENDBR DATASET(‘nombre’) [REQID(número)] END-EXEC “Browse” de ficheros EXEC CICS READNEXT | READPREV DATASET(‘nombre’) INTO(área-datos) [LENGTH(long.)] RIFLD(clave) [KEYLENGTH(long.)] [REQID(número)] END-EXEC Escritura de ficheros EXEC CICS WRITE DATASET(‘nombre’) FROM(área-datos) [LENGTH(long.)] RIFLD(clave) [KEYLENGTH(long.)] END-EXEC EXEC CICS REWRITE DATASET(‘nombre’) FROM(área-datos) [LENGTH(long.)] END-EXEC Borrado/liberación de registros EXEC CICS DELETE DATASET(‘nombre’) [RIFLD(clave)] END-EXEC EXEC CICS UNLOCK DATASET(‘nombre’) END-EXEC Datos temporales • Datos transitorios – Definidos previamente – Sólo se leen una vez – Permiten el arranque de transacciones – Extrapartición – Intrapartición • Memoria temporal – Borrado explicito – Acceso secuencial o directo – Memoria o disco Colas TD (Transient Data) EXEC CICS WRITEQ TD QUEUE(‘nombre’) FROM(área-datos) [LENGTH(long.)] END-EXEC EXEC CICS READQ TD QUEUE(‘nombre’) INTO(área-datos) [LENGTH(long.)] END-EXEC EXEC CICS DELETEQ TD QUEUE(‘nombre’) END-EXEC Colas TS (Temporary Storage) EXEC CICS WRITEQ TS QUEUE(‘nombre’) FROM(área-datos) [LENGTH(long.)] [ITEM(área-datos) [REWRITE]] [MAIN | AUXILIARY] END-EXEC EXEC CICS READQ TS QUEUE(‘nombre’) INTO(área-datos) [LENGTH(long.)] NUMITEMS(área-datos) [ITEM(área-datos) | NEXT ] END-EXEC Colas TS (Temporary Storage) EXEC CICS DELETEQ TS QUEUE(‘nombre’) END-EXEC BMS (Basic Map Support) • Permite la definición de mapas para la visualización de datos formateados • Tres macros: – DFHMSD: define un “mapset” – DFHMDI: define un mapa – DFHMDF: define un campo • Genera un fichero con la definición a incluir en nuestro programa Definición de mapas MAP DFHMSD TYPE=MAP,MODE=INOUT,LANG=COBOL,CTRL=FREEKB, X TIOAPFX=YES,STORAGE=AUTO JK01 TRANS DFHMDI SIZE=(24,80) DFHMDF POS=(01,01),ATTRB=(FSET,UNPROT,BRT), LENGTH=04 DFHMDF POS=(01,30),LENGTH=21,ATTRB=(ASKIP,BRT), INITIAL=' CAPTURA DE PEDIDOS ' ACTCODE DFHMDF POS=(03,09), ATTRB=(FSET,UNPROT,IC,BRT),LENGTH=03 HDGKEY2 DFHMDF POS=(04,68),ATTRB=(FSET,NUM,BRT), PICOUT='Z(7)',JUSTIFY=LEFT DRKTRAN DFHMDF POS=(03,13),ATTRB=(FSET,ASKIP,DRK), LENGTH=04 X X X X X Transacciones CICS • CEMT: – Master Terminal Transaction • CECI: – Command Level Interpreter Transaction • CEBR: – Temporary Storage Browse Transaction • CEDF: – Command Level Execution Diagnostic Tansaction • CEDA: CEMT CEMT Inquire CEMT Discard Inquire Perform Set FIle PROGram TDqueue TErminal TRAnsaction TSqueue ALL (nombre*) CEMT Set PRogram nombre NEwcopy Ejercicio I Definir el siguiente mapa: ----+----1----+----2----+----3----+----4----+----5----+ EJ01 MANTENIMIENTO EMPLEADOS ======================= Acción.....: X (A,B,M,C) Número.....: Nombre.....: Apellidos..: Edad.......: Ciudad.....: Autonomía..: 999999 XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 99 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Ejercicio I Realizar el programa EJCICS01 de forma que muestre el mapa anterior: La primera vez con todos los campos en blanco y desbloqueados. Se verificará el código de acción, visualizando un mensaje de error, si el código es erróneo. Si el código seleccionado es A se verificará que se han tecleado todos los campos y que el número de empleado no existe ya en la tabla EMPINFO, si se han pasado las validaciones se dará de alta en la tabla y se volverá a visualizar el mapa con todos los campos desbloqueados. Si el código seleccionado es B se verificará que se ha tecleado el número de empleado y que existe en la tabla EMPINFO, si se han pasado las validaciones se eliminará de la tabla y se volverá a visualizar el mapa con todos los campos desbloqueados. Si el código seleccionado es M se verificará que se han tecleado todos los campos y que el número de empleado existe en la tabla EMPINFO, si se han pasado las validaciones se modificará en la tabla y se volverá a visualizar el mapa con todos los campos desbloqueados. Si el código seleccionado es C se verificará que se ha tecleado el número de empleado y que existe en la tabla EMPINFO, si se han pasado las validaciones visualizará el mapa con los datos de la tabla. 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 FIN DE MODULO 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 42