Está en la página 1de 37

CICS

Customer
Information
Control
System

1
12/10/20
OLTP (on-line transaction procesing)

SISTEMA OPERATIVO
CICS

FICHEROS
USUARIO PROGRAMAS
Y BASES
DE DATOS

Pág: 2 12/10/20
Módulos del CICS
KC SC
Control de Tareas Control de Memoria

PC TC
Control de Programas Control de terminales

FC TD
Control de Ficheros Control datos transitorios

TS
Control memoria BMS, IC, DC
temporal

Pág: 3 12/10/20
Tablas del CICS
TCT PCT
Terminales Transacciones->Programas

PPT FCT
Programas Ficheros

DCT
Fichero datos transitorios

Pág: 4 12/10/20
Conversación
 Conversacional:
1. Visualizar pantalla
2. Esperar respuesta
3. Recibir respuesta
4. Actualizar fichero
5. Visualizar un mensaje de O.K.
 No conversacional:
 Se realiza la tarea y el programa desaparece

Pág: 5 12/10/20
Pseudoconversacional
 Transacción 1:
1. Visualizar pantalla
 Transacción 2:
3. Recibir respuesta
4. Actualizar fichero
5. Visualizar un mensaje de O.K.

Pág: 6 12/10/20
Funcionamiento del CICS
TC PC
Librería

3
ACCT

Pág: 7 12/10/20
Funcionamiento del CICS
Librería
BMS PC

Menú

PROGRAMA
ACCT00
5 4

Pág: 8 12/10/20
Funcionamiento del CICS
Librería
BMS PC FC

Selección
Fichero

6 PROGRAMA
ACCT01
8 7

Pág: 9 12/10/20
Proceso de compilación
Informe
Traductor
Fuente
Traductor
Informe
Compilador
Fuente
traducido Compilador
Informe
Linkeditor

Objeto Linkeditor
Load
Pág: 10 12/10/20
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.

Pág: 11 12/10/20
Formato comandos CICS
EXEC CICS Caracteres no
RECEIVE MAP(‘A’) imprimibles
END-EXEC

MOVE ‘ ‘ TO DFHEIV0
MOVE ‘A’ TO DFHC0070
CALL ‘DFHEI1’ USING DFHEIV0 DFHC0070

El traductor se
encarga de definir las
variables necesarias en
nuestro programa
Pág: 12 12/10/20
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)

Pág: 13 12/10/20
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) ...

Pág: 14 12/10/20
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
Pág: 15 12/10/20
LINK
EXEC CICS
LINK
PROGRAM(‘nombre’)
[COMMAREA(identificador)]
[LENGTH(identificador)]
END-EXEC

Pág: 16 12/10/20
XCTL
EXEC CICS
XCTL
PROGRAM(‘nombre’)
[COMMAREA(identificador)]
[LENGTH(identificador)]
END-EXEC

Pág: 17 12/10/20
RETURN
EXEC CICS
RETURN
TRANSID(‘nombre’)
[COMMAREA(identificador)]
[LENGTH(identificador)]
END-EXEC

Pág: 18 12/10/20
START
EXEC CICS
START
TRANSID(‘nombre’)
[COMMAREA(identificador)]
[LENGTH(identificador)]
[INTERVAL(hhmmss) COMP-3]
END-EXEC

Pág: 19 12/10/20
RETRIEVE
EXEC CICS
RETRIEVE
[INTO(identificador)]
[LENGTH(identificador)]
END-EXEC

Pág: 20 12/10/20
Paso de datos
 El programa llamador:
 Define la COMMAREA en la WORKING-
STORAGE 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

Pág: 21 12/10/20
Control de terminales
EXEC CICS
SEND
MAP(‘nombre’)
[MAPSET(‘nombre’)]
[ERASE]
[FREEKB]
END-EXEC

EXEC CICS
RECEIVE
MAP(‘nombre’)
[MAPSET(‘nombre’)]
END-EXEC

Pág: 22 12/10/20
Lectura de ficheros
EXEC CICS
READ
DATASET(‘nombre’)
INTO(área-datos)
[LENGTH(long.)]
RIFLD(clave)
[KEYLENGTH(long.) GENERIC]
[GTEQ | EQUAL]
[UPDATE]
END-EXEC

Pág: 23 12/10/20
“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

Pág: 24 12/10/20
“Browse” de ficheros
EXEC CICS
READNEXT | READPREV
DATASET(‘nombre’)
INTO(área-datos)
[LENGTH(long.)]
RIFLD(clave)
[KEYLENGTH(long.)]
[REQID(número)]
END-EXEC

Pág: 25 12/10/20
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
Pág: 26 12/10/20
Borrado/liberación de registros
EXEC CICS
DELETE
DATASET(‘nombre’)
[RIFLD(clave)]
END-EXEC

EXEC CICS
UNLOCK
DATASET(‘nombre’)
END-EXEC

Pág: 27 12/10/20
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

Pág: 28 12/10/20
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
Pág: 29 12/10/20
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
Pág: 30 12/10/20
Colas TS (Temporary Storage)

EXEC CICS
DELETEQ TS
QUEUE(‘nombre’)
END-EXEC

Pág: 31 12/10/20
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
Pág: 32 12/10/20
Definición de mapas
MAP DFHMSD TYPE=MAP,MODE=INOUT,LANG=COBOL,CTRL=FREEKB, X
TIOAPFX=YES,STORAGE=AUTO

JK01 DFHMDI SIZE=(24,80)

TRANS DFHMDF POS=(01,01),ATTRB=(FSET,UNPROT,BRT), X


LENGTH=04
DFHMDF POS=(01,30),LENGTH=21,ATTRB=(ASKIP,BRT), X
INITIAL=' CAPTURA DE PEDIDOS '
ACTCODE DFHMDF POS=(03,09), X
ATTRB=(FSET,UNPROT,IC,BRT),LENGTH=03
HDGKEY2 DFHMDF POS=(04,68),ATTRB=(FSET,NUM,BRT), X
PICOUT='Z(7)',JUSTIFY=LEFT
DRKTRAN DFHMDF POS=(03,13),ATTRB=(FSET,ASKIP,DRK), X
LENGTH=04

Pág: 33 12/10/20
Transacciones CICS
 CEMT:
 Master Terminal Transaction
 CECI:
 Command Level Interpreter Transaction
 CEBR:
 Temporary Storage Browse Transaction
 CEDF:
 Command Level Execution Diagnostic Tansaction
 CEDA:
 Resource Definition on-line
Pág: 34 12/10/20
CEMT
FIle
PROGram
TDqueue ALL
CEMT Inquire
TErminal (nombre*)
TRAnsaction
TSqueue

Discard
Inquire
CEMT CEMT Set PRogram nombre NEwcopy
Perform
Set

Pág: 35 12/10/20
Ejercicio I
Definir el siguiente mapa:

----+----1----+----2----+----3----+----4----+----5----+
EJ01 MANTENIMIENTO EMPLEADOS
=======================
Acción.....: X (A,B,M,C)

Número.....: 999999
Nombre.....: XXXXXXXXXXXXXXXXXXXXXXXXX
Apellidos..: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Edad.......: 99
Ciudad.....: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Autonomía..: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Pág: 36 12/10/20
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.
Pág: 37 12/10/20

También podría gustarte