Académique Documents
Professionnel Documents
Culture Documents
SISTEMA OPERATIVO
DATOS
CICS
DATOS
Fig. 1 el CICS puede manejar muchas terminales. Permite acceso a los datos
Con sus propios recursos.
Desde cierto punto de vista, el CICS podría verse como un sistema operativo
pequeño dentro del Sistema Operativo principal, su función sería la de administrar
los recursos necesarios para el manejo de un ambiente donde se corren programas
de aplicación incluyendo interfaces de archivos y bases de datos. Por ejemplo, el
CICS tiene su propio File Control Program y su propio Terminal Control Program.
El usuario final de una aplicación on-line dentro de una red, puede hacer diferentes
clases de operaciones con diferentes archivos (data sets) y observar los resultados
1
MANUAL DE CICS
de su operación en cuestión de segundos, mientras que la operación interna del
sistema DB/DC le pasa inadvertida; esta es la función de CICS.
PROG
TERM
INAL
1 1
CICS
TERM
PRO
INAL
2
G2 CI
DATOS 2
El CICS proporciona:
2
MANUAL DE CICS
Los programas en línea tienen ciertas características y necesidades en común las
principales serian:
El CICS utiliza sus propios servicios para administrar las necesidades de sus
transacciones, pero no duplica todos los servicios proporcionados por el Sistema
Operativo. Cuando lo considera apropiado, el CICS encarga al OS los servicios
necesarios.
Figura 3
3
MANUAL DE CICS
Si ocurre un error:
º Con un programa Batch, podemos reiniciar todo el proceso, o continuarlo desde
el punto de la falla. Esto se debe a que la secuencia de proceso es predecible
(porque esta basada en datos predefinidos), y porque los datos de entrada están
aun disponibles.
º Para el proceso on-line, los datos no están preparados con antelación, sino que se
van metiendo según los necesita la aplicación. Adicionalmente, los datos pueden
provenir de varios usuarios trabajando en forma concurrente.
En otras palabras, los datos no llegan a la aplicación en una secuencia predecible.
Prog. De aplicación
4
MANUAL DE CICS
• Por esta causa, el CICS tiene diferentes instrucciones dedicadas al envío y
recepción de datos desde terminales.
• La pantalla de una terminal, generalmente puede exhibir información en 24
renglones de 80 columnas cada uno, lo que equivale a 1920 posiciones.
• Cada una de estas 1920 posiciones se puede direccionar individualmente, lo
que quiere decir que el programa puede mandar datos a cualquier dirección de
la pantalla.
• Pero es más conveniente crear un formato especial de pantalla para enviar y
recibir los datos en paquetes completos.
• El formato especial de pantallas se llama MAPA.
• El CICS controla cada uno de los programas mientras se ejecuta una aplicación,
para esto, existe un grupo de variables dentro de un bloque llamado Bloque EIB
(Execute Interface Block).
• Son de particular importancia las variables EIBRESP y, EIBRESP2, que contienen
un código de respuesta a la ejecución del comando CICS ejecutado.
CONCEPTOS BASICOS
TRANSACCION (TRANSACTION)
En otras palabras, "Transacción" significa en CICS lo mismo que en el lenguaje normal: Un evento o
acto de negocio entre dos partes. En el proceso Batch, las transacciones de un mismo tipo, se agrupan y
se procesan en tanda (todas las actualizaciones del archivo de personal en un job, la lista de todas las
cuentas sobregiradas en otro job y, así, sucesivamente), en cambio, en un sistema on-line las
transacciones no se acomodan por tipo, sino que se hacen individualmente según van llegado (Una
actualización al archivo de personal, después una factura de algún cliente, ahora una orden de cobro,
etc.).
TAREA (TASK).
5
MANUAL DE CICS
El usuario le indica al CICS que tipo de transacción desea ejecutar, para esto usa
un identificador de transacción. Que por convención, debe ser una palabra de uno
a cuatro caracteres.
El CICS observa el identificador para saber cual programa debe invocar primero
para ejecutar el trabajo solicitado, después, crea un TASK para hacer el trabajo, y
transfiere el control al programa indicado. Entonces un Task es la ejecución de
algún tipo de transacción.
Un Task
NEW PASSWORD:
Una vez identificado, el usuario invoca la aplicación que desea utilizar, para esto
debe teclear el código de identificación de la transacción (El nombre de su
transacción) como principio de su solicitud.
7
MANUAL DE CICS
• El nombre de la transacción y, su asociación con el programa
• El nombre del programa asociado con la transacción.
• Los archivos que usara la transacción.
No es necesario que existan estos elementos, se pueden dar de alta en las tablas
los nombres de las transacciones, programas y archivos, después se crean los
archivos y programas.
PCT
FCT PPT
TRANSACC1
ARCHIVO1 -PROG1 PROG1
ARCHIVO2 PROG2
. . . TRANSACC2 ...
ARCHIVOn -
PROG2
Fig. 5
Tabla FCT Tabla PCT Tabla PPT
Para archivos Asociación transacción- Para nombres de programa
Programas
EXEC CICS
Nombre del comando CICS
[Opcion1...]
END-EXEC
EXEC CICS
SEND MAP (MAPA1)
MAPSET (MAPSET1)
ERASE
CURSOR
END-EXEC
Observe que:
IF EIBRESP = 0 THEN
CONTINUE
ELSE
MOVE ‘ ERROR EN COMANDO CICS ’ TO MENSAJE
PERFORM 900-ERROR
END-IF
Una aplicación escrita para CICS no es muy diferente de una aplicación escrita para
BATCH, por ejemplo los pasos típicos para una aplicación BATCH Tal como se
vieron en los apuntes de COBOL son:
Observe que:
• En una transacción Pseudoconversacional, el programa ocupa brevemente los
recursos del sistema, después termina
• El CICS se encarga de posteriormente de continuar o terminar el proceso, según
las opciones de RETURN
ASKTIME
ASKTIME
10
MANUAL DE CICS
[ABSTIME (Área de datos)]
EXEC CICS
ASKTIME
ABSTIME (WF-ABSTIME)
END-EXEC
Observe que:
• WF-ABSTIME es un campo numérico y que la fecha y la hora están en forma de
un numero entero.
• Conviene convertir la fecha y la hora a un formato más legible, Para formatear
la fecha numérica, en formato de texto más legible se usa el comando
FORMATTIME.
FORMATTIME
FORMATTIME
ABSTIME (Área de datos con la fecha en forma numérica)
DATESEP (Separador de fecha)
TIMESEP (Separador de hora)
Formato de la fecha (Área para fecha)
TIME (Área para la hora)
READ VSAM
READ
11
MANUAL DE CICS
FILE (Nombre de archivo)
INTO (Nombre de área)
[LENGTH (Longitud del área de datos)]
RIDFLD (Área de la clave)
[KEYLENGTH (Longitud del área de clave)]
[UPDATE]
Ejemplo 1: Leer el registro cuya clave es ‘D11’ del archivo ARCHIVO1 y, poner los
datos leídos en RG-ARCHIVO1
EXEC CICS
READ
FILE (‘ARCHIVO1’)
INTO (RG-ARCHIVO1)
LENGTH (WX-LON-DATOS)
RIDFLD (RD-CLAVE)
KEYLENGTH (WX-LON-CLAVE)
UPDATE <- UPDATE se usa para localizar el registro
END-EXEC
WRITE VSAM
WRITE
12
MANUAL DE CICS
FILE (Nombre de archivo)
FROM (Nombre de área)
[LENGTH (Longitud del área de datos)]
RIDFLD (Área de la clave)
[KEYLENGTH (Longitud del área de clave)]
Ejemplo 1: Grabar un nuevo registro con los datos contenidos en el área RG-
ARCHIVO1, cuya clave es ‘000324’ en el archivo ARCHIVO1 y, en caso de
clave duplicada, poner un mensaje en
WL-MENSAJE.
EXEC CICS
WRITE
FILE (‘ARCHIVO1’)
FROM (RG-ARCHIVO1)
LENGTH (WX-LON-DATOS)
RIDFLD (RD-CLAVE)
KEYLENGTH (WX-LON-CLAVE)
END-EXEC
IF EIBRESP = 0 THEN
CONTINUE
ELSE
IF EIBRESP = 14 THEN
MOVE ‘CLAVE DUPLICADA ‘ TO WL-MENSAJE
ELSE
PERFORM 990-ERROR
END-IF
END-IF
13
MANUAL DE CICS
REWRITE (VSAM)
REWRITE
FILE (Nombre de archivo)
FROM (Área de datos)
[LENGTH (Dato numérico)]
EXEC CICS
READ
FILE (‘EMPLEADO’)
INTO (RG-EMPLEADO)
RIDFLD (RD-EMPNO)
KEYLENGTH (WX-LON-CLAVE)
UPDATE
END-EXEC
EXEC CICS
REWRITE
FILE (‘EMPLEADO’)
FROM (RG-EMPLEADO)
END-EXEC
Observe que:
• En caso de no localizar el registro solicitado, el EIBRESP contiene el valor 13
(NOTFND)
14
MANUAL DE CICS
DELETE (VSAM)
DELETE
FILE (Nombre de archivo)
RIDFLD (Área de datos)
[KEYLENGTH (Dato numérico)]
[GENERIC [ NUMREC (Área de datos)] ]
Ejemplo 1: Borrar del archivo VSAM EMPLEADO, el registro identificado por la clave
RD-EMPNO
15
MANUAL DE CICS
KEYLENGTH (WX-LON-CLAVE)
UPDATE
END-EXEC
Transacción
Transacci
BE00
ón
BE01 TS
Otra
instancia de
la
transacción
BE00
16
MANUAL DE CICS
Ejemplo 1. Añadir un NUEVO registro en la cola ‘A000’, tomando los datos del área
WTS-REG, si no existe la cola, se crea, y se graba el primer registro, si la
cola ya existe, se graba el siguiente registro y la variable indicada en
ITEM, devuelve el núm. de ítem grabado.
EXEC CICS
WRITEQ TS
QUEUE (‘A000’)
FROM (WTS-REG)
ITEM (NUM-ITEM) <- la variable devuelve el núm. Del item
END-EXEC grabado
Ejemplo 2. Modificar registro (ITEM) núm. 4 de la cola ‘A000’, con los datos en del
área
17
MANUAL DE CICS
WTS-REG.
EXEC CICS
WRITEQ TS
QUEUE (‘A000’)
FROM (WTS-REG)
ITEM (NUM-ITEM) <- La variable numérica contiene 4
REWRITE <- La opción REWRITE indica que se modificara un ítem
END-EXEC previamente grabado
Observe que:
Ejemplo 1. Leer el registro (ITEM) numero 5 de la cola ‘A000’ y, poner los datos en
el área
WTS-REG.
MOVE 5 TO WC-NUMITEM
EXEC CICS
READQ TS
QUEUE (‘A000’)
INTO (WTS-REG)
ITEM (WC-NUMITEM)
END-EXEC
18
MANUAL DE CICS
Observe que:
Si no se localiza el registro de la TS solicitado, se genera la condición 26
(ITEMERR) en la variable
Ejemplo 2. Leer el siguiente registro (ITEM) de la cola ‘A000’ y, poner los datos en
el área
WTS-REG.
EXEC CICS
READQ TS
QUEUE (‘A000’)
INTO (WTS-REG)
NEXT
END-EXEC
Observe que:
• Al tratar de leer el registro siguiente al ultimo de la cola, se genera el código 26
(ITEMERR) en la variable EIBRESP.
• DELETEQ Borra todos los datos asociados con una cola de almacén temporal, y
libera el área ocupada por la cola.
• Es conveniente borrar los datos de TS (TEMPORARY STORAGE) en cuanto ya no
sean de utilidad para ahorrar espacio.
• El nombre de la cola debe ser el mismo que se utilizo en WRITEQ TS para crear
la QUEUE.
EXEC CICS
DELETEQ TS
QUEUE (WX-NOMBRE)
END-EXEC
IF EIBRESP = 0 THEN
CONTINUE
ELSE
MOVE ‘ERROR AL BORRAR LA COLA ‘ TO WL-MENSAJE
END-IF
19
MANUAL DE CICS
Observe que:
• En caso de un error, la variable EIBRESP contiene el código de error.
• El error más probable es equivocarse con el nombre de la cola.
• El código 44 (QIDERR) corresponde a un error en el nombre de la cola.
READPREV READNEXT
FILE (Nombre del archivo) FILE (Nombre del archivo)
INTO (Area de datos) INTO (Area de datos)
LENGTH (Longitud de datos) LENGTH (Longitud de datos)
RIDFLD (Area de clave) RIDFLD (Area de clave)
KEYLENGTH (Long. de clave) KEYLENGTH (Long. de clave)
[REQID (Numero de la revisión) [REQID (Numero de la revisión)
ENDBR
ENDBR
FILE (Nombre de archivo)
[REQID (Nombre de área) ]
EXEC CICS
STARTBR
FILE (‘EMPLEADO’)
RIDFLD (RD-EMPNO)
KEYLENGTH (WX-LON-CLAVE)
END-EXEC
EXEC CICS
READNEXT
FILE (‘EMPLEADO’)
21
MANUAL DE CICS
INTO (RG-EMPLEADO)
RIDFLD (RD-EMPNO)
KEYLENGTH (WX-LON-CLAVE)
END-EXEC
. . .
EXEC CICS
ENDBR
FILE (‘EMPLEADO’)
END-EXEC
Observe que:
• En caso de error, la variable EIBRESP contiene el código de error
• El error más probable en ENDBR es que no este iniciada una revisión con el
comando STARTBR
• El código de error 16 (INVREQ) corresponde al caso de una revisión no iniciada.
RECEIVE MAP
RECEIVE
MAP (Nombre de MAPA)
MAPSET (Nombre del MAPSET)
Ejemplo recibir el mapa IDENTIF que esta dentro del mapset IDENT01, que contiene
las variables USER y PASWORD.
22
MANUAL DE CICS
• En caso de un error en la recepción del mapa, se genera el código
36 (MAPFAIL) en EIBRESP
IF EIBRESP = 36 THEN
MOVE ‘ ERROR EN LA RECEPCION DEL MAPA ‘ TO WL-MENSAJE
END-IF
PERFORM 400-BUSCA-USUARIO
IF USUARIO-EXISTE THEN
CONTINUE
ELSE
MOVE ‘ ERROR EN NOMBRE DE USUARIO ‘ TO WL-MENSAJE
END-IF
Observe que:
• La variable USERI contiene el dato tecleado por el usuario dentro del campo
USER
SEND MAP
SEND
MAP (Nombre de MAPA)
MAPSET (Nombre del MAPSET)
[FROM (Nombre de área) ]
[LENGTH (Dato numérico) ]
[CURSOR (Posición del cursor)]
[ERASE ]
Ejemplo enviar el mapa IDENTIF que esta dentro del mapset IDENT01, que contiene
las variables USER y PASWORD.
MOVE WX-USUARIO TO USSERO <- USERO recibe los datos que se enviaran
IF EIBRESP = 36 THEN
MOVE ‘ ERROR EN EL ENVIO DEL MAPA ‘ TO WL-MENSAJE
END-IF
RETURN
RETURN
TRANSID (Nombre de la transacción )
COMMAREA (Nombre del área de comunicación)
LENGTH (Longitud del área de comunicación)
24
MANUAL DE CICS
• El área de comunicaciones indicada en COMMAREA debe estar declarada en la
LINKAGE SECTION su nombre debe ser DFHCOMMAREA y se utiliza como medio
de comunicación entre las Transacciones.
• Si no se usa TRANSID, el CICS da por terminada toda referencia a la ejecución
del programa.
Ejemplo1. Terminar el programa BE00A con RETURN. Cuando el CICS reciba una
comunicación de la terminal deberá ejecutar la transacción BE00, usando
como área de comunicaciones WX-COMMAREA.
EXEC CICS
RETURN
TRANSID (WX-TRANSID)
COMMAREA (WX-COMMAREA)
LENGTH (WX-LON-COMMAREA)
END-EXEC
EXEC CICS
RETURN
END-EXEC
XCTL
XCTL
PROGRAM (Nombre del Programa )
COMMAREA (Nombre del área de comunicación)
LENGTH (Longitud del área de comunicación)
25
MANUAL DE CICS
• El nuevo programa corre hasta su terminación que puede ser RETURN o XCTL.
• El área de comunicaciones debe estar declarada en la LINKAGE SECTION del
programa receptor, su nombre debe ser DFHCOMMAREA y se utiliza como medio
de comunicación entre los programas
EXEC CICS
XCTL
PROGRAM (WX-PROGRAM)
COMMAREA (WX-COMMAREA)
LENGTH (WX-LON-COMMAREA)
END-EXEC
EIBRESP = 27 (PGMIDERR)
TERMINALES
Una terminal es un teclado y una pantalla de vídeo que se utiliza tanto para
entrada como para salida de datos, y en ambos casos la pantalla (o más
propiamente la memoria que la representa), es el medio crucial de intercambio
entre la terminal y el procesador.
26
MANUAL DE CICS
Cuando el usuario pone en la pantalla los datos que desea procesar, usa una tecla
de atención para enviar estos datos al procesador.
PANTALLA DE LA 3270
Cada una de estas 1920 posiciones tiene una dirección individual, esto quiere decir
que un programa de aplicación puede enviar datos directamente a cualquiera de
estas posiciones en la pantalla, pero no es necesario dirigir cada carácter a su
posición individualmente, mas bien, dentro de un programa, se divide la pantalla
en campos (FIELDS).
TERMINALES
Columnas
27
MANUAL DE CICS
12 5 12
Renglones
1 -> CESN – SIGNON – Enter Userid and Password
2 ->
3 -> USERID: _
5 -> PASSWORD:
Hay varios campos en esta pantalla, sin embargo, solo cuatro de ellos están
exhibiendo datos; el primero esta en el renglón 1, columna 1 (Posición 1,1) y
contiene los datos:
28
MANUAL DE CICS
TERMINALES
Columnas
12 5 12
Renglones
1 -> CESN – SIGNON – Enter Userid and Password
2 ->
3 -> USERID:X___________________X_
Al final del tercer campo hay otro campo conocido como Tope (Stopper Field)
tampoco se puede ver, y su única función es impedir que el usuario teclee mas de
20 caracteres en el campo de identificación, esto se debe a que el principio de un
campo esta señalado en el buffer de datos de la pantalla pero el final no esta
señalado, un campo termina en realidad al principio del siguiente campo, por eso
el STOPPER se usa para limitar un campo de entrada. Lo importante del stopper es
que esta Protegido y cuando un usuario teclea una identificación de mas de 20
caracteres el cursor alcanza la posición del stopper y como esta protegido, se
bloquea el teclado y no puede teclear mas caracteres.
Después hay otros tres campos en las posiciones (5,5), (5,15), y (5,24) son como
los tres campos anteriores, el primero solicita la clave de acceso (PASSWORD) y
esta protegido, el segundo es un campo de entrada donde se debe teclear la clave
de acceso, esta desprotegido para teclear en él, y tiene un atributo un tanto
extraño, DARK o sea invisible esto quiere decir que los datos aunque se tecleen no
aparecen en la pantalla, esto se debe a que la Password se supone que es secreta
y ningún curioso que este viendo la pantalla debe enterarse de la clave, el tercer
campo es por supuesto un Stopper que limita el campo de Password a 8
caracteres.
TERMINALES
Columnas
12 5 12
Renglones
1 -> CESN – SIGNON – Enter Userid and Password
2 ->
3 -> USERID:X___________________X_
El byte de atributos también controla lo que puede hacer el teclado con el campo
de datos las opciones pueden ser:
Autoskip se usa para los campos de stopper así, si el campo anterior se llena de
información, el cursor pasa sobre el stopper y va al siguiente campo disponible, de
esta manera el usuario puede teclear continuamente llenando los campos y
pasando automáticamente al siguiente sin necesidad de usar las teclas de avance
de cursor.
30
MANUAL DE CICS
Cuando los datos de los campos se envían a la terminal, o se reciben de la
terminal, generalmente se arreglan en un formato de pantalla completa llamado
MAPA, aunque también pueden enviarse sin formatear, pero el envío de datos
Unformatted se usa solo para mensajes sencillos.
BMS
Apoyo básico para hacer mapas Basic Mapping Support (BMS)
Esta prestación del CICS permite crear un formato de datos llamado MAPA que
presenta una estructura definida por el programador, para el control de los datos
de entrada/salida de la pantalla.
El BMS simplifica el trabajo de programación pues mantiene independientes las
especificaciones de formato del hardware utilizado.
Esta pantalla se define por medio de MACROS de BMS que son una forma de
lenguaje ensamblador.
Una vez ensambladas estas macros, producen lo que llama el MAPA FISICO, que
contiene las instrucciones necesarias para uso del CICS.
• Crear la pantalla con todos los títulos y leyendas en las posiciones adecuadas.
• Los atributos necesarios para cada uno de los campos.
31
MANUAL DE CICS
• Integrar las variables de datos del programa de aplicación con los campos de la
pantalla, para pasar datos del programa a la pantalla y viceversa.
Ahora, veamos como se manejan las macros de BMS, que a pesar de parecer
complicadas, en realidad son muy sencillas.
• La Macro DFHMDF se usa para generar la definición de cada uno de los campos
del mapa BMS.
• Para cada campo de la pantalla se necesita una Macro DFHMDF como la
siguiente:
Nombre de Campo
Este es el nombre del campo tal como se usara en el programa (hasta cierto
punto). Cada campo que se va a leer o a escribir en la pantalla, debe llevar
nombre, pero los campos de títulos o letreros que son constantes, no necesitan
llevar nombre, tampoco los stopper necesitan nombre, pues no los vamos a leer o
escribir desde el programa. Los nombres de campo: Empiezan con letra, contienen
solo letras o números y deben ser de 1 a 7 caracteres.
DFHMDF
Este es el identificador de Macro, indica que se esta definiendo un campo.
POS= (Renglon,Columna)
32
MANUAL DE CICS
Esta es la posición en la pantalla donde va a aparecer el campo, solo hay que
recordar que un campo empieza con su byte de atributo, por lo tanto, si se escribe
POS=(1,1), el byte de atributo del campo estará en el renglón 1 y columna 1, y los
datos empiezan en la columna 2.
LENGTH=numero
Esta es la longitud del campo SIN contar el byte de atributo.
INITAL=’texto’
Este es el contenido inicial de un campo de texto, así se especifican los títulos y los
letreros de la pantalla que son independientes del programa.
ATTRB=(atributo1,atributo2...)
Estos son los atributos del campo.
Hay varias características diferentes que se pueden especificar:
La Cuarta característica, que se especifica como parte de los atributos, indica que
este es el campo donde se posicionara el cursor. La opción es:
IC Pone el cursor en la primera posición del campo, un solo campo es el que
puede tener el cursor, por lo tanto, si se pone IC en varios
campos, el cursor se posicionara en el ultimo.
Algunas terminales tienen pantalla de color, por lo tanto se pueden exhibir los
renglones de datos de algún color en especial.
COLOR=color
Indica cual será el color de los caracteres del campo, las opciones son:
WHITE Color blanco
BLUE Color azul
RED Color rojo
PINK Color rosa
GREEN Color verde
TURQUOISE Color turquesa
YELLOW Color amarillo
34
MANUAL DE CICS
Este parámetro solo funciona en caso de que la terminal tenga pantalla de color,
en otro caso; se ignora.
OCCURSS=número
Por medio de esta opción, se pueden declarar varios campos con una sola
definición, siempre y cuando, todos los campos tengan las mismas características,
y se encuentren adyacentes. Entonces, si se especifica un campo de longitud 10 en
la posición (4,1), ASKIP, NORM y OCCURSS=3, se tendrán 3 campos de longitud 10,
ASKIP y NORM en las posiciones (4,1), (4,12) y (4,23).
HILIGTH=REVERSE
Usando esta opción, se puede destacar un campo, invirtiendo el display de letras
claras sobre fondo obscuro convirtiéndolo a letras obscuras sobre fondo claro.
Ejemplo: crear las macros para definición del mapa de la pantalla de menú del
ejemplo. (Pág. 37)
PRINT NOGEN
*-------------------------
* DESCRIPCION DEL MAPSET
*-------------------------
BE00MS DFHMSD TYPE=&SYSPARM,MODE=INOUT,LANG=COBOL,TERM=3270, X
STORAGE=AUTO,CTRL=(FREEKB,FRSET),TIOAPFX=YES,EXTATT=YES
*----------------------
35
MANUAL DE CICS
* DESCRIPCION DEL MAPA
*----------------------
BE00M01 DFHMDI LINE=01,COLUMN=01,SIZE=(24,80)
*------------------------------------
* DESCRIPCION DE LOS CAMPOS DEL MAPA
*------------------------------------
DFHMDF POS=(01,30),LENGTH=17,ATTRB=ASKIP, X
COLOR=WHITE, X
HILIGHT=REVERSE, X
INITIAL='MENU DE OPCIONES'
DFHMDF POS=(01,48),LENGTH=01,ATTRB=ASKIP
DFHMDF POS=(02,01),LENGTH=08,ATTRB=ASKIP, X
COLOR=YELLOW, X
INITIAL='FECHA : '
FECHA DFHMDF POS=(02,08),LENGTH=10,ATTRB=ASKIP, X
COLOR=WHITE
DFHMDF POS=(02,19),LENGTH=01,ATTRB=ASKIP
DFHMDF POS=(02,61),LENGTH=07,ATTRB=ASKIP, X
COLOR=YELLOW, X
INITIAL='HORA : '
HORA DFHMDF POS=(02,70),LENGTH=08,ATTRB=ASKIP,COLOR=WHITE X
DFHMDF POS=(05,25),LENGTH=12,ATTRB=ASKIP,COLOR=TURQUOISE X
INITIAL='<1> CONSULTA'
DFHMDF POS=(07,25),LENGTH=08,ATTRB=ASKIP,COLOR=TURQUOISE, X
INITIAL='<2> BAJA'
DFHMDF POS=(09,25),LENGTH=08,ATTRB=ASKIP,COLOR=TURQUOISE, X
INITIAL='<3> ALTA'
DFHMDF POS=(11,25),LENGTH=10,ATTRB=ASKIP,COLOR=TURQUOISE, X
INITIAL='4. CAMBIO'
DFHMDF POS=(10,30),LENGTH=06,ATTRB=ASKIP,COLOR=GREEN, X
INITIAL='OPCION '
OPCION DFHMDF POS=(10,37),LENGTH=01,ATTRB=(IC,NUM,FSET)
DFHMDF POS=(10,39),LENGTH=01,ATTRB=ASKIP
DFHMDF POS=(12,05),LENGTH=11,ATTRB=ASKIP,COLOR=GREEN, X
INITIAL='<Esc> Terminar <Enter> Acepta Opción '
* TERMINA DESCRIPCION DEL MAPSET
DFHMSD TYPE=FINAL
END
36
MANUAL DE CICS
Nombre de mapa
Este es el nombre del mapa que se utilizara cuando se ejecute un
comando CICS para enviar o recibir un mapa, como los nombres de
campo, debe empezar con letra y no ser mayor de 7 caracteres.
DFHMDI
Este es el identificador de la macro, es obligatorio e indica que se va a
empezar un nuevo mapa.
SIZE=(Renglon,Columna)
Este parámetro indica el tamaño del mapa, el BMS permite que una
pantalla pueda estar formada de varios mapas, y cada mapa puede ser
de diferente tamaño, en este caso el mapa es del tamaño de la
pantalla estándar (24 Renglones, 80 columnas).
CTRL=(Control1,Control2,...)
Este es el parámetro de control de la pantalla y el teclado que se va a
enviar junto con los datos del mapa, puede ser cualquier combinación
de lo siguientes:
PRINT
Especifica que el mapa puede enviarse a una impresora, esto es, si se
piensa que es necesario enviar los datos para impresión, se usa PRINT.
ALARM
Este parámetro hace que suene la alarma audible de la terminal.(Este
parámetro solo funciona en caso de que la terminal tenga alarma
audible, en otro caso, se ignora).
Nombre de mapset
Este es el nombre del conjunto de mapas, se manejara dentro del
programa para indicar de donde provienen los mapas que se utilizaran,
deberá estar declarado en la definición de recursos del sistema, y el
nombre del mapset deberá empezar con letra y tener de 1 a 7
caracteres de longitud.
DFHMSD
Este es el identificador de la Macro, indica que empieza la definición de
un Mapset.
TYPE=tipo
TYPE gobierna el resultado del proceso de ensamble, que produce un
mapa fisico o un mapa simbólico según el tipo indicado, primero se
ensambla con TYPE=MAP, y se produce un mapa fisico que CICS usa
en el proceso, después se ensambla con TYPE=DSECT, y se produce un
mapa simbólico en lenguaje COBOL que se almacena en la biblioteca
de COPY para incluirlo en el programa de aplicación con una orden
COPY.
MODE=modo
El modo indica si el mapa se usara únicamente para entrada MODE=IN,
únicamente para salida MODE=OUT, o para ambas MODE=INOUT.
LANG=COBOL
Indica el lenguaje de la estructura del mapa simbólico (DSECT
Structure) que se copiara en el programa de aplicación, en este caso,
COBOL.
STORAGE=AUTO
Se usa para impedir que las definiciones del mapa simbólico se
encimen una sobre otra con redefiniciones del primer mapa, si se van a
usar varios mapas al mismo tiempo dentro de un programa de
aplicación, se omite STORAGE=AUTO.
CTRL=(Control1,Control2,...)
Este parámetro tiene el mismo significado que en la macro DFHMDI, la
diferencia es que si se pone en la DFHMSD afecta a todos los mapas
del Mapset que no tengan CTRL en su propia DFHMDI.
TIOAPFX=YES
Este parámetro se usa siempre en programas, y genera los doce
primeros caracteres de control del mapa simbólico.
DFHMSD TYPE=FINAL
END
Para terminar la definición de un MAPSET, se usa DFHMSD seguida de la
instrucción de ensamblador END.
38
MANUAL DE CICS
Por ejemplo:
39
MANUAL DE CICS
En nuestro caso, utilizaremos el COBOL, debido a su capacidad de manejar
archivos, tablas de DB2, y estructuras de datos.
• Enciende la terminal.
• Se identifica ante el sistema (SIGN ON).
• Limpia la pantalla (CLEAR).
• Teclea el nombre de la transacción de menú, que podría ser BE00.
• BE00 es, en este caso, el identificador de la transacción que necesita el CICS
para determinar que programa debe correr.
• Oprime la tecla enviar, y el CICS ejecuta la transacción de MENU.
TRANSACCION DE MENU
MENU DE OPCIONES
Fecha 25/05/2000 Hora 12:00
<1> CONSULTA
<2> BAJAS
<3> ALTAS
<4> MODIFICACIONES
Opción _
TRANSACCION DE CONSULTA
CONSULTA DE EMPLEADOS
Fecha 25/05/2000 Hora 12:00
EMPNO ______
SALARY ______
41
MANUAL DE CICS
TRANSACCION DE ALTAS
La transacción de altas debe presentar una pantalla capaz de recibir los datos de
un empleado nuevo, a continuación validar que la información tecleada sea
correcta, y posteriormente enviarla al archivo de empleados como un nuevo
registro.
ALTA DE EMPLEADOS
Fecha 26/05/2000 Hora 12:00
EMPNO ______
SALARY ______
Aquí en caso necesario, se debe indicar al operador que la clave de empleado debe
ser un numero mayor que cero, que ningún campo debe estar vacío, que las
fechas contengan información valida, que el campo de sexo sea M o F, que el
42
MANUAL DE CICS
salario no sea 0 o mayor de 99999, es decir, se requiere validar los datos, para eso
se asigna una tecla especial (Enter).
EMPNO ______
SALARY ______
43
MANUAL DE CICS
EMPNO ______
SALARY ______
44
MANUAL DE CICS
Adicionalmente a los mensajes de error, se debe informar al usuario si la baja se
efectúo o no correctamente.
Una aplicación escrita para CICS no es muy diferente de una aplicación escrita para
BATCH, por ejemplo los pasos típicos para una aplicación BATCH Tal como se
vieron en los apuntes de COBOL son:
Observe que:
• En una transacción Pseudoconversacional, el programa ocupa brevemente los
recursos del sistema, después termina
• El CICS se encarga de posteriormente de continuar o terminar el proceso, según
las opciones de RETURN
Nº CONDITION DESCRIPCION
00 NORMAL Ejecución correcta de la operación
01 ERROR Error sin clasificación.
02 RDATT El operador oprimió tecla ATTN en lugar de RETURN o RECEIVE
03 WRBRK Operador Interrumpió SEND MAP oprimiendo tecla ATTN .
04 EOF En RECEIVE y terminal 3735 fin archivo.
05 EODS En RECEIVE MAP no se reciben datos.
06 EOC En RECEIVE MAP se recibe End Of Chain.
07 INBFMH Se recibió Function Management Header.
08 ENDINPT Se recibió End Of Input Indicator
09 NONVAL Nombre de Programa no es Valido.
10 NOSTART No Inicializa el Programa de Aplicación.
11 TERMIDERR Nombre de Terminal no Existe en TCT.
12 FILENOTFOUND El Archivo no Existe en la FCT(RESP2=01)
13 NOTFND No existe el Registro (RESP2=80) READ, DELETE, STARTBR
14 DUPREC El Registro ya Existe(WRITE,REWRITE).
15 DUPKEY Varios Registros con la Misma Clave(READ)
16 INVREQ REWRITE sin READ UPDATE –0- READ No esta de acuerdo a FCT
17 IOERR Error de Hardware (Dañado el disco)
18 NOSPACE No hay Espacio en Disco para Nuevos Registros.
19 NOTOPEN Archivo Ocupado Por otra Transacción. o cerrado
20 ENDFILE Fin de Archivo (READNEXT,READPREV).
21 ILLOGIC Error no Catalogado Ver RESP2 Pág. 311.
22 LENGERR Longitud de Registro Diferente de LENGTH.
23 QZERO La QUEUE esta Vacía (READQ TD).
24 SIGNAL Entrada de Control SIGNAL.
25 QBUSY La QUEUE esta ocupada por otro TASK.
46
MANUAL DE CICS
26 ITEMERR Número de ITEM no Grabado al (READQ TS,WRITE TS).
27 PGMIDERR El Programa o el Mapa no esta Declarado en la PPT.
28 TRANSIDERR La Transacción no esta Declarada en la PCT.
29 ENDDATA No hay mas datos para el Task, usando RETRIEVE
30 INVTSREQ No se Localiza.
31 EXPIRED Cuando un Comando Termina su duración, que no se Utiliza.
32 RETPAGE Ocurre Cuándo la Opción SET esta Especificada.
33 RTEFAIL Terminal no se encuentra Instalada, usando ROUTE.
34 RTESOME Terminal no recibe el Mensaje de ROUTE.
35 TSIOERR Error de Entrada/Salida en la TS.
36 MAPFAIL Recibe MAPA Vacío (Operador Oprimió Tecla CLEAR)
37 INVERRTERM Identificador de Terminal no es Valido en ROUTE.
38 INVMPSZ Cuando el MAPA es muy Grande para la Terminal(SEND RECIVE)
39 IGREQID Cuando REQID de SEND MAP es Diferente del REQID anterior.
40 OVERFLOW Los Datos del Mapa no Ajustan en la Página (SEND MAP).
41 INVLDC Es cuando la LDC no esta Incluida en la lista de LDC’s.
42 NOSTG El área Solicitada es Mayor Que el área Disponible.
43 JIDERR Sí el Identificador de JOURNAL no Existe.
44 QIDERR La QUEUE no Existe,(READQ TS).
45 NOJBUFSP Los BUFFER del JOURNAL Están Llenos.
46 DSSTAT El DESTINATION STATUS ha Cambiado (ISSUE RECEIVE).
47 SELNERR Error en la Selección del DESTID (ISSUE QUERY).
48 FUNCERR Error Durante la Ejecución de ISSUE QUERY.
49 UNEXPIN Error Inesperado en ISSUE QUERY o ISSUE RECEIVE
50 NOPASSBKRD No está presente el PASSBOOK en RECEIVE.
51 NOPASSBKWR No está presente el PASSBOOK en SEND.
53 SYSIDERR EL SYSID No está Definido en READ.
54 ISCINVREQ Falla en el Sistema Remoto RESP2=70
55 ENQBUSY El recurso Solicitado no está Disponible en ENQ.
56 ENVDEFERR RETRIEVE especifico una opción que no corresponde a START
57 IGREQCD Se ordeno SEND MAP después de SIGNAL con CHANGE DIRECTION.
58 SESSIONERR Session Invalido en ALLOCATE.
59 SYSBUSY No hay SESSION Disponible en ALLOCATE MAPPED.
60 SESSBUSY La session no se puede servir Inmediatamente en ALLOCATE.
61 NOTALLOC RECEIVE se envió por una Transacción generada por START
62 CBIDERR PROFILE de ALLOCATE no Existe.
63 INVEXITREQ No Localizada.
64 INVPARTNSET La Partición no es Valida en SEND PARTNSET.
65 INVPARTN La Partición no esta Definida en RECEIVE MAP o SEND MAP.
66 PARTNFAIL Operador insiste en Enviar a una Partición Invalida RECIVE.
69 USERIDERR Usuario Invalido en SIGNON.
70 NOTAUTH Usuario No Autorizado a esta Función.
72 SUPPRESSED Usuario no añadió Registro a la Tabla con (WRITE UMT).
81 TERMERR Error de Terminal.
82 ROLLEDBACK El Programa no Puede Actualizar y hace el ROLLBACK.
84 DISABLED El Archivo esta Deshabilitado (READ, WRITE).
87 OPENERR Error cuándo se ABRE, CIERRA o se ESRCIBE la Rutina DUMP.
94 LOADING La Tabla Solicitada por READ UPDATE se esta Cargando.
47
MANUAL DE CICS
48