Mainframe Application Design

Anuncio
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
Descargar