0% encontró este documento útil (0 votos)
90 vistas125 páginas

Material CICS

El documento proporciona una introducción al sistema CICS, cubriendo conceptos fundamentales, la preparación de programas COBOL, la generación de mapas y el control de programas. Se detallan las estructuras de comandos de CICS, el manejo de errores, el acceso a datos y la unidad lógica de trabajo. Además, se describen las tablas internas que CICS utiliza para gestionar recursos y la diferencia entre programación conversacional y pseudo-conversacional.

Cargado por

Daniel Marquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
90 vistas125 páginas

Material CICS

El documento proporciona una introducción al sistema CICS, cubriendo conceptos fundamentales, la preparación de programas COBOL, la generación de mapas y el control de programas. Se detallan las estructuras de comandos de CICS, el manejo de errores, el acceso a datos y la unidad lógica de trabajo. Además, se describen las tablas internas que CICS utiliza para gestionar recursos y la diferencia entre programación conversacional y pseudo-conversacional.

Cargado por

Daniel Marquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

CICS CICS

Customer Information Control


System INTRODUCCION AL CICS - TEMARIO

• CONCEPTOS Y FACILIDADES
– Estructura del CICS; apreciación global de los componentes y Tablas de recursos
– Concepto de Programacion conversacional y Pseudo Conversacional
– El ciclo de un programa Bajo CICS
• PREPARACION DE UN PROGRAMA COBOL
– Estructura de Comandos de CICS dentro de un programa
– Codificación del programa fuente
– Proceso de Compilación
– Alta del Programa en el CICS
– Alta de la Transacción en el CICS
– NEW COPY
• GENERACION DE MAPAS – BMS
– Codificacion del Fuente BMS
– Proceso de Compilación
– Alta del MAPA en el CICS
– NEW COPY

CICS - 1
CICS CICS
Customer Information Control
System INTRODUCCION AL CICS - TEMARIO

• CONTROL DE PROGRAMAS
– COMMAREA
– LINK
– XCTL
– RETURN
– START/RETRIEVE
– EIB - EXEC INTERFASE BLOCK
• MANEJO DE ERRORES DEL PROGRAMA
– Testeo de Condiciones de Excepción en la ejecución de Comandos CICS
– HANDLE CONDITION
– RESP
– HANDLE AID
• COMANDOS PARA ACCESO A DATOS
– Obtencion de fecha
– Comandos para manejo de Mapas
– Acceso a Archivos VSAM
– Acceso a TS Temporary Storage
– Acceso a TD Transient Data

CICS - 2
CICS CICS
Customer Information Control
System INTRODUCCION AL CICS - TEMARIO

• UNIDAD LOGICA DE TRABAJO


– CONCEPTOS
– SYNCPOINT
– SYNCPOINT ROLLBACK
– ABEND

• DEMOSTRACION DE CEDF
• DEMOSTRACION DE CEMT CECI CEDA

CICS - 3
CICS CICS
Customer Information Control
System CONCEPTOS Y FACILIDADES

• CONCEPTOS Y FACILIDADES
– Estructura del CICS; apreciación global de los componentes y Tablas de recursos
– Concepto de Programacion conversacional y Pseudo Conversacional
– El ciclo de un programa Bajo CICS

CICS - 4
CICS CICS
Customer Information Control
System ESTRUCTURA DEL CICS

El CICS es una monitor de comunicaciones bajo el que se pueden desarrollar


‘TRANSACCIONES’ ON-Line en diversos Equipos (Maiframes, PC’s. etc-) y en diversas plataformas
(MVS, VSE, RS/6000, Etc.)
Los componentes básicos para implementar una aplicación de gestión son:

-Programas: Desarrollados bajo los lenguajes de programación COBOL, ASSEMBLER, PL/I,RPG, que
una vez compilado para CICS se podrá asociar a una Transacción CICS

-Mapas: Son las pantallas que permiten la interacción de la aplicación con el Usuario. Por medio de
estas se le permite el ingreso de datos o efectuar la visualización de un resultado

-Transacciones: Son las unidades lógicas de procesamiento. Los nombres de las transacciones son de
4 caracteres y son únicas en cada sesión de CICS. Hay una relación univoca transacción/programa.

-Archivos: Las estructuras de archivos que son soportadas por el CICS son VSAM (KSDS, ESDS, RRDS
)y BDAM.

-Bases de Datos: Existen diversos tipos de Bases de Datos soportadas, IMS/DB (Jerárquica) y DB2
(Relacional).

-Terminales: Son cualquier dispositivo que pueda conectarse al CICS por medio de un método de acceso
de telecomunicaciones o protocolos. Podemos incluir a Terminales (teclados y pantallas), Impresoras, y
computadoras en general.

CICS - 5
CICS CICS
Customer Information Control
System ESTRUCTURA DEL CICS

Para relacionar todos los componenetes basicos de nuestra aplicación, el CICS usa tablas
internas y que a su vez también las utiliza para mantener el control de todos sus recursos y actividades.
Algunas de las tablas que el CICS utiliza son las siguientes:

-FCT (File Control Table): Todos los archivos que deban ser accedidos por nuestras aplicaciones
deberán estar declarados con una entrada en esta tabla. La relación consiste en el nombre del DATASET
para el CICS que consta de 8(ocho) caracteres y el nombre real o label que este posee en el disco.
Otros atributos como la longitud de la clave, la longitud del registro y si es fijo o variable y las acciones que
se pueden efectuar sobre el archivo (lectura, grabación, actualización y delete) también estan contenidas
en esta tabla, como asi tambien un status sobre si el archivo esta abierto para el CICS y disponible.

XTAR01U OPE ENA REA UPD ADD BRO DEL


[Link]

CICS - 6
CICS CICS
Customer Information Control
System ESTRUCTURA DEL CICS
-TCT (Terminal Control Table): Por cada terminal asociada al CICS existe una entrada (TCTTE) que
describe el tipo de dispositivo y su dirección. Contiene también un pointer al Buffer que fue asignado para
esa terminal (TIOA Terminal i/o Area). En la tabla TCTTE el CICS establece una relación entre la tarea
asociada a cada terminal lo que posibilita que ante una respuesta del usuario sobre una terminal se
dispare la transaccion correcta. Esto se lleva a cabo por un pointer a la TCA Task Control Area y puede
leerse desde una aplicación consultando al EIB que se verá más adelante.

ACLI Ter(S205) Tra(CEMT) Pri( 000 ) Pag Ins Ati Tti

TRANSACCIONES TERMINALES

APR1 Net(IGKS205 ) Acq

CICS - 7
CICS CICS
Customer Information Control
System ESTRUCTURA DEL CICS

-PCT (Program Control Table): Establece la relacion Transaccion/programa. Tiene una entrada por
cada transacción a invocarse en el ambiente de CICS. Al ser solicitada la ejecución de una transaccion, el
CICS automáticamente le asigna un número único de tarea. Esta administración ejercida por el CICS nos
permite que una misma transacción pueda ser invocada desde una o distintas terminales repetidamente.
Las tareas simultaneas compartirán el mismo código ejecutable, archivos, bases de datos, pero no
compartiran las areas de memoria. Una vez accionada una transacción el CICS busca el programa
asociado en la PCT y lo cargará en memoria si es la primera vez que es invocado (por consulta a la PPT)
y lo asociará a la terminal que corresponda.

PROGRAMA

WORKING
ACLI TERM %001 TERM %001

DACLI01
TRANSACCIONES PROCEDURE

WORKING
ACLI TERM %154
TERM %154

CICS - 8
CICS CICS
Customer Information Control
System ESTRUCTURA DEL CICS

-PPT (Processing Program Table): Tiene una entrada por cada programa y mapa a ser utilizado.
Genera una asociacion programa/ubicación de memoria en que reside y que se establece con el manejo
de pointers .
Si el programa asociado esta ya en memoria, la PPT proporciona su ubicación, de lo contrario, lo carga
previamente.
A diferencia de la PCT en esta tabla tambien se incluyen los programas que no seran invocados por una
transacción (tal el caso de los mapas).

DACLI01
DACLI01 TERM %001 Y TERM %154 MODULO
PROGRAMA
EJECUTABLE

DIRECCION DEL
PROGRAMAS
EJECUTABLE

MACLI01
MACLI01
TERM %154 Y TERM %001 MODULO
MAPA
EJECUTABLE

CICS - 9
CICS CICS
Customer Information Control
System ESTRUCTURA DEL CICS

Todos los elementos mencionados precedentemente, programas, archivos, terminales, etc., pueden ser
modificados con la facilidad de RDO ( Resource definition online ) que se accede mediante el uso de la
transacción CEDA, que permite agregar, modificar e instalar dinámicamente todos los recursos necesarios
para las aplicaciones de negocio que corren bajo CICS.
Esto nos permite disponer rápidamente de los programas, mapas, etc, sin tener que esperar a que se
recarguen las tablas por la bajada y subida del CICS.

CICS - 10
CICS CICS
Customer Information Control
System ESTRUCTURA DEL CICS

Los administradores de CICS son los encargados del mantenimiento de estas tablas
(macros de Assembler) de relaciones entre transacciones/programas/archivos.

Terminal
Control Term Control Table
Progrmam TCT CICS
TERMINAL
REGION
Task
Prog Control Table
Control PCT

Program ProcProgram Table


Control PPT LIBRERÍA DE
PROGRAMAS
ARCHIVOS
DATABASES
Aplication
Program

File File Control Table


Control FCT

CICS - 11
CICS CICS
Customer Information Control
System PROGRAMACION CONVERSACIONAL

Este método de programación bajo el CICS no es el recomendable, ya que los recursos


asignados a la transacción quedan tomados hasta la finalización de la misma. El tiempo de
respuesta de la transacción es dependiente de la respuesta del usuario de la misma.

Enviar
Mapa

Nuestra aplicación
Recibir
Mapa
queda a la espera
que el operador pulse
ENTER / PF /
mal Validar ATENCION para
Mapa recibir el MAPA
bien

Grabar
ARCHIVOS
Archivos DATABASES

RETURN

CICS - 12
CICS CICS
Customer Information Control
System PROG. PSEUDO-CONVERSACIONAL

Este método de programación bajo el CICS es el más recomendable, ya que los recursos
quedan liberados al momento de terminar nuestra transacción y ésta no depende del tiempo
de respuesta del Usuario/Operador. Ejemplo de disparo serializado de transacciones.

A
Ciclo 0 Validar Ciclo 2
ciclo

Ciclo 1

Enviar Recibir Recibir


Mapa Mapa Mapa

mal bien Enviar


Establecer Validar Grabar
Mapa
ciclo 1 Mapa Archivos
Protegido

RETURN
Establecer
A A ARCHIVOS
ciclo 2 DATABASES

RETURN
CICS - 13
CICS CICS
Customer Information Control
System CICLO DE UN PROGRAMA BAJO CICS

La ejecución de un programa se inicia con el ingreso de una transacción (por el operador o


por otra transacción), el CICS determina que programa tiene asociada, lo busca en la
memoria, si no esta cargado lo carga, le entrega el control al programa y espera a que este
le devuelva el control al CICS o a otro programa, pero el ultimo de la cadena le devolverá el
control al CICS.

ACLI
CICS Transaccion
ASINCRONICA
DCLI01
(ACLI) DCLIPR
Enviar (APR1)
Recibir
Mapa LEER
TS
Actualizar TS
Archivos
SEND
ARCHIVOS TEXT
DATABASES Generar
reporte RETURN
Start APR1

RETURN

CICS - 14
CICS CICS
Customer Information Control
System PREPARACION DE UN PROGRAMA COBOL

• PREPARACION DE UN PROGRAMA COBOL


– Estructura de Comandos de CICS dentro de un programa
– Codificación del programa fuente
– Proceso de Compilación
– Alta del Programa en el CICS
– Alta de la Transacción en el CICS
– NEW COPY

CICS - 15
CICS CICS
Customer Information Control
System ESTRUCTURA DE COMANDOS CICS

Dentro la PROCEDURE DIVISION de un programa COBOL ON-LINE, las


llamadas a las funciones del CICS deberán tener siempre la siguiente estructura:

EXEC CICS
...
SINTAXIS: FUNCION, OPCION, ARGUMENTOS Y PARAMETROS
PROPIOS DEL COMANDO DE CICS
...
END-EXEC.

Al Mantener esta estructura, le estamos indicando al ‘TRANSLATOR’


(precompilador de comandos de CICS) donde comienza y termina el comando de CICS que
deberá traducir y resolver. Luego de convertido el comando, se entrega al compilador
COBOL un fuente que este comprende.

CICS - 16
CICS CICS
Customer Information Control
System ESTRUCTURA DE COMANDOS CICS

El formato en lineas generales de un comando CICS es EXECUTE CICS (o EXEC


CICS) seguido por el nombre de la funcion requerida, y la posibilidad de una o más
opciones, según lo siguiente:
EXEC CICS command option(arg).... END-EXEC. Donde:
Command: Describe la operación requerida (por ejemplo READ).
Option: Describe cualquiera de las tantas facilidades opcionales disponibles para cada
funcion requerida. Algunas opciones pueden estar seguidas por un argumento el que va
entre parentesis. El orden de los argumentos no es condicionante de error de sintaxis.
Arg: (abreviatura de argumento) es un valor tal como un "data-value" o "name”. Un
“data-value” puede ser tanto una variable como una constante. De esta forma un argumento
que envia datos al CICS se denomina “data-value”, mientras que un argumento que espera
recibir datos del CICS se denomina “data-area”. Algunos argumentos descriptos en un
comando como “data-area” pueden cumplir ambas caracteísticas (tal el caso de LENGTH).
En tal situación, deberemos asegurarnos que la “data-area” no se encuentre en una parte
protegida de la memoria. Si el argumento hace referencia a nombres externos al programa,
este deberá estar contenido en una variable de working o codificarlo entre apóstrofos (ws-
file) o (‘XCLI01U’).

CICS - 17
CICS CICS
Customer Information Control
System ESTRUCTURA DE COMANDOS CICS

Valores posibles para un Arg (argumento) en un programa Cobol:


“data-value” o “data-area” podrán ser reemplazados por cualquiera de las siguientes
opciones siempre que su contenido este acorde al tipo de dato esperado por el comando y
podran ser, por ejemplo, correspondientes a alguna de las siguientes definiciones:
- Halfword binary -- PIC S9(4) COMP
- Fullword binary -- PIC S9(8) COMP
- Character string -- PIC X(n) where "n" is the number of bytes.
Donde el tipo de dato no esta estrictamente especificado, la “data-area” bien podrá ser un
campo elemental o un item de grupo.
Ptr-ref (pointer-ref): nombre de una celda BLL (base locator for linkage)
Ptr-val (pointer-value): nombre de una celda BLL o un área de datos que contiene el
nombre de la celda BLL
Name: literal que referencia nombres externos al programa o un área de datos que
contenga un literal. Si es literal debe estar entre apóstrofos.
Label: un nombre de párrafo o de SECTION de COBOL (se efectua una derivación de
control incondicional).
Hhmmss: literal numérico o área de datos PIC S9(7) PACKED, que contiene la hora
expresada en +0hhmmss.

CICS - 18
CICS CICS
Customer Information Control
System ESTRUCTURA DE COMANDOS CICS

Ejemplo de comando READ:


Sintaxis: COMMAND
ARG
EXEC CICS READ
DATASET (‘filename’) (‘XCLI01U’) (WS-FILE)
OPTION [UPDATE]
RIDFIELD (data-area) (WS-KEY-CLIENTE)
[KEYLENGTH(data-value)[GENERIC] ] (WS-LEN-CLAVE)
[RBA : RRN]
{SET(pointer-ref) : INTO(data-area)} (WS-PTR-REG-CLI) (WS-REG-CLI)
[LENGTH(data-area)] (WS-LEN-REG-CLI)
[GTEG : EQUAL]
END-EXEC.

WORKING STORAGE SECTION.


77 WS-FILE PIC X(08) VALUE ‘XCLI01U’.
77 WS-LEN-CLAVE PIC S9(9) COMP.
77 WS-PTR-REG-CLI PIC S9(9) POINTER.
77 WS-LEN-REG-CLI PIC S9(9) COMP.
01 WS-REG-CLI.
05 WS-KEY-CLIENTE PIC X(19) VALUE ‘ ‘.
05 WS-RESTO-CLIENTE PIC X(1001) VALUE ‘ ‘.

CICS - 19
CICS CICS
Customer Information Control
System CODIFICACION DEL FUENTE

Diferencias en la organización del programa ON-LINE respecto de un BATCH:


*****************************************************************
IDENTIFICATION DIVISION. En Un ON-LINE no se necesitan
*****************************************************************
declarar sentencias SELECT, ya
PROGRAM-ID. DPTC001.
AUTHOR. EDUARDO A. PALMEYRO que los archivos son accedidos
DATE-WRITTEN. 01-10-96. por sentencias propias del
CICS como por ejemplo el
*****************************************************************
READ.
ENVIRONMENT DIVISION.
*****************************************************************
CONFIGURATION SECTION.
*---------------------* INPUT-OUTPUT SECTION.
SOURCE-COMPUTER. IBM-HOST.
OBJECT-COMPUTER. IBM-HOST. *---------------------*
FILE-CONTROL.
SPECIAL-NAMES. *------------*
DECIMAL-POINT IS COMMA.
SELECT XPTM01I ASSIGN TO XPTM01I
FILE STATUS FS-XPTM01I.
*****************************************************************
DATA DIVISION.
*****************************************************************
WORKING-STORAGE SECTION.
*-----------------------*
01 FILLER PIC X(20) VALUE '*-> WORKING'.

CICS - 20
CICS CICS
Customer Information Control
System CODIFICACION DEL FUENTE

Inclusion en nuestra WORKING STORAGE SECTION de los copys que se


encuentran disponibles para desarrollar programas bajo CICS:

WORKING-STORAGE SECTION.
*-----------------------*
01 FILLER PIC X(20) VALUE '*-> WORKING'.
*----------------------------------------------------------------*
*--> AREAS DE COPYS *
*----------------------------------------------------------------*
01 FILLER PIC X(20) VALUE '*-> MAPA MPTC001 '.
COPY MPTC001.
01 FILLER PIC X(20) VALUE '*-> DFHAID '.
COPY DFHAID.
01 FILLER PIC X(20) VALUE '*-> DFHBMSCA '.
COPY DFHBMSCA.
01 FILLER PIC X(20) VALUE '*-> ATRIBUTO '.
COPY ATRIBUTO.
01 FILLER PIC X(20) VALUE '*-> COM-COMMAREA '.
COPY WAPTCCOM.

CICS - 21
CICS CICS
Customer Information Control
System CODIFICACION DEL FUENTE
Este Copy contiene el diseño de registro del mapa asociado al
Inclusion en nuestra WORKING STORAGE
programa. SECTION
Esta asociación de los
se realiza porcopys que de
solo hecho seutilizarlo.
encuentran disponibles para desarrollar programas bajo CICS:
Incorporaremos tantos copys de mapas como sean necesarios
para completar el objetivo del programa y que hemos diseñado
bajo BMS o algun utilitario para generación de mapas (SDF).
WORKING-STORAGE SECTION.
*-----------------------*
01 FILLER PICEnX(20)
la mayoríaVALUE '*-> WORKING'.
de las instalaciones se determina un mapa por
programa. Tal es así que la nomenclatura del mapa y del
*----------------------------------------------------------------*
programa cambia solamente en la primera letra (o en la ultima,
*--> AREAS DE COPYS según la instalación) *
*----------------------------------------------------------------*
01 FILLER PICPrograma:
X(20) DPTC001
VALUE '*-> MAPA MPTC001 '.
COPY MPTC001. Mapa : MPTC001
01 FILLER PICLos
X(20)
campos VALUE
del copy '*->
siguenDFHAID '.
la siguiente convención:
COPY DFHAID.
Campos de input, terminados en I (NOMBREI)
01 FILLER PICCampos
X(20)de Output,
VALUEterminados
'*-> DFHBMSCA
en O (NOMBREO) '.
COPY DFHBMSCA. Campos de atributos, terminados en A (NOMBREA)
Campo para posicionar el cursor, terminados en L (NOMBREL)
01 FILLER PIC X(20) VALUE '*-> ATRIBUTO '.
COPY ATRIBUTO.
MOVE ‘PEPE’ TO NOMBREO.
01 FILLER PICMOVE
X(20)
–1 VALUE '*-> COM-COMMAREA
TO NOMBREL. '.
COPY WAPTCCOM.
MOVE UAHS TO NOMBREA.
PERFORM 5000-SEND-MAPA THRU FIN-5000.

CICS - 22
CICS CICS
Customer Information Control
System CODIFICACION DEL FUENTE
Este Copy contiene los valores para hacer posible la interpretación
Inclusion en nuestra WORKING STORAGE
de las SECTION
teclas pulsadas de operador
por usuario los copys que seaplicación.
de nuestra
encuentran disponibles para desarrollar programas bajo CICS:
El valor de cada tecla pulsado es devuelto por la EIB EXEC
INTERFASE BLOCK y dicho valor se compara con cada variable
WORKING-STORAGE SECTION. incluida en el copy DFHAID. Todos los campos de la EIB estan
*-----------------------* disponibles por nuestro programa sin que haya que declarar copy
01 FILLER PICalguna
X(20) VALUE '*-> WORKING'.
para ello.
*----------------------------------------------------------------*
*--> AREAS DE COPYS El campo de la EIB que nos devuelve la tecla pulsada es* EIBAID y
*----------------------------------------------------------------*
se evalua de la siguiente forma:
01 FILLER PIC X(20) VALUEEIBAID
EVALUATE '*-> MAPA MPTC001 '.
COPY MPTC001.
WHEN DFHENTER
01 FILLER PIC X(20) VALUEPERFORM
'*-> DFHAID
PFKEY-ENTER '.
COPY DFHAID. THRU FIN-PFKEY-ENTER
01 FILLER PIC X(20) WHEN
VALUEDFHPF2
'*-> DFHBMSCA '.
COPY DFHBMSCA. PERFORM PFKEY-PF2
01 FILLER PIC X(20) VALUE '*->THRUATRIBUTO
FIN-PFKEY-PF2 '.
COPY ATRIBUTO. WHEN OTHER
01 FILLER PIC X(20) VALUEPERFORM PFKEY-INVALIDA'.
'*-> COM-COMMAREA
COPY WAPTCCOM. THRU FIN-PFKEY-INVALIDA
END-EVALUATE.

CICS - 23
CICS CICS
Customer Information Control
System CODIFICACION DEL FUENTE

Inclusion en nuestra WORKING STORAGE SECTION de los copys que se


encuentran disponibles para desarrollar programas bajo CICS:

WORKING-STORAGE SECTION.
*-----------------------* Esta Copy contiene los valores para hacer posible la asignación de
01 FILLER PIC atributos
X(20) aVALUE '*->
los campos delWORKING'.
mapa con todas las combinaciones
posibles. (para mapas de pantallas como de impresión).
*----------------------------------------------------------------*
*--> AREAS DE COPYS *
*----------------------------------------------------------------*
La asignación de atributos al campo del mapa se efectúa moviendo
la variable deseada al campo del mapa terminado en ‘A’.
01 FILLER PIC X(20) VALUE '*-> MAPA MPTC001 '.
COPY MPTC001. MOVE DFHUNNOD TO NOMBREA
01 FILLER PIC X(20) VALUE '*-> DFHAID '.
COPY DFHAID. Este move hace que campo del mapa donde se muestra el nombre
asuma los siguientes atributos:
01 FILLER PIC X(20) VALUE '*-> DFHBMSCA '.
COPY DFHBMSCA. Unprotected, nondisplay, nonprint, nondetectable, MDT
01 FILLER PIC X(20) VALUE '*-> ATRIBUTO '.
COPY ATRIBUTO.
01 FILLER PIC X(20) VALUE '*-> COM-COMMAREA '.
COPY WAPTCCOM.

CICS - 24
CICS CICS
Customer Information Control
System CODIFICACION DEL FUENTE

Inclusion en nuestra WORKING STORAGE SECTION de los copys que se


encuentran disponibles para desarrollar programas bajo CICS:
Por supuesto, que la iniciativa en cada ‘instalación’ ha provocado sus propias
definiciones de atributos y a titulo de ejemplo de los atributos mas utilizados
WORKING-STORAGE [Link] los mapas de pantalla se pueden visualizar los siguientes valores en esta
*-----------------------*copy desarrollada a tal efecto.
01 FILLER PIC X(20) VALUE '*-> WORKING'.
*---------------------------------------------------------------*
*----------------------------------------------------------------*
* 1RA LETRA: P - CAMPO PROTEGIDO *
*--> AREAS DE COPYS * U - CAMPO DESPROTEGIDO * *
*----------------------------------------------------------------*
* 2DA LETRA: A - CAMPO ALFABETICO *
* N - CAMPO NUMERICO *
01 FILLER PIC X(20) VALUE '*-> MAPA MPTC001
* 3RA LETRA: L - CAMPO CON BRILLO NORMAL (LOW)
'. *
COPY MPTC001. * H - CAMPO CON BRILLO FUERTE (HIGH) *
* D - CAMPO DARK *
01 FILLER PIC X(20) VALUE '*-> DFHAID
* 4TA LETRA: S - CAMPO FSET
'. *
COPY DFHAID. * N - CAMPO NO FSET. *
01 FILLER *---------------------------------------------------------------*
PIC X(20) VALUE '*-> DFHBMSCA '.
COPY DFHBMSCA. 01 ATRIBUTOS.
03 UALS PIC X VALUE 'A'.
03 UAHS PIC X VALUE 'I'.
01 FILLER PIC03X(20)
UADS
VALUE '*-> ATRIBUTO
PIC X VALUE '('.
'.
COPY ATRIBUTO. 03 UNLS PIC X VALUE 'J'.
03 UNHS PIC X VALUE 'R'.
01 FILLER PIC03X(20)
UNDS
VALUE '*-> COM-COMMAREA
PIC X VALUE ')'.
'.
COPY WAPTCCOM. 03 PALS PIC X VALUE '1'.
03 PAHS PIC X VALUE '9'.
03 PADS PIC X VALUE QUOTE.

CICS - 25
CICS CICS
Customer Information Control
System CODIFICACION DEL FUENTE

Inclusion en nuestra WORKING STORAGE SECTION de los copys que se


Esta copy representa el diseño del area de datos común que vamos a
encuentran disponibles para desarrollar programas
utilizar bajo
entre dos o másCICS:
programas de nuestra aplicación. Se refiere al
copy del la Commarea (Common area).
Los programas que utilicen Commarea como facilidad para
WORKING-STORAGE SECTION. intercomunicación de datos deberán formatearla tal como se espera que
*-----------------------* otro programa la reciba, de lo contrario estaremos pasando parámetros
01 FILLER PIC X(20) VALUE '*-> WORKING'.
que no se los podrá interpretar por formato invalido.
*----------------------------------------------------------------*
*--> AREAS DE COPYS 01 COM-COMMAREA. *
*----------------------------------------------------------------*
03 COM-SUCURSAL PIC 9(003).
01 FILLER PIC X(20) VALUE '*-> MAPA MPTC001
03 COM-NRO-CUENTA '.
PIC 9(007).
COPY MPTC001.
03 COM-TIPO-CUENTA PIC X(004).
01 FILLER PIC X(20) VALUE '*-> DFHAID '.
COPY DFHAID. Si nuestro programa utiliza TS (Temporary Storage) o TD (Transient
01 FILLER Data)X(20)
PIC como facilidades
VALUE de intercomunicacion
'*-> DFHBMSCA de datos,'.
también
COPY DFHBMSCA. deberemos incorporar sus copys o diseños de registro en nuestra
working.
01 FILLER PIC X(20) VALUE '*-> ATRIBUTO '.
COPY ATRIBUTO.
01 FILLER PIC X(20) VALUE '*-> COM-COMMAREA '.
COPY WAPTCCOM.

CICS - 26
CICS CICS
Customer Information Control
System CODIFICACION DEL FUENTE

Inclusion del area de comunicación COMMAREA (COMMON AREA) en la


LINKAGE SECTION:

WORKING-STORAGE SECTION.
*-----------------------*
01 FILLER PIC X(20) VALUE '*-> WORKING'.

LINKAGE SECTION.
******************
01 DFHCOMMAREA PIC X(17408).

******************************************************************
PROCEDURE DIVISION. Esta area definida en la Linkage Section nos permitirá
******************************************************************
recibir un area comun de datos que otro programa nos
*CUERPO PRINCIPAL DEL PROGRAMA.
envía.
PERFORM 100-INICIO
THRU 100-F-INICIO. El tamaño máximo de esta area varia con las posibilidades
de cada equipo.

El tamaño mínimo sera el requerido por nuestra aplicación


para efetuar el proceso en la forma esperada.

CICS - 27
CICS CICS
Customer Information Control
System CODIFICACION DEL FUENTE

Ejemplo de codificación de PROCEDURE DIVISION con testeo de recepción de


commarea y de un mapa. Se puede verificar la condición de MAPFAIL con el comando
HANDLE CONDITION para verificar si es primera vez o no.
******************************************************************
PROCEDURE DIVISION.
******************************************************************
IF EIBCALEN > 0
MOVE 'S' TO WS-HAY-COMMAREA
MOVE DFHCOMMAREA TO COM-COMMAREA
ELSE
MOVE ' ' TO WS-HAY-COMMAREA
INITIALIZE COM-COMMAREA
END-IF.
EXEC CICS
RECEIVE MAP ('MLTR001')
MAPSET ('MLTR001')
RESP (WS-RESP)
END-EXEC.
MOVE 2 TO C20-OPCION.
MOVE LENGTH OF COMMAREA-DSPT020 TO COM-LEN.
EXEC CICS LINK PROGRAM ('DSPT020')
COMMAREA (COMMAREA-DSPT020)
LENGTH (COM-LEN)
RESP (WS-RESP)
END-EXEC.

CICS - 28
CICS CICS
Customer Information Control
System PROCESO DE COMPILACION

FUENTE COBOL MAPA


CON SIMBOLICO En esta primera etapa se traducen por examen del código
EXEC CICS BMS fuente todos los comandos CICS (EXEC CICS / END EXEC)
TRANSLATOR
DE en sentencias CALL.
COMANDOS
CICS El Mapa BMS ya deberá estar compilado para dar inicio a la
compilacion del programa.

FUENTE COBOL
CON CALL’S

COMPILADOR
COBOL

INTERFASE INPUT AL
DFHECI LINKAGE EDITOR

LINKAGE MODULO
EDITOR OBJETO

CICS - 29
CICS CICS
Customer Information Control
System PROCESO DE COMPILACION

FUENTE COBOL MAPA


CON SIMBOLICO
EXEC CICS BMS
TRANSLATOR
DE
COMANDOS
CICS

FUENTE COBOL
CON CALL’S

En esta segunda etapa los CALL’s generados por la primera


COMPILADOR etapa son tratados igualmente que las sentencias nativas del
COBOL COBOL, por lo que se realiza una compilación de igual modo
que un fuente BATCH.

INTERFASE INPUT AL
DFHECI LINKAGE EDITOR

LINKAGE MODULO
EDITOR OBJETO

CICS - 30
CICS CICS
Customer Information Control
System PROCESO DE COMPILACION

FUENTE COBOL MAPA


CON SIMBOLICO
EXEC CICS BMS
TRANSLATOR
DE
COMANDOS
CICS

FUENTE COBOL
CON CALL’S

COMPILADOR
COBOL

INTERFASE INPUT AL
DFHECI LINKAGE EDITOR
El módulo objeto es LINK EDITADO de la
forma habitual vinculándose al programa
con el módulo de interfase DFHECI.
LINKAGE MODULO
El modulo ejecutable obtenido es
EDITOR EJECUTABLE almacenado en la librería de carga del CICS

CICS - 31
CICS CICS
Customer Information Control
System ALTA DEL PROGRAMA EN EL CICS

Una vez compilado nuestro programa deberemos darlo de alta en el CICS.


Para ello nos valdremos de la aplicación CEDA, que nos permitirá dar de alta el
programa, el mapa, archivos nuevos que requiere nuestra aplicación, etc.
Al CEDA solo pueden ingresar usuarios avanzados, por lo que en la mayoría de
las Instalaciones se autoriza su uso a administradores de CICS, con la transacción CEDC se
puede consultar el contenido de los grupos definidos en el CSD.
Programa Lenguaje Transacción Mapa
DLTR001 cobol DLT1 MLTR001
DLTR002 cobol DLT2 MLTR002
Si por el contrario, ya esta declarado nuestro programa en el CICS pero lo hemos
modificado por alguna razón, deberemos hacer un refresh del modulo de carga para que el
CICS tome la nueva versión del programa con la transaccion CEMT.
IMPORTANTE: Las versiones de los programas permanecerán congeladas para el CICS
hasta que se levante de nuevo el CICS o hasta que se le indique NEW COPY con la
transacción CEMT. (CEMT SET PROGRAM(DLTR001) NEWC)

CICS - 32
CICS CICS
Customer Information Control
System GENERACION DE MAPAS BMS

• GENERACION DE MAPAS – BMS


– Codificación del Fuente BMS
– Proceso de Compilación
– Alta del MAPA en el CICS
– NEW COPY

CICS - 33
CICS CICS
Customer Information Control
System BMS (BASIC MAPPING SUPPORT)

El BMS es una interfase entre el TCP y nuestros programas de aplicación. Nos


permite aislarnos de las características de una terminal a la hora de enviar o recibir la
información.
En la operación de enviar datos desde el programa hacia la terminal (de SALIDA),
el BMS toma los datos del area de trabajo del programa y los sitúa en las posiciones
correctas de la pantalla y le intercala los caracteres de control dependientes del harware
necesarios.
En la Operación de recibir datos provenientes de una terminal (de ENTRADA),
elimina los caracteres de control dependientes del hardware y distribuye los datos que
vienen en posiciones específicas del mapa en el area de trabajo del programa.

Esta interfase nos brinda una total independencia de los dispositivos de I/O
ya que nos permite escribir programas sin ocuparnos de las características físicas de las
terminales utilizadas por nuestra aplicación.

Por otra parte, nos brinda independencia de formatos, ya que nos olvidamos
al momento de la codificación del programa de situar los campos de datos en posiciones
específicas. El BMS se encarga de asociar el nombre de campo con la posición en la
pantalla.

CICS - 34
CICS CICS
Customer Information Control
System BMS (BASIC MAPPING SUPPORT)
MAPA
SIMBOLICO
01 MLTR001I. (WORKING)
02 FILLER PIC X(12).
02 TRAN1L COMP PIC S9(4).
02 TRAN1F PICTURE X.
02 FILLER REDEFINES TRAN1F.
03 TRAN1A PICTURE X.
02 TRAN1I PIC X(4).
02 TERML COMP PIC S9(4).
02 TERMF PICTURE X.
02 FILLER REDEFINES TERMF.
03 TERMA PICTURE X.
02 TERMI PIC X(4).

EXEC CICS
SEND MAP ('MLTR001')
MAPSET ('MLTR001')
VISUALIZACION DEL ERASE
MAPA FISICO
CURSOR (WS-CURSOR)
(TERMINAL)
END-EXEC.

CICS - 35
CICS CICS
Customer Information Control
System BMS (BASIC MAPPING SUPPORT)

MAPA FISICO:
Describe el Formato de la representacón de un tipo de terminal dada. Adopta la
forma de una tabla que contiene la siguiente información:
-Longitud y ubicación de los campos de datos
-Atributos de los campos de datos (Protegidos, brillantes, dark, etc.)
-Constantes (encabezamiento, descripciones)
-Características de las terminales

MAPA SIMBOLICO:
Define los campos de datos a ser accedidos por el programa de aplicación. El
mapa simbólico se copia en la memoria de trabajo del programa.
Cada campo, se descompone en subcampos a los que se adiciona un subfijo.
Veamos que sucede entonces con el campo NOMBRE:
NOMBREL Número de caracteres tipeados en NOMBRE (-1 posiciona el cursor)
NOMBREA Byte de atributo con las características de NOMBRE (Brillante)
NOMBREF Flag Byte. Generalmente en X’00’. Si NOMBRE fue borrado asume X’80’
NOMBREI Campo de Input. Si no se ingreso NOMBRE contendrá Low-Values.
NOMBREO Campo de Output. Si contiene Low-Values no se transmite a la terminal.

CICS - 36
CICS CICS
Customer Information Control
System CODIFICACION DEL FUENTE BMS

EDITANDO EL FUENTE DE UN MAPA BMS

CICS - 37
CICS CICS
Customer Information Control
System CODIFICACION DEL FUENTE BMS

COLUNMA 1 EDITANDO EL FUENTE DE UN PARAMETROS


MAPA BMS
Separados por comas.
SIMBOLO
Un blanco indica fin de parámetros
‘*’ INDICA
REM CODIGO DE
OPERACION COLUMNA 72
‘C’ Caracter de
Continuación

DEJAR AL MENOS 1
BLANCO

COLUMNA 16
Parametros Adicionales.
La linea a ser continuada
debe terminar con coma y
un caracter de
continuación el la columna
72.

CICS - 38
CICS CICS
Customer Information Control
System CODIFICACION DEL FUENTE BMS

NOMBRE EDITANDO EL FUENTE DE UN MAPA BMS


DEL
MAPSET
DFHMSD
DEFINE UN
MAPSET

NOMBRE DEL
MAPA DENTRO DFHMDI
DEL MAPSET DEFINE UN MAPA
DENTRO DEL
MAPSET

NOMBRE DFHMDF
DE DEFINE UN
CAMPO CAMPO DENTRO
DEL MAPA

CICS - 39
CICS CICS
Customer Information Control
System MACROS BMS

DFHMSD: (DEFINE UN CONJUNTO DE MAPAS – MAPSET)


Mapset DFHMSD TYPE={DSECT:MAP:FINAL:&SYSPARM},
CTRL=([FRSET],[FREEKB],[PRINT],[ALARM]),
TIOAPFX=YES,
MODE={IN:INOUT:OUT},
LANG={COBOL:PLI:ASM:RPG},
STORAGE={AUTO:BASE=name}

Por supuesto, Aquí vemos solo una pequeña visión de las opciones que soporta esta macro
de CICS.
Mapset Nombre del MAPSET (1 a 7 caracteres)
Todo mapa BMS debe comenzar con DFHMSD TYPE={DSECT:MAP:&SYSPARM} y debe
terminar con DFHMSD TYPE=FINAL.
DSECT se utiliza para crear un conjunto de mapas simbólicos
MAP se utiliza para crear un conjunto de mapas físicos
FINAL Indica la finalizacion de la definisión del MAPSET o conjunto de mapas.

CICS - 40
CICS CICS
Customer Information Control
System MACROS BMS

DFHMSD: (DEFINE UN CONJUNTO DE MAPAS – MAPSET)


Mapset DFHMSD TYPE={DSECT:MAP:FINAL:&SYSPARM},
CTRL=([FRSET],[FREEKB],[ALARM]),
TIOAPFX=YES,
MODE={IN:INOUT:OUT},
LANG={COBOL:PLI:ASM:RPG},
STORAGE={AUTO:BASE=name}

CTRL Define las caracteristicas de la terminal


FRSET Setea en OFF los MDT (modified data tag) de los campos enviados a la terminal
salvo aquellos que el programa setea en ON. Recordemos que solo los campos cuyo MDT
este en ON viajan desde la terminal a la aplicación.
FREEKB Desbloquea el teclado. De otra forma, el operador deberá pulsar RESET antes de
iniciar la carga de datos.
ALARM Provoca la emisión de un pitido en la terminal al desplegarse cualquier mapa del
MAPSET.

CICS - 41
CICS CICS
Customer Information Control
System MACROS BMS

DFHMSD: (DEFINE UN CONJUNTO DE MAPAS – MAPSET)


Mapset DFHMSD TYPE={DSECT:MAP:FINAL:&SYSPARM},
CTRL=([FRSET],[FREEKB],[ALARM]),
TIOAPFX=YES,
MODE={IN:INOUT:OUT},
LANG={COBOL:PLI:ASM:RPG},
STORAGE={AUTO:BASE=name}

TIOAPFX=YES Se usa este parámetro si TYPE=DSEC. El BMS inserta 12 Bytes de


control al comienzo del mapa simbólico. Para nuestros programas que son a nivel de
comandos siempre debe especificarse esta opción.

MODE Indica el objetivo del mapa


IN El mapa será utilizado solo para entrada (input)
INOUT El mapa será tanto de entrada (input) como de salida (output)
OUT El mapa será solo de salida (output)
Se recomienda simpre utilizar INOUT salvo fines específicos. El copy emergente será acorde
al valor aquí indicado (contendrá las definiciones de input y output, solo de input o solo de
output).

CICS - 42
CICS CICS
Customer Information Control
System MACROS BMS

DFHMSD: (DEFINE UN CONJUNTO DE MAPAS – MAPSET)


Mapset DFHMSD TYPE={DSECT:MAP:FINAL:&SYSPARM},
CTRL=([FRSET],[FREEKB],[ALARM]),
TIOAPFX=YES,
MODE={IN:INOUT:OUT},
LANG={COBOL:PLI:ASM:RPG},
STORAGE={AUTO:BASE=name}

LANG Indica el lenguaje en que estará escrito el programa que lo va a tratar. De acuerdo
a este parámetro se generá el Copy en el lenguaje indicado al momento de la compilacion
del MAPSET por el BMS.
COBOL El programa estará codificado en COBOL.
PLI El programa estará codificado en PL/I
ASM El programa estara codificado en Assembler
RPG El programa estará codificado en RPG

STORAGE Indica el almacenamiento necesario para la carga del MAPSET


AUTO El CICS adquirirá un área de memoria separada para cada mapa
BASE=name El MAPSET debe ser copiado en la LINKAGE SECTION. También se
deberá ejecutar la sentencia GETMAIN para adquirir suficiente almacenamiento principal
para contener el mapa más grande del MAPSET.
CICS - 43
CICS CICS
Customer Information Control
System MACROS BMS

DFHMDI: (DEFINE UN MAPA DENTRO DEL MAPSET)


[mapname] DFHMDI [SIZE=(line,column)]

Mapname Nombre del MAPA dentro del MAPSET (1 a 7 caracteres)


SIZE Indica el tamaño de la pantalla expresado en cantidad de líneas y de
columnas. Generalmente, en terminales del Host, los valores a indicar son (24,80)

CICS - 44
CICS CICS
Customer Information Control
System MACROS BMS

DFHMDF: (DEFINE UN CAMPO DENTRO DEL MAPA)


[fname] DFHMDF [POS={(number:(line,column)}],
[LENGTH=number],
[JUSTIFY=([{LEFT:RIGHT}] [,{BLANK:ZERO}]],
[INITIAL=‘literal caracter’],
[XINIT=‘literal hexadecimal’],
[ATTRB=([{ASKIP:PROT:UNPROT[,NUM]}],
[{BRT:NORM:DRK} [,DET] [,IC] [,FSET])],
[GRPNAME=group-name],
[OCCURS=number],
[PICIN=‘value’],
[PICOUT=‘value’]
Fname Nombre del campo (1 a 7 caracteres). Si es omitido desde el programa no
podremos asignarle valores ni cambiar sus atributos. Se utiliza para titulos o descripciones
dentro del mapa a las que no es necesario alterar su contenido.
POS Indica la posicion del campo en la pantalla
Number indica la posicion relativa desde el valor 0 (cero)
Line indica la linea donde se ubicará el campo (la primera es la 1)
Tener cuidado ya
Column Indica la columna dentro de la linea (la primera es la 1).
que indica la posicion del byte de atributo que precede al campo y no la
primera posicion del campo.
CICS - 45
CICS CICS
Customer Information Control
System MACROS BMS

DFHMDF: (DEFINE UN CAMPO DENTRO DEL MAPA)


[fname] DFHMDF [POS={(number:(line,column)}],
[LENGTH=number],
[JUSTIFY=([{LEFT:RIGHT}] [,{BLANK:ZERO}]],
[INITIAL=‘literal caracter’],
[XINIT=‘literal hexadecimal’],
[ATTRB=([{ASKIP:PROT:UNPROT[,NUM]}],
[{BRT:NORM:DRK} [,DET] [,IC] [,FSET])],
[GRPNAME=group-name],
[OCCURS=number],
[PICIN=‘value’],
[PICOUT=‘value’]
LENGTH=number Indica la longitud del campo (Excluyendo el byte de atributo). No debe
exceder el tamaño de la linea. Puede omitirse este parámetro si PICIN o PICOUT estan
presentes.
JUSTIFY Permite el relleno automático con blancos o ceros de campos parcialmente
ingresados. Los valores default son:
LEFT, BLANK para campos alfanumericos (si no se especifico NUM)
RIGHT, ZERO para campos numericos (si se especifico NUM)
INITIAL Asigna la ‘constante carácter’ al campo en tiempo de salida. Para asumir el valor
inicial desde nuestro programa debe ser inicializado con LOW-VALUES, de lo contrario
contendrá el valor asignado por el programa.
CICS - 46
CICS CICS
Customer Information Control
System MACROS BMS

DFHMDF: (DEFINE UN CAMPO DENTRO DEL MAPA)


[fname] DFHMDF [POS={(number:(line,column)}],
[LENGTH=number],
[JUSTIFY=([{LEFT:RIGHT}] [,{BLANK:ZERO}]],
[INITIAL=‘literal caracter’],
[XINIT=‘literal hexadecimal’],
[ATTRB=([{ASKIP:PROT:UNPROT[,NUM]}],
[{BRT:NORM:DRK} [,DET] [,IC] [,FSET])],
[GRPNAME=group-name],
[OCCURS=number],
[PICIN=‘value’],
[PICOUT=‘value’]
XINIT Igual que INITIAL pero la constante esta en valor HEXADECIMAL.
ATTRB Permite la especificación de variados valores de atributos. Si se omite el default es
ASKIP y NORM; si no se omite, además de los parámetros especificados asume NORM y
UNPROT, salvo que si ndique lo contrario.
ASKIP El cursor salta el campo en forma automática.
PROT No se pueden asignar valores al campo (esta protegido).
UNPROT Se permite el ingreso de datos (esta desprotegido).
NUM Solo se permite el ingreso de datos numéricos, salvo que el operador pulse la tecla
de ‘mayúsculas’.
CICS - 47
CICS CICS
Customer Information Control
System MACROS BMS

DFHMDF: (DEFINE UN CAMPO DENTRO DEL MAPA)


[fname] DFHMDF [POS={(number:(line,column)}],
[LENGTH=number],
[JUSTIFY=([{LEFT:RIGHT}] [,{BLANK:ZERO}]],
[INITIAL=‘literal caracter’],
[XINIT=‘literal hexadecimal’],
[ATTRB=([{ASKIP:PROT:UNPROT[,NUM]}],
[{BRT:NORM:DRK} [,DET] [,IC] [,FSET])],
[GRPNAME=group-name],
[OCCURS=number],
[PICIN=‘value’],
[PICOUT=‘value’]
BRT El campo será visualizado con BRILLO.
NORM El campo será visualizadon intensidad normal.
DRK El campo no será visualizado en la pantalla (DARK).
DET Permite la utilizacion de lapiz óptico.
IC El cursor se posicionará inicialmente en este campo. No deberá especificarse esta
opcion en otro campo.
FSET El MDT de este campo siempre estará en ON. Se utiliza cuando el valor de un
campo protegido debe retornar a nuestro programa o, si el valor enviado en el campo debe
retornar en nueva transacción.
CICS - 48
CICS CICS
Customer Information Control
System MACROS BMS

DFHMDF: (DEFINE UN CAMPO DENTRO DEL MAPA)


[fname] DFHMDF [POS={(number:(line,column)}],
[LENGTH=number],
[JUSTIFY=([{LEFT:RIGHT}] [,{BLANK:ZERO}]],
[INITIAL=‘literal caracter’],
[XINIT=‘literal hexadecimal’],
[ATTRB=([{ASKIP:PROT:UNPROT[,NUM]}],
[{BRT:NORM:DRK} [,DET] [,IC] [,FSET])],
[GRPNAME=group-name],
GRPNAME Permite definir varios campos bajo un mismo campo grupal para que el
programa pueda tratarlos simultáneamente.
MO DFHMDF POS=(10,1),LENGTH=2,ATTRB=BRT,GRPNAME=DATE
SEP1 DFHMDF POS=(10,3),LENGTH=1,GRPNAME=DATE,INITIAL='-'
DAY DFHMDF POS=(10,4),LENGTH=2,GRPNAME=DATE
SEP2 DFHMDF POS=(10,6),LENGTH=1,GRPNAME=DATE,INITIAL='-'
YR DFHMDF POS=(10,7),LENGTH=2,GRPNAME=DATE
02 DATE.
03 FILLER PICTURE X(2).
03 MOA PICTURE X.
03 MOO PIC X(2).
03 SEP1 PIC X(1).
03 DAO PIC X(2).
03 SEP2 PIC X(1).
03 YRO PIC X(2).

CICS - 49
CICS CICS
Customer Information Control
System MACROS BMS

DFHMDF: (DEFINE UN CAMPO DENTRO DEL MAPA)


[fname] DFHMDF [POS={(number:(line,column)}],
[LENGTH=number],
[JUSTIFY=([{LEFT:RIGHT}] [,{BLANK:ZERO}]],
[INITIAL=‘literal caracter’],
[XINIT=‘literal hexadecimal’],
[ATTRB=([{ASKIP:PROT:UNPROT[,NUM]}],
[{BRT:NORM:DRK} [,DET] [,IC] [,FSET])],
[GRPNAME=group-name],
[OCCURS=number],
[PICIN=‘value’],
[PICOUT=‘value’]
OCCURS El campo será repetido ‘number’ veces en los mapas fisico y simbólico.
En caso de COBOL el mapa simbólico (copy) contendra la sentencia OCCURS. OCCURS y
GRPNAME son excluyentes.
PICIN Indica que una cláusula PICTURE será aplicada al Copy de Cobol en la version
input del mapa simbólico. PICIN=‘999v99’ indica a nuestro programa que debe asumir 2
decimales. Si PICIN no es especificado, en el copy Cobol se definirá como ‘carácter’ aún si
se especifica NUM como atributo del campo en el mapa.
PICOUT Genera una cláusula PICTURE en el Copy Cobol que será usada en la versión
output del mapa simbólico.
PICOUT=‘$$$$$,99’ displayará el valor ‘ $123,50’ .
CICS - 50
CICS CICS
Customer Information Control
System PROCESO DE COMPILACION DEL BMS

FUENTE
ASSEMBLER
CON MAPSET

OBTENCION
DEL MAPA
FISICO

INPUT AL
LINKAGE EDITOR

Lo probamos en el CICS con la transaccion


LINKAGE MAPA FISICO
CECI
EDITOR DE CARGA
CECI SEND MAP(‘MLTR001’) ERASE

OBTENCION COPY COBOL Lo incoporamos en la WORKING STORAGE


DEL MAPA MAPA SECTION o en la LINKAGE SECTION
SIMBOLICO SIMBOLICO

CICS - 51
CICS CICS
Customer Information Control
System ALTA DEL MAPA EN EL CICS

Una vez compilado nuestro mapa (que el CICS lo trata como programa)
deberemos darlo de alta en el CICS con la transacción CEDA, que nos permitirá dar el
mapa. Si por el contrario, ya esta declarado nuestro mapa en el CICS pero lo hemos
modificado por alguna razón, deberemos hacer un “new copy” del modulo de carga para que
el CICS tome la nueva versión del mapa con la transaccion CEMT.
IMPORTANTE: Las versiones de los mapas permanecerán congeladas para el CICS hasta
que se levante de nuevo el CICS o hasta que se le indique NEW COPY con la transaccion
CEMT. (CEMT SET PROGRAM(MLTR001) NEWC)

CICS - 52
CICS CICS
Customer Information Control
System CONTROL DE PROGRAMAS

• CONTROL DE PROGRAMAS
– COMMAREA
– LINK
– XCTL
– RETURN
– START/RETRIEVE
– EIB - EXEC INTERFASE BLOCK

CICS - 53
CICS CICS
Customer Information Control
System COMMAREA

La COMMAREA o DFHCOMMAREA es un area de comunicación entre programas.


Deberemos incorporar entonces el concepto de programa emisor o generador de la
COMMAREA y el programa receptor de la COMMAREA armada por su predecesor.
Una COMMAREA solo será accedida por aquellos programas a los que explícitamente
se les pase.
El programa emisor deberá tener definida una ‘data-area’ en la WORKING o en la
LINKAGE, que será referenciada al momento de entregar el control a otro programa.
El programa receptor, obligatoriamente deberá tener definida una ‘data-area’ de igual
tamaño (o mayor) en la LINKAGE y de igual estructura en la WORKING a fin de garantizar la
correspondencia de los datos transferidos. No resulta necesario ejecutar ningun comando de CICS
para que el area de la LINKAGE, asignada en el programa receptor a la COMMAREA, sea
completada con los datos de la transferencia.
Para que el programa receptor este enterado si le llego o no una COMMAREA, deberá
testear el campo EIBCALEN de la EIB (EXEC INTERFASE BLOCK del CICS). Si este campo es
mayor que CERO, nos indica la longitud de la COMMAREA recibida (que deberá corresponder con
la longitud esperada). Si es igual a CERO, no se ha recibido ningún dato en la COMMAREA.

CICS - 54
CICS CICS
Customer Information Control
System COMMAREA
WORKING STORAGE SECTION.
*************************
77 COM-LEN PIC S9(4) COMP.
01 COMMAREA-DSPT020. PROGRAMA
03 PARM1 PIC X(03). EMISOR
03 PARM2 PIC X(03).
PROCEDURE DIVISION.
********************
MOVE LENGTH OF COMMAREA-DSPT020 TO COM-LEN.
EXEC CICS LINK PROGRAM ('DSPT020')
COMMAREA (COMMAREA-DSPT020)
LENGTH (COM-LEN)
RESP (WS-RESP)
END-EXEC.

WORKING STORAGE SECTION.


*************************
77 COM-LEN PIC S9(4) COMP.
01 COMMAREA-DSPT020.
03 PARM1 PIC X(03). PROGRAMA
03 PARM2 PIC X(03). RECEPTOR
LINKAGE SECTION.
*****************
01 DFHCOMMAREA PIC X(06).
PROCEDURE DIVISION.
********************
IF EIBCALEN > 0
MOVE DFHCOMMAREA TO COMMAREA-DSPT020
END-IF.

CICS - 55
CICS CICS
Customer Information Control
System COMANDO LINK

EXEC CICS LINK


PROGRAM (‘name’)
[COMMAREA (‘data-area’)
LENGTH (‘data-value’) ]
END-EXEC.
Este comando es utilizado para disparar sincrónicamente un programa de nivel lógico
inferior, retornado a la próxima instrucción del programa llamante.
Como ya sabemos, si el programa invocado no esta residente en memoria, será
cargado previo a su ejecución. El retorno al programa de mayor nivel se produce cuando en el
programa llamado se ejecuta el comando RETURN. Entonces, el control es devuelto al programa
principal en la siguiente instrucción al LINK.
Durante la ejecución del comando LINK, los recursos del programa principal
permanecen en memoria mientras el programa invocado se está ejecutando.
La utilización del comando LINK se recomienda en casos de tener tareas repetitivas y
utilizadas por numerosos programas de aplicación, tal el caso de una rutina de control de
seguridad o de calculo de un dígito verificador, pero debe evitarse en lo general la utilización del
comando LINK.

CICS - 56
CICS CICS
Customer Information Control
System COMANDO LINK

PROGRAMA PRINCIPAL
MOVE LENGTH OF COMMAREA-DSPT020 TO COM-LEN.
EXEC CICS LINK PROGRAM ('DSPT020')
COMMAREA (COMMAREA-DSPT020)
LENGTH (COM-LEN)
END-EXEC.
PROGRAMA INVOCADO
IF EIBCALEN > 0
MOVE ‘1’ TO COM-NIVEL-SEGURIDAD
ELSE
MOVE ‘0’ TO COM-NIVEL-SEGURIDAD
END-IF.
EXEC CICS
RETURN
EVALUATE COM-NIVEL-SEGURIDAD END-EXEC.
WHEN ‘1’
CONTINUE
WHEN OTHER
PERFORM NIVEL-SEGURIDAD-INSUF
THRU F- NIVEL-SEGURIDAD-INSUF
END-EVALUATE.

CICS - 57
CICS CICS
Customer Information Control
System COMANDO XCTL

EXEC CICS XCTL


PROGRAM (‘name’)
[COMMAREA (‘data-area’)
LENGTH (‘data-value’) ]
END-EXEC.
Este comando es utilizado para disparar asincrónicamente una transacción, no hay
retorno al programa que emite el XCTL.
Al ejecutarse este comando el programa invocado comienza su ejecución
inmediatamente, mientras que el CICS libera de la memoria principal al programa llamador.

CICS - 58
CICS CICS
Customer Information Control
System COMANDO XCTL

PROGRAMA PRINCIPAL
MOVE LENGTH OF COMMAREA-DSPT020 TO COM-LEN.
EXEC CICS XCTL PROGRAM ('DSPT020')
COMMAREA (COMMAREA-DSPT020)
LENGTH (COM-LEN)
END-EXEC.
PROGRAMA INVOCADO
IF EIBCALEN > 0
MOVE ‘1’ TO COM-NIVEL-SEGURIDAD
ELSE
MOVE ‘0’ TO COM-NIVEL-SEGURIDAD
END-IF.
EXEC CICS
RETURN
EVALUATE COM-NIVEL-SEGURIDAD END-EXEC.
WHEN ‘1’
CONTINUE
WHEN OTHER
PERFORM NIVEL-SEGURIDAD-INSUF
THRU F- NIVEL-SEGURIDAD-INSUF
END-EVALUATE. CICS
CICS - 59
CICS CICS
Customer Information Control
System COMANDO RETURN

EXEC CICS RETURN


[ TRANSID (‘name’) ]
[COMMAREA (‘data-area’)
LENGTH (‘data-value’) ]
END-EXEC.

Este comando es utilizado para TERMINAR una tarea. Provoca la libración de todos
los recursos y memoria asociados a esa TASK o tarea.
Devuelve el control a un programa de aplicación de nivel más alto o al CICS.
TRANSID Si se especifica esta opción, se le indica al CICS que inicie la transacción indicada en
‘name’ cuando haya una respuesta del usuario operador en la terminal (por ejemplo ENTER, alguna
PF, ATTN). Esta opción prevalece sobre cualquier especificación de transacción del usuario sobre
la pantalla.

CICS - 60
CICS CICS
Customer Information Control
System COMANDO RETURN

TRANSACCION AAAA
MOVE LENGTH OF COMMAREA-BBBB TO COM-LEN.
EXEC CICS RETURN CICS
TRANSID (‘BBBB')
COMMAREA (COMMAREA-BBBB)
LENGTH (COM-LEN)
END-EXEC.

TRANSACCION BBBB
ENTER
PF1 – PF24 IF EIBCALEN > 0
MOVE ‘1’ TO COM-NIVEL-SEGURIDAD
ATTN
ELSE
MOVE ‘0’ TO COM-NIVEL-SEGURIDAD
END-IF.
EXEC CICS
RETURN
END-EXEC.

CICS - 61
CICS CICS
Customer Information Control
System COMANDO START

EXEC CICS START


TRANSID (‘name’)
[INTERVAL (hhmmss) : TIME(hhmmss)]
[FROM (‘data-area’)
LENGTH (‘data-value’) ]
[TERMID (‘name’)]
[REQID (‘name’)]
END-EXEC.
Este comando permite especificar que otra transaccion sea invocada (TRANSID), en
forma inmediata, o temporizada a una determinada hora del día, o luego de transcurrido
determinado lapso de tiempo (INTREVAL).
Permite enviarle datos a la nueva tarea (FROM) y en que terminal deberá iniciarse
(TERMID).
Tambien permite identificar el comando para una posterior cancelación de la TASK
iniciada o pendiente de ejecución (REQID ‘name’ donde ‘name’ tiene longitud de 1 a 8 caracteres).
Se utiliza generalmente el comando START para tareas de IMPRESIÓN.

CICS - 62
CICS CICS
Customer Information Control
System COMANDO START

Si la nueva tarea no esta asociada con una terminal, cada comando START
emitido desde el programa llamador genera una tarea separada a iniciarse.
Cada tarea contendrá, como consecuencia, al menos un registro de datos a recuperar.

RECUPERA
‘REGISTRO-1’
TRANSACCION AAAA TRANSACCION BBBB

MOVE ‘REGISTRO-1’ TO REG-START. MOVE LENGTH OF REG-START TO COM-LEN.


MOVE LENGTH OF REG-START TO COM-LEN. EXEC CICS RETRIEVE
EXEC CICS START INTO (REG-START)
TRANSID (‘BBBB') LENGTH (COM-LEN)
FROM (REG-START) [Link].
LENGTH (COM-LEN)
END-EXEC.
RECUPERA
MOVE ‘REGISTRO-2’ TO REG-START. ‘REGISTRO-2’
MOVE LENGTH OF REG-START TO COM-LEN.
EXEC CICS START TRANSACCION BBBB
TRANSID (‘BBBB')
FROM (REG-START)
LENGTH (COM-LEN) MOVE LENGTH OF REG-START TO COM-LEN.
END-EXEC. EXEC CICS RETRIEVE
INTO (REG-START)
LENGTH (COM-LEN)
[Link].

CICS - 63
CICS CICS
Customer Information Control
System COMANDO START

Si la nueva tarea esta asociada con una terminal, cada comando START
emitido desde el programa llamador genera una unica tarea hacia esa terminal.
Esta tarea contendrá, como consecuencia, la acumulación de tantos registros de datos
a recuperar como comandos START se ejecutaron.

TRANSACCION AAAA
MOVE ‘REGISTRO-1’ TO REG-START.
MOVE LENGTH OF REG-START TO COM-LEN. RECUPERA
‘REGISTRO-1’
EXEC CICS START
TRANSID (‘BBBB') ‘REGISTRO-2’
FROM (REG-START)
TRANSACCION BBBB
LENGTH (COM-LEN)
TERMID (‘%001’) MOVE LENGTH OF REG-START TO COM-LEN.
END-EXEC. EXEC CICS RETRIEVE
MOVE ‘REGISTRO-2’ TO REG-START. INTO (REG-START)
MOVE LENGTH OF REG-START TO COM-LEN. LENGTH (COM-LEN)
EXEC CICS START
TRANSID (‘BBBB') [Link].
FROM (REG-START)
LENGTH (COM-LEN)
TERMID (‘%001) Este programa deberá
END-EXEC. efectuar sucesivos
RETRIEVE hasta
chequear la condicion
ENDDATA

CICS - 64
CICS CICS
Customer Information Control
System COMANDO RETRIEVE

EXEC CICS RETRIEVE


{INTO (‘data-area’) : SET (pointer-ref)}
LENGTH (‘data-value’)
END-EXEC.
Este comando permite recuperar un area de datos enviada desde otro programa con el
comando START.
Para determinar si luego del RETRIEVE se han obtenido datos en la ‘data-area’ del INTO,
deberá chequearse la condición de excepcion ENDDATA.

CICS - 65
CICS CICS
Customer Information Control
System COMANDO CANCEL

EXEC CICS CANCEL


REQID (‘name’)
END-EXEC.
Este comando permite cancelar la ejecucion de una tarea cuya ejecución fue solicitada
via START. El parámetro ‘name’ del argumento REQID debe coincidir con el especificado en el
START correspondiente.

CICS - 66
CICS CICS
Customer Information Control
System EIB – EXEC INTERFASE BLOCK

Al momento de la traducción de los comandos de CICS por el Translator, se incorpora


en la LINKAGE SECTION una estructura de datos que el CICS utilizará para pasarle información a
nuestro programa.
Esta estructura es denominada como DFHEIBLK y se corresponde con la EIB (EXEC
INTERFASE BLOCK) del CICS, donde este almacena toda la información necesaria sobre la tarea
actualmente en ejecución, la terminal, la hora, el usuario y sobre todo, el resultado de cada
comando CICS que nuestra aplicación invocó.
Nuestro programa puede acceder a todos los campos de la EIB, pero se recomienda no
cambiar el contenido de ninguno.

CICS - 67
CICS CICS
Customer Information Control
System EIB – EXEC INTERFASE BLOCK

Los campos de la EIB mas utilizados son:


EIBAID Contiene el identificador de atención del ultimo comando RECEIVE ejecutado (ENTER,
PF1-PF24, CLEAR, ATTN).
EIBCALEN Contiene la longitud del area de comunicación DFHCOMMAREA que ha sido colocada
en la LINKAGE SECTION de nuestro programa.
EIBCPOSN brinda la posición que ocupaba el cursor al momento del último RECEIVE ejecutado.
EIBDATE Fecha en que fue arrancada la tarea.
EIBFN Código de función que indica cual comando de CICS fue el más recientemente utilizado
por nuestro programa.
EIBRCODE Código de condición del último comando CICS ejecutado.
EIBRSRCE Contiene el nombre del recurso accedido más recientemente por un comando CICS
(como ser el nombre de una cola TS o TD, un archivo, etc.)
EIBTASKN número que el CICS asignó a la tarea actualmente en ejecución.
EIBTIME Hora de arranque de la tarea.
EIBTRMID Codigo de terminal donde arrancó la tarea.
EIBTRNID Código identificador de la transacción actual.

CICS - 68
CICS CICS
Customer Information Control
System MANEJO DE ERRORES

• MANEJO DE ERRORES DEL PROGRAMA


– Testeo de Condiciones de Excepción en la ejecución de Comandos CICS
– HANDLE CONDITION
– RESP
– HANDLE AID

CICS - 69
CICS CICS
Customer Information Control
System TESTEO DE RESULTADO DE EJECUCION

Cada vez que ejecutamos un comando CICS, este nos avisa sobre si la operación del
comando fue satisfactoria, o si el recurso sobre el que estamos actuando (un archivo, una terminal,
etc.) estan disponibles, etc.
Por supuesto que nuestro programa deberá tener incorporado el código pertinente para
llevar a cabo esos chequeos.
Entonces, cada vez que ejecutemos un comando CICS deberemos asegurarnos sobre el
éxito de su cometido.
Si bien el propio CICS tiene mecanismos automáticos que ante errores provoca un
vuelco de memoria, es necesario que en nuestro programa podamos prever acciones ante
condiciones de excepción en el proceso que no son necesariamente errores.
Existen dos alternativas para la evaluación del resultado de nuestro comando CICS:
1) La utilización del HANDLE CONDITION
2) La utilización del RESP
3) La utilización combinada del HANDLE CONDITION y del RESP

CICS - 70
CICS CICS
Customer Information Control
System HANDLE CONDITION

EXEC CICS HANDLE CONDITION


condicion [ (nombre-parrafo) ]
......
condicion [ (nombre-parrafo) ]
END-EXEC.

Condicion palabra clave que identifica la condición de excepción


Nombre-parrafo Nombre de párrafo o de Section de cobol donde se derivará el control del
programa por cumplirse la condición de excepcion asociada en la condición. Esta bifurcación es
equivalente a un GO TO y no a un PERFORM.

CICS - 71
CICS CICS
Customer Information Control
System HANDLE CONDITION

OBSERVACIONES sobre el HANDLE CONDITION

Se pueden especificar hasta 16 condiciones en un solo comando.


Si especificamos la condición sin nombre de párrafo asociado, se desactiva cualquier HANDLE
CONDITION previa que atendía esa condición. En este caso el CICS toma el control.
Si se incorpora una condición que es común a varios comandos, debe entenderse que es extensiva
la bifurcación por execpción de la condición sin importar el comando que la pueda activar.
En caso de LINK, no se hacen extensivos los HANDLE CONDITION al subprograma; este deberá
establecer sus propios HANDLE CONDITION. Una vez retornado el control a la aplicación principal,
se reanudan los HANDLE CONDITION que quedaron interrumpidos.
Si se especifica más de una vez el comando, las condiciones y sus bifurcaciones se van
acumulando.
En caso efectuar un PERFORM, se puede determinar una HANDLE CONDITION diferente dentro de
esa rutina con el comando EXEC CICS PUSH HANDLE que suspende todas las HANDLE
CONDITION, HANDLE AID y HANDLE ABEND actuales. Se setean entonces los HANDLE
CONDITION propios para esa rutina y a su finalización se ejecuta el comando EXEC CICS POP
HANDLE que restaura todos los HANDLE al estado anterior al PUSH.

CICS - 72
CICS CICS
Customer Information Control
System HANDLE CONDITION

OBSERVACIONES sobre el HANDLE CONDITION

Cuando se quiera evitar el uso de este comando por diversas razones, hay dos alternativas:
•Para desactivar el HANDLE CONDITION para una condición dada, sin considerar que comando
activó esa condición, usar el siguiente comando:
EXEC CICS IGNORE CONDITION
condicion
END-EXEC.
Esta situación se mantendrá hasta que un siguiente comando HANDLE CONDITION, para la condición
ignorada, sea encontrado.
•Especificar NOHANDLE como opción dentro del comando que se quiere evitar el HANDLE
CONDITION.
EXEC CICS DELETEQ TS QUEUE (COM-KEY)
NOHANDLE
END-EXEC.
En este caso se deberá cheaquear el campo EIBRCODE de la EIB para determinar si el
comando se ejecutó con éxito.

CICS - 73
CICS CICS
Customer Information Control
System HANDLE CONDITION

OBSERVACIONES sobre el HANDLE CONDITION

Para especificar una rutina de manejo de errores no contemplados explicitamente por los HANDLE
CONDITION que se encuentan en nuestro programa, es conveniente utilizar al inicio del mismo la
siguiente instrucción:
EXEC CICS HANDLE CONDITION
ERROR (error-cics)
END-EXEC.
Entonces, si ocurre un error inesperado en la rutina error-cics, nuestro programa entraría en LOOP,
salvo que al inicio de nuestra rutina error-cics incluyamos la siguiente instrucción.
Error-cics.
EXEC CICS HANDLE CONDITION
ERROR
END-EXEC.
.....
Fin-error-cics.

CICS - 74
CICS CICS
Customer Information Control
System RESP

A todos los comandos de CICS les podemos agregar la opción RESP (PIC S9(8) COMP).
Esta opción cumple la misma finalidad que el NOHANDLE, pero acto seguido podemos cheaquear
su resultado con la función DFHRESP.

EXEC CICS
READQ TS QUEUE (COM-KEY)
INTO (COM-COMMAREA)
LENGTH (COM-LEN)
ITEM (WS-ITEM)
RESP (WS-RESP)
END-EXEC.

EVALUATE WS-RESP
WHEN DFHRESP(NORMAL)
CONTINUE
WHEN DFHRESP(QIDERR)
CONTINUE
WHEN OTHER
PERFORM CICS-ERROR-AUT
THRU FIN-CICS-ERROR-AUT
END-EVALUATE.

CICS - 75
CICS CICS
Customer Information Control
System HANDLE AID

EXEC CICS HANDLE AID


AID-NAME [ (nombre-parrafo) ]
......
ANYKEY [ (nombre-parrafo) ]
END-EXEC.
Este comando funciona del mismo modo que el HANDLE CONDITION pero atendiendo a
teclas pulsadas por el usuario operador. Las condiciones de este comando se activan siempre y
cuando se haya ejecutado un comando RECEIVE o RECEIVE MAP.
AID-NAME Identifica palabras claves como ENTER, PF1, PF24, CLEAR, etc.
ANYKEY Se aplica a cualquier tecla pulsada, siempre que no se haya indicado en forma
específica. Tampoco aplica a la tecla ENTER.

CICS - 76
CICS CICS
Customer Information Control
System HANDLE AID VS. EIBAID

PERFORM RECEIVE-MAPA EMITE UN PERFORM RECEIVE-MAPA


GETMAIN
THRU FIN-RECEIVE-MAPA. IMPLICITO
THRU FIN-RECEIVE-MAPA.

EXEC CICS HANDLE AID EVALUATE EIBAID


ENTER (PFKEY-ENTER) WHEN DFHENTER
PERFORM PFKEY-ENTER
PF2 (PFKEY-PF2) THRU FIN-PFKEY-ENTER
PF6 (PFKEY-PF6)
WHEN DFHPF2
ANYKEY (PFKEY-INVALIDA) PERFORM PFKEY-PF2
END-EXEC. THRU FIN-PFKEY-PF2

WHEN DFHPF6
PERFORM PFKEY-PF6
THRU FIN-PFKEY-PF6
CON EIBAID SE LOGRA
MEJOR PERFORMANCE
WHEN OTHER
PERFORM PFKEY-INVALIDA
THRU FIN-PFKEY-INVALIDA

END-EVALUATE.

CICS - 77
CICS CICS
Customer Information Control
System ACCESO A DATOS

• COMANDOS PARA ACCESO A DATOS


– Obtencion de fecha
– Comandos para manejo de Mapas
– Acceso a Archivos VSAM
– Acceso a TS Temporary Storage
– Acceso a TD Transient Data

CICS - 78
CICS CICS
Customer Information Control
System ASKTIME

El comando ASKTIME provee fecha y hora y los actualiza en los campos EIBDATE y
EIBTIME de la EIB.
EXEC CICS ASKTIME
[ ABSTIME (data-area) ]
END-EXEC.
Data-area Debe definirse como una doble palabra binaria en la cual se almacena el tiempo, en
milisegundos, transcurridos desde las 00.00 hs del 1ro de Enero de 1900.

CICS - 79
CICS CICS
Customer Information Control
System FORMATTIME

El comando FORMATTIME permite transformar a un formato dado la fecha obtenida por


el comando ASKTIME.
EXEC CICS FORMATTIME
ABSTIME (data-value)
[ YYDDD(data-area) ] [ YYMMDD(data-area) ] [ YYDDMM(data-area) ]
[ DDMMYY(data-area) ] [ MMDDYY(data-area) ] [ DATE(data-area) ]
[ DATEFORM(data-area) ] [ DATESEP(data-value) ] [ DAYCOUNT(data-area) ]
[ DAYOFWEEK(data-area) ] [ DAYOFMONTH(data-area) ]
[ MONTHOFYEAR(data-area) ] [ YEAR(data-area) ]
[ TIME(data-area) [ TIMESEP(data-value) ] ]
END-EXEC.
ABSTIME data-value especifica el nombre de la data-area definida en el comando ASKTIME Este
valor de tiempo absoluto podrá ser formateado de acuerdo a las opciones que se indiquen.
YYDDD Data-area especifica un campo de 6 caracteres donde se retorna la fecha en el formato
indicado.
YYMMDD YYDDMM DDMMYY MMDDYY Data-area especifica un campo de 8 caracteres donde se
retorna la fecha en el formato indicado.

CICS - 80
CICS CICS
Customer Information Control
System FORMATTIME

DATE data-area especifica un campo de 8 caracteres en donde se retorna la fecha en el


formato default seteado en la Instalación.
DATESEP Data-value especifica el carácter que será insertado como separador entre los
componentes de una fecha. Si se omite data-value, asume ‘/’ como separador.
omitiendo DATESEP : 311200
DATESEP sin data-value : 31/12/00
DATESEP con data-value ‘-’ : 31-12-00
DATEFORM Data-area especifica un campo de 6 caracteres donde se retorna la fecha en el formato
default de la Instalación.
DAYCOUNT Data-area especifica una palabra binaria donde retorna el numero de días
transcurridos desde el 1ro de Enero de 1900.
DAYOFWEEK Data-area especifica una palabra binaria donde retorna el numero de día relativo de
la semana comenzando el domingo con valor cero, lunes valor 1 etc.
DAYOFMONTH Data-area especifica una palabra binaria donde retorna el numero de día relativo del
mes.
MONTHOFYEAR Data-area especifica una palabra binaria donde retorna el numero de mes relativo
al año.

CICS - 81
CICS CICS
Customer Information Control
System FORMATTIME

YEAR data-area especifica una palabra binaria donde retorna el numero completo del año (por
ejemplo 2010).
TIME Data-area especifica un campo de 8 caracteres donde retorna la hora en formato hhmmss.
TIMESEP Data-value especifica un carácter que será insertado como separador entre hhmmss. Si
se omite data-value, se asume ‘:’ como separador. Si se omite por completo esta opción, no inserta
ningún carácter como separador.
omitiendo TIMESEP : 223059
TIMESEP sin data-value : [Link]
TIMESEP con data-value ‘/’ : 22/20/59

CICS - 82
CICS CICS
Customer Information Control
System ASKTIME Y FORMATTIME
EXEC CICS 01 WS-TIME PIC X(08)VALUE SPACES.
ASKTIME ABSTIME (WS-ABSTIME) 01 WS-HORA-SQL PIC X(08)VALUE SPACES.
END-EXEC. 01 WS-HORA-MAPA PIC X(08)VALUE SPACES.
EXEC CICS FORMATTIME 01 WS-ABSTIME PIC S9(16)COMP VALUE +0.
ABSTIME (WS-ABSTIME) 01 WS-YEAR4 PIC S9(09)COMP VALUE +0.
YYMMDD (WS-AAMMDD) 01 WS-RESP PIC S9(08)COMP VALUE +0.
TIME (WS-TIME) TIMESEP (':') 01 WS-RESP2 PIC S9(08)COMP VALUE +0.
YEAR (WS-YEAR4) 01 WS-FECHA-MAPA.
END-EXEC. 10 WS-FECHA-MAPA-DD PIC 9(02).
MOVE WS-YEAR4 TO WS-FECHA-MAPA-AAAA. 10 WS-FECHA-MAPA-B1 PIC X(01).
MOVE WS-AAMMDD-MM TO WS-FECHA-MAPA-MM. 10 WS-FECHA-MAPA-MM PIC 9(02).
MOVE WS-AAMMDD-DD TO WS-FECHA-MAPA-DD. 10 WS-FECHA-MAPA-B2 PIC X(01).
MOVE '/' TO WS-FECHA-MAPA-B1 10 WS-FECHA-MAPA-AAAA PIC 9(04).
WS-FECHA-MAPA-B2.

PROCEDURE WORKING

CICS - 83
CICS CICS
Customer Information Control
System MANEJO DE MAPAS - SEND MAP

El comando SEND MAP permite enviar un mapa con datos a la terminal.


EXEC CICS SEND MAP (‘name’)
[ MAPSET (‘name’) ]
[ { DATAONLY : MAPONLY } ]
[ FROM (data-area) ]
[ LENGTH (data-value) ]
[ CURSOR [ (data-value) ]
[ { ERASE : ERASEUP } ]
[ FREEKB ] [ FRSET ] [ ALARM ] [ PRINT ] [ FORMFEED ]
END-EXEC.
MAP especifica el nombre del MAPA a ser enviado a la terminal (1 a 7 caracteres). Deberá
coincidir con el nombre definido en la macro BMS DFHMDI.
MAPSET especifica el nombre del MAPSET, conjunto de mapas al que pertenece el mapa a ser
enviado a la terminal (1 a 7 caracteres). Deberá coincidir con el nombre definido en la macro BMS
DFHMSD. Si es omitido se asume el nombre especificado en MAP.
DATAONLY especifica que solo los datos del programa de aplicación deben enviarse a la terminal.
Todo dato o atributo del mapa físico son ignorados. No debe ser especificada la opción ERASE.
Debe haber sido enviado con anterioridad un mapa valido a la terminal.
CICS - 84
CICS CICS
Customer Information Control
System MANEJO DE MAPAS - SEND MAP

MAPONLY especifica que solo el mapa físico será enviado a la terminal. La opcion FROM no debe
ser especificada.
Omitiendo DATAONLY y MAPONLY los datos serán enviados a la terminal utilizando
datos del mapa físico y del mapa simbólico.
FROM especifica el area de datos del mapa simbólico a ser formateados dentro del mapa
físico.
LENGTH Indica la longitud de los datos a ser formateados; debe definirse como un campo binario
de media palabra. No se requiere este parámetro si se especificó la opcion MAPONLY.
CURSOR Especifica la posición en la pantalla donde deberá ser situado el cursor. Se utiliza
conjuntamente con el seteo del atributo de longitud del campo indicado en –1 (campo terminado en
L). No debe ser especificado si se especificó la opción MAPONLY.
ERASE Borra la pantalla antes de ser enviado el MAPA.
ERASEUP Borra todos los campos no protegidos de la pantalla, permitiendo que permanezcan los
campos definidos como ASKIP y PROT.
FREEKB Indica que debe ser desbloqueado el teclado despues de ser enviado el MAPA.
FRSET Especifica que los MDT de todos los campos deben ser setados en OFF.
ALARM Especifica que la alarma de la terminal debe ser activada al mostrar el mapa.

CICS - 85
CICS CICS
Customer Information Control
System MANEJO DE MAPAS - SEND MAP

PRINT Inicia la operación de impresión cuando se envía el mapa. Si se omite este parámetro
los datos se almacenan el el Buffer de la impresora pero no son impresos.
FORMFEED especifica que una nueva página es requerida para la impresión del mapa enviado.
IMPORTANTE:
Antes de ser enviado un mapa, el area del mapa simbólico deberá ser inicializado con
LOW-VALUES.

CICS - 86
CICS CICS
Customer Information Control
System MANEJO DE MAPAS – RECEIVE MAP

El comando RECEIVE MAP permite recibir en el programa los datos ingresados por el usuario
operador en un mapa enviado previamente a la terminal.
EXEC CICS RECEIVE MAP (‘name’)
[ MAPSET (‘name’) ]
{ INTO (data-area) : SET (pointer-ref) }
[ FROM (data-area) LENGTH (data-value) : TERMINAL [ASSIS ] ]
END-EXEC.
MAP especifica el nombre del MAPA a ser recibido desde la terminal (1 a 7 caracteres).
Deberá coincidir con el nombre definido en la macro BMS DFHMDI.
MAPSET especifica el nombre del MAPSET, conjunto de mapas al que pertenece el mapa a ser
recibido desde la terminal (1 a 7 caracteres). Deberá coincidir con el nombre definido en la macro
BMS DFHMSD. Si es omitido se asume el nombre especificado en MAP.
INTO especifica el area de datos receptora de los datos leidos desde la terminal, definido en la
Working Storage.
SET especifica la referencia del pointer que indica la dirección de los datos leidos desde la
terminal definido en la Linkage Section.

CICS - 87
CICS CICS
Customer Information Control
System MANEJO DE MAPAS – RECEIVE MAP

FROM esta opción es usada cuando el mapa ya ha sido recibido en un área de


almacenamiento, pero los datos no fueron formateados como mapa. Este comando realmente
los formatea.
LENGTH especifica Lla longitud del dato a ser formateado; debe definirse como un campo binario
de media palabra PIC S9(4) COMP.
TERMINAL especifica que los datos ingresados deben leerse desde la terminal que originó la
transacción.
ASSIS especifica que no debe efectuarse la conversión de letras minúsculas a mayúsculas.

1) El RECEIVE MAP recibe los datos no formateados que han sido leidos por el Programa de
Control de Terminal (TCP) del CICS.
2) Formatea estos datos de acuerdo a la información obtenida del mapa físico correspondiente.
3) Inicializa el área receptora del programa con LOW-VALUES. Esta es la Work-area que esta
formateada usando el copy del mapa simbólico.
4) Coloca los datos de cada campo modificado en el correspondiente campo receptor dentro de
esta área.

CICS - 88
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – READ

El comando READ permite la lectura de un registro de un archivo VSAM.


EXEC CICS READ DATASET (‘name’)
[ UPDATE ]
RIDFLD (data-area)
[ KEYLENGTH (data-value) : [ GENERIC ] ]
[ { RBA : RRN } ]
[ { SET (pointer-ref) : INTO (data-area) } ]
[ LENGTH (data-area) ]
[ { GTEQ : EQUAL } ]
END-EXEC.
DATASET especifica el nombre el archivo a leer (que coincide con el declarado en la tabla FCT).
Debe tener 8 caracteres como máximo y ajustado a la izquierda.
UPDATE esta opción le indica al FCP que el registro accedido será posteriormente actualizado.
RIDFLD identifica el nombre simbólico del área que contiene la clave del registro a leer. El
formato y el contenido de RIDFLD varían en función del método de acceso que utilicemos.

CICS - 89
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – READ

RIDFLD Para los archivos VSAM KSDS puede especificarse una clave COMPLETA o GENERICA.
Cuando se usa una clave genérica, deben también especificarse las opciones KEYLENGTH y
GENERIC. Estas opciones se describen más abajo. Luego de completado el READ, RIDFLD
contendrá la clave completa del registro leído.
Para los archivos VSAM KSDS accedidos mediante R.B.A., RIDFLD contiene la dirección
binaria del byte relativo de 4 bytes.
Para los archivos VSAM RRDS, RIDFLD contiene el número binario del registro relativo
de 4 bytes.
GENERIC identifica a la clave usada para buscar un registro en un archivo VSAM KSDS como una
CLAVE PARCIAL, cuya longitud se especifica en KEYLENGTH.
KEYLENGTH es un campo binario de dos bytes que identifica la longitud de la clave especificada
en RIDFLD. Esta opción debe incluirse si se utiliza una clave genérica, ya que indica la longitud de
la clave genérica.
SET especifica el nombre de una celda BLL.
INTO identifica el área de trabajo en la que ha de colocarse un registro después de haber sido
leído. Si se estuviera trabajando con registros de longitud variable, la descripción del registro ha
de ser lo suficientemente grande como para contener el registro de longitud máxima.

CICS - 90
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – READ

LENGTH especifica una media palabra binaria que da la longitud del área de trabajo. Define la
longitud del registro más largo que aceptará el programa. La longitud del registro leído se coloca
en el campo binario de dos bytes definido por LENGTH. Si un registro fuera más largo que lo
especificado, se lo trunca y coloca en el área de trabajo, activándose la condición LENGERR. La
longitud REAL del registro se coloca en LENGTH.
GTEQ significa que una clave de registro MAYOR QUE, o IGUAL a la clave especificada en el
comando READ satisface la búsqueda.
EQUAL significa que una clave de registro IDENTICA a la clave especificada en el comando
READ satisface la búsqueda.

CICS - 91
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – READ

CONDICIONES DE EXCEPCION EN COMANDO READ


Todas las operaciones de Entrada/Salida de datos en archivos pueden provocar
condiciones de excepción. Estas condiciones pueden ser especificadas en un comando HANDLE
que preceda a un comando READ, WRITE, etc. Luego, de producirse la condición de excepción, el
control se transferirá a la sentencia de programa especificada en las opciones de la sentencia
HANDLE. Por ejemplo:
EXEC CICS HANDLE CONDITION
LENGERR (1000-ERR-LONG)
NOTFND (1100-SIN-CLIENTE)
ERROR (1200-ERROR-CICS)
END-EXEC.
Los parámetros 1000-ERR-LONG , 1100-SIN-CLIENTE y 1200-ERROR-CICS son nombres de
párrafos o Section del programa de aplicación a los cuales se transferirá el control de producirse
cualquiera de las condiciones mencionadas.
La siguiente lista agrupa condiciones de excepción de control de archivos de acuerdo con el tipo
de información que generan.

CICS - 92
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – READ

CONDICIONES DE EXCEPCION – INFORMACION AL PROGRAMA

ENDFILE se ha alcanzado el fin del archivo


NOTFND el registro con la clave especificada no está en el archivo
DUPREC se intenta agregar un registro a un archivo con la misma clave de uno que ya existe.

Estas condiciones indican el estado de la operación. El procesamiento puede continuar


después de tomarse la acción adecuada.

CICS - 93
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – READ

CONDICIONES DE EXCEPCION – ERRORES AL PROGRAMA

INVREQ pedido inválido (INVALID REQUEST)


LENGERR error de longitud para un registro leido o grabado
DSIDERR el nombre del archivo no está en la FCT
ILLOGIC solamente para VSAM - error de VSAM no cubierto por otras categorias de respuesta
CICS.

Estas condiciones indican usualmente un error del programa de aplicación. Estas


condiciones no debieran producirse una vez que el programa esta en operación.

CICS - 94
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – READ

CONDICIONES DE EXCEPCION – ERRORES AL PROGRAMA

IOERR error de Entrada/Salida no cubierto por otra condición de excepción CICS.


NOTOPEN el archivo requerido está cerrado.

Estas condiciones indican que el archivo que se está procesando no está disponible.

CICS - 95
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – WRITE

El comando WRITE permite la grabación de un nuevo registro en un archivo VSAM.


EXEC CICS WRITE DATASET (‘name’)
RIDFLD (data-area)
FROM (data-area)
[ LENGTH (data-value) ]
[ { RBA : RRN } ]
[ MASSINSERT ]
END-EXEC.
DATASET especifica el nombre el archivo a grabar (que coincide con el declarado en la tabla FCT).
Debe tener 8 caracteres como máximo y ajustado a la izquierda.
FROM identifica el área de trabajo en la que se encuentra el registro a grabar.
LENGTH debe usarse únicamente si el archivo contiene registros de longitud variable.
MASSINSERT Se usa cuando se deben agregar a un archivo VSAM KSDS múltiples registros en
secuencia ascendente. Después que los registros han sido grabados debería usarse el comando
UNLOCK para desafectar los intervalos de control que son bloqueados durante la ejecución de
este comando.

CICS - 96
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – UNLOCK

El comando UNLOCK permite la liberación de los registros afectados de un archivo que fue
accedido con la opcion UPDATE en un READ para que otras transacciones puedan tener acceso a
esos registros.
EXEC CICS UNLOCK
DATASET (‘name’)
END-EXEC.
DATASET especifica el nombre el archivo a liberar (que coincide con el declarado en la tabla FCT).
Debe tener 8 caracteres como máximo y ajustado a la izquierda.

CICS - 97
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – REWRITE

El comando REWRITE permite la actualización de un registro existente en un archivo VSAM.


EXEC CICS REWRITE DATASET (‘name’)
FROM (data-area)
[ LENGTH (data-value) ]
END-EXEC.
DATASET especifica el nombre el archivo a regrabar (que coincide con el declarado en la tabla
FCT). Debe tener 8 caracteres como máximo y ajustado a la izquierda.
FROM identifica el área de trabajo en la que se encuentra el registro a regrabar.
LENGTH debe usarse únicamente si el archivo contiene registros de longitud variable.

Para actualizar un registro existente en un archivo VSAM, primero se lo debe leer con un
comando READ con la opción UPDATE. Luego recién se puede emitir este comando para actualizar
el registro previamente leído.

CICS - 98
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – DELETE

El comando DELETE permite la eliminación de un registro de un archivo VSAM.


EXEC CICS DELETE DATASET (‘name’)
[ RIDFLD (data-area) ]
[ KEYLENGTH (data-value) ]
[ GENERIC ]
[ NUMREC (data-area) ]
[ { RBA : RRN } ]
END-EXEC.
NUMREC específica un campo binario de dos bytes donde se indica el número de registros que se
desean eliminar. Esta opción debe usarse con GENERIC.
Sí el registro que debe eliminarse ha sido leído previamente con el comando READ con
opción UPDATE, solamente la entrada DATASET debe ser incluida.
Sí el registro que debe eliminarse no ha sido leído previamente, deberán incluirse las
entradas DATASET Y RIDFLD.
Como puede verse, existen ciertos problemas potenciales asociados a la eliminación de
registros sin haberlos leído previamente. Si no se está absolutamente seguro de lo que se está
haciendo, podrían eliminarse en forma accidental registros erróneamente.

CICS - 99
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – STARTBR

El comando STARTBR permite posicionar a la próxima operación de lectura en la clave que


cumpla con determinada condición de búsqueda (Equivale a una sentencia START de COBOL
sobre archivos VSAM).
EXEC CICS STARTBR DATASET (‘name’)
[ RIDFLD (data-area) ]
[ KEYLENGTH (data-value) [ GENERIC ] ]
[ { GTEQ : EQUAL } ]
[ { RBA : RRN } ]
END-EXEC.
Este comando no efectúa lectura de registros y se complementa con los comandos
READNEXT, READPREV, RESETBR y ENDBR.
Para posicionarnos al comienzo del archivo inicializar el RIDFLD con LOW-VALUES o
especificar GENERIC con KEYLENGTH(0) para luego leer secuencialmente los registros según su
clave con READNEXT en forma ascendente.
Para posicionarnos al final del archivo inicializar el RIDFLD con HIGH-VALUES sin
especificar las opciones GENERIC y KEYLENGTH y leer secuencialmente los registros según su
clave con READPREV en forma descendente.
Con la opcion GTEQ y no existe la clave en el archivo, la posición se establece en el
siguiente registro. Pero con la opción EQUAL esta circunstancia arroja NOTFND.
CICS - 100
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – READNEXT

El comando READNEXT permite la lectura del sigueinte registro de un archivo VSAM que se
encuentra bajo el efecto del comando STARTBR.
EXEC CICS READNEXT DATASET (‘name’)
RIDFLD (data-area)
[ KEYLENGTH (data-value) [ GENERIC ] ]
[ {RBA : RRN } ]
[ { SET (pointer-ref) : INTO (data-area) } ]
[ LENGTH (data-area) ]
END-EXEC.
RIDFLD identifica el nombre simbólico del área que contiene la clave del registro a leer debendo
ser la misma que la utilizada en el comando STARTBR. El contenido de RIDFLD es actualizado por
el CICS en forma automática con el valor del nuevo registro leido.
Se puede utilizar una técnica conocida como ‘SKIP-SEQUENTIAL-PROCESSING’ que
consiste en modificar el valor del RIDFLD previo a ejecutar el siguiente READNEXT a fin de saltear
la lectura de los registros existentes entre el valor de la ultima clave accedida y el nuevo valor del
RIDFLD.

CICS - 101
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – READPREV

El comando READPREV permite la lectura del registro anterior de un archivo VSAM que se
encuentra bajo el efecto del comando STARTBR.
EXEC CICS READPREV DATASET (‘name’)
RIDFLD (data-area)
[ KEYLENGTH (data-value) [ GENERIC ] ]
[ { RBA : RRN } ]
[ { SET (pointer-ref) : INTO (data-area) } ]
[ LENGTH (data-area) ]
END-EXEC.

El registro identificado en el STARTBR debe existir para que la operación secuencial


continúe. Si el registro requerido por el primer comando READPREV no esta en el archivo, se
activa la condición NOTFND.
No utilizar GENERIC en el comando STARTBR para inicar una búsqueda hacia atrás,
caso contrario se activa la condición INVREQ.

CICS - 102
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – ENDBR

El comando ENDBR permite terminar una búsqueda liberando los recursos afectados.
EXEC CICS ENDBR
DATASET (‘name’)
END-EXEC.

Este comando fallará si se ejecuta cuando el comando STARTBR no fue ejecutado


exitosamente.

CICS - 103
CICS CICS
Customer Information Control
System MANEJO DE ARCHIVOS – RESETBR

El comando RESETBR permite terminar una búsqueda y comenzar otra sobre el mismo archivo
inmediatamente. Equivale a ejecutar un comando ENDBR y seguidamente el comando STARTBR.
EXEC CICS RESETBR DATASET (‘name’)
RIDFLD (data-area)
[ KEYLENGTH (data-value) [ GENERIC ] ]
[ { RBA : RRN } ]
[ { GTEQ : EQUAL } ]
END-EXEC.

CICS - 104
CICS CICS
Customer Information Control
System MANEJO DE TEMPORARY STORAGE

La TEMPORARY STORAGE o TS es un recurso que posibilita el pasaje de información


entre transacciones. Físicamente se puede almacenar en la Memoria Principal o en Memoria
Auxiliar, según los requerimientos del programa.
Puede ser utilizada por ejemplo para los siguientes objetivos:
1) Al efectuar la muestra de la selección de varias filas de una tabla o de registros que resulta
demasiado grande como para utilizar solo una pantalla para lograrlo. Con la utilización de las PFs
podemos acceder a diferentes visiones de la información (Paginado con TS).
2) Para pasarle los registros a imprimir a una transacción Asincrónica.
3) Para obtener una lista de registros al final de una cadena de transacciones donde cada una
genera uno o más ítems de la TS y la ultima procesa todo el conjunto.
Cuando el programa determina que la TS será asignada en Memoria Auxiliar, los Ítems
generados se grabarán en un único archivo VSAM para cada CICS y que fue definido en el stream
de arranque del CICS.
Los grupos de registros de TS se denominan COLAS. Las colas no se definen en
ninguna tabla de CICS, ya que son definidas dentro de cada programa con indicación de su
nombre (hasta 8 caracteres) y grabando uno o más registros utilizando ese nombre.

CICS - 105
CICS CICS
Customer Information Control
System MANEJO DE TEMPORARY STORAGE

La COLA una vez que fue creada, permanecerá hasta que sea borrada por alguna
transacción. Cualquier programa que conozca el nombre de la cola podrá acceder a sus datos en
forma Secuencial o Random.
Para acceder en forma Random se debe especificar el nombre de la COLA y el número
de registro al que se desea acceder (ITEM). Por cada registro que se grabe en la COLA, el ITEM se
incrementará automáticamente en 1.
Al asignar el nombre de la cola es importante considerar que este debe identificarla
unívocamente. La forma más tradicional es utilizar los primeros 4 caracteres de los ocho del
nombre con el nombre de la transacción que genera la cola y los cuatro restantes con el nombre de
la terminal donde se está ejecutando la transacción.

CICS - 106
CICS CICS
Customer Information Control
System MANEJO DE TS – WRITEQ

El comando WRITEQ permite la generar un nuevo item de TS o modificar uno existente.


EXEC CICS WRITEQ TS
QUEUE (‘name’)
FROM (data-area)
LENGTH (data-value)
[ ITEM (data-value) [ REWRITE ] ]
[ MAIN : AUXILIARY ]
END-EXEC.
QUEUE especifica el nombre de la cola donde se generará el registro nuevo.
FROM identifica el área de trabajo en la que se encuentra el registro a grabar.
LENGTH identifica la longitud del registro a grabar. Los registros de las TS no necesitan tener la
misma longitud. Es un campo PIC S9(4) COMP.
ITEM El cics devuelve el numero de registro asignado en caso de WRITEQ, pero para
regrabarlo deberá ser indicado.
REWRITE especifica que se actualizará el registro referenciado en el ITEM.
MAIN Indica que el registro se almacenará en la Memoria Principal
AUXILIARY el registro se almacenará en archivo VSAM (opcion default)
CICS - 107
CICS CICS
Customer Information Control
System MANEJO DE TS – WRITEQ

El comando WRITEQ es usado para grabar nuevos registros o actualizar registros


existentes en la Temporary Storage. Si la cola especificada en el comando WRITEQ TS ya existe,
agrega nuevos registros al final de la cola, caso contrario crea la cola y graba el primer registro.
Si se especifica ITEM, el CICS retornará el número de item del nuevo registro en el área
especificada. El número del nuevo registro será el número de ítem del registro anterior más 1. Si
ITEM no se especifica, el número de ítem no será retornado al programa.
REWRITE es usado para que un registro existente en la cola sea actualizado. Si
REWRITE es especificado, ITEM también debe ser especificado, colocando el número de ítem que
se quiera actualizar. Esto causará que el WRITEQ TS actualice el registro de Temporary Storage
cuyo número de ítem coincida con el especificado en ITEM. No es obligatorio leer la entrada de la
cola antes de actualizaría, pero es una buena práctica de programación hacerlo.

CICS - 108
CICS CICS
Customer Information Control
System MANEJO DE TS – READQ

El comando READQ permite recuperar un item de TS.


EXEC CICS READQ TS
QUEUE (‘name’)
{ SET (pointer-ref) : INTO (data-area) }
LENGTH (data-value)
[ ITEM (data-value) : NEXT ]
[ NUMITEMS ]
END-EXEC.
LENGTH identifica la longitud del registro a grabar. Los registros de las TS no necesitan tener la
misma longitud. Es un campo PIC S9(4) COMP. Si la longitud del registro excede este valor será
truncado y la condición de excepción LENGERR se activa. Para evitar este inconveniente es
recomendable asignar siempre la longitud máxima de registro antes de efectuar la lectura.
ITEM en caso de acceso RANDOM especifica el numero de registro a leer. Si el registro
requerido no existe, la condicion de excepción ITEMERR se activa. Si la Cola no existe, se activa
entonces QIDERR.
NEXT especifica que se lea el siguiente registro (opción default). Si ya no hay más registros,
será activada la condición de excepcion ITEMERR como consecuencia de haber alcanzado el final
de la TS.

CICS - 109
CICS CICS
Customer Information Control
System MANEJO DE TS – READQ

NUMITEMS es un area de datos a ser actualizada por el CICS donde se especifica la cantidad de
items total que posee la COLA.

CICS - 110
CICS CICS
Customer Information Control
System MANEJO DE TS – DELETEQ

El comando DELETEQ permite el borrado de una COLA.


EXEC CICS DELETEQ TS
QUEUE (‘name’)
END-EXEC.
Este comando se puede usar para borrar una cola completa de TS. Si la cola no existe,
se activa la condición de excepción QIDERR
Antes de crear una nueva COLA, resulta conveniente ejecutar este comando para
asegurarnos que la misma no existe.

IMPORTANTE: No se puede borrar un ITEM en forma aislada de una TS. Si debemos trabajar
con bajas de ITEMS, deberemos habilitar una Flag dentro de nuestro diseño de COLA para
considerar esta situación.

CICS - 111
CICS CICS
Customer Information Control
System TS – CONDICIONES DE EXCEPCION

ITEMERR para acceso random, el número de registro especificado no existe en la cola


para acceso secuencial, se alcanzó el fin de la cola
LENGERR el registro leido es más largo que el especificado
NOSPACE el archivo VSAM en el cual se graban los registros de Temporary Storage carece de
espacio
IOERR error de Entrada/Salida
INVREQ la longitud de los datos a grabar es cero o excede la capacidad especificada para el
archivo VSAM
QIDERR no existe la cola especificada
La acción asumida por el CICS en todas estas condiciones de excepción es terminar
anormalmente la tarea excepto en el caso de NOSPACE, donde la tarea se suspende hasta que se
disponga de espacio.

CICS - 112
CICS CICS
Customer Information Control
System MANEJO DE TRANSIENT DATA

En aplicaciones batch, podemos especificar un archivo temporario que será borrado al


final del job, para pasar datos entre pasos del job.
A diferencia de las colas de temporary storage que pueden ser accedidas en modo
random o secuencial tantas veces como se desee, en una cola de TRANSIENT DATA los registros
son tomados de la cola en el mismo orden en que ellos fueron grabados. No pueden ser
actualizados. Si una tarea lee un registro de una cola, el registro se torna inaccesible. Ni esa tarea
ni ninguna otra podrá leerlo nuevamente.
Una cola de TRANSIENT DATA debe ser definida en la Tabla de Control de Destinos
(Destination Control Table) . Esta tabla indica que tipo de cola transient data será usada:
Intrapartition Destination o Extrapartition Destination.

Intrapartition Destination
La utilización de esta cola solo estará disponible dentro del ambiente de CICS en la que
está definida. Esta cola soporta la función de TRIGGER, es decir que por ejemplo cuando supere
una cierta cantidad de Items se disparará automáticamente la transaccion indicada en la DCT.

Extrapartition Destination
La utilización de esta cola estará disponible dentro y fuera del ambiente de CICS en la
que está definida. Puede ser de INPUT o de OUTPUT pero no ambas cosas. No permite la funcion
de TRIGGER.

CICS - 113
CICS CICS
Customer Information Control
System MANEJO DE TD – WRITEQ

El comando WRITEQ permite la generar un nuevo item de TD.


EXEC CICS WRITEQ TD
QUEUE (‘name’)
FROM (data-area)
[ LENGTH (data-value) ]
END-EXEC.
QUEUE especifica el nombre de la cola donde se generará el registro nuevo.
FROM identifica el área de trabajo en la que se encuentra el registro a grabar.
LENGTH identifica la longitud del registro a grabar. No debe especificarse si la TD es una
Extrapartition Transient Data con registros de longitud fija.

CICS - 114
CICS CICS
Customer Information Control
System MANEJO DE TD – READQ

El comando READQ permite recuperar un item de TD.


EXEC CICS READQ TD
QUEUE (‘name’)
INTO (data-area)
LENGTH (data-value)
END-EXEC.

Recordemos que los items de las TD se acceden en forma secuencial, por lo que no es
necesario incicar el ITEM de TD a recuperar.
Una vez recuperado el registro, es eliminado automáticamente de la TD.

CICS - 115
CICS CICS
Customer Information Control
System MANEJO DE TD – DELETEQ

El comando DELETEQ permite el borrado de una COLA TRANSIENT DATA.


EXEC CICS DELETEQ TD
QUEUE (‘name’)
END-EXEC.

IMPORTANTE: Si la COLA es una Intrapartition Destination, es posible borrar el contenido


de la cola entera con el comando DELETEQ. Todo el espacio asignado será liberado. Sin embargo,
cualquier transacción CICS puede grabar nuevos registros en la COLA que podrán ser leidos por la
misma transacción o por cualquier otra.

CICS - 116
CICS CICS
Customer Information Control
System TD – CONDICIONES DE EXCEPCION

QZERO la TD que se está leyendo está vacía.


LENGERR el registro leido es más largo que el especificado
NOSPACE el archivo VSAM de Intrapartition en el cual se graban los registros de TD carece de
espacio para grabar otro registro.
IOERR error de Entrada/Salida
NOTOPEN El archivo VSAM de destino no está abierto en el CICS.
QBUSY otra tarea está utilizando el recurso de destino de Intrapartition cuando se ejecuta un
comando READQ.
QIDERR no existe la cola especificada.

CICS - 117
CICS CICS
Customer Information Control
System CONCEPTO DE UNIDAD DE TRABAJO

• UNIDAD LOGICA DE TRABAJO


– CONCEPTOS
– SYNCPOINT
– SYNCPOINT ROLLBACK
– ABEND

CICS - 118
CICS CICS
Customer Information Control
System CONCEPTO DE UNIDAD DE TRABAJO

El CICS posee una facilidad que es el DINAMIC TRANSACTION BACKOUT y consiste en


restaurar automáticamente todos los recursos utilizados por una transacción que cancela por
condiciones de excepción no contempladas dentro del programa al estado del ultimo SYNCPOINT
ejecutado, o al estado que tenian antes del inicio de la transaccón que cancela si no se ejecuto
ningun SYNCPOINT dentro del programa.
Para aprovechar al máximo esta facilidad, es necesario conocer que es una UNIDAD
LOGICA de TRABAJO, donde comienza y donde termina.
Una UNIDAD LOGICA DE TRABAJO es el agrupamiento de todas las tareas de
actualización de recursos que deben ser ejecutadas por una o varias transacciones, y donde todas
deben tener éxito en su ejecución. Si alguna de ellas falla, debemos considerar como de ejecución
inválida a todas la transacciones intervinientes, aún a aquellas transacciones ejecutadas
exitosamente, porque el resultado general es inválido por la falla en una de sus partes.
La UNIDAD LOGICA DE TRABAJO comienza con la ejecución de la primera transacción
de actualización de lo que nosotros, en nuestro diseño de la aplicación, consideramos como una
UNIDAD LOGICA DE TRABAJO, y finaliza cuando:
a) Termina la Transacción de mayor nivel
b) Al momento de la ejecución del comando SYNCPOINT

CICS - 119
CICS CICS
Customer Information Control
System CONCEPTO DE UNIDAD DE TRABAJO

El CICS, por su parte, efectúa un SYNCPOINT (o punto de sincronismo) automático si la


transacción principal termina exitosamente, es decir sin ninguna cancelación por condiciones de
excepción.
Un ejemplo de UNIDAD LOGICA de TRABAJO, podría ser que un cliente efectúa una
transferencia de dinero desde su cuenta de ahorro a su cuenta corriente. Esto se puede dividir en
tres procesos
1) Efectuar el débito en la caja de ahorro
2) Efectuar el crédito en la cuenta corriente
3) Registrar el movimiento de transferencia
El conjunto de las tres transacciones podríamos considerarlo como nuestra UNIDAD
LOGICA de TRABAJO, ya que si alguna de ellas no se ejecuta en forma satisfactoria, toda la
operación debe ser considerada como no efectuada.
Solamente pensemos que pasaria si la transacción 1) finaliza normalmente, la
transacción 2) finaliza normalmente y la transacción 3) falla en la registración. Tendríamos un
problema en nuestros registros.
En este caso, deberíamos efectuar una vuelta atrás o BACKOUT de lo hecho por las
transacciones 1) y 2) para invalidar toda la transacción en su conjunto y dar cuenta al usuario
operador del problema encontrado al momento de ejecutar la transacción 3).

CICS - 120
CICS CICS
Customer Information Control
System SYNCPOINT

El comando SYNCPOINT permite establecer un punto de sincronismo de nuestra


UNIDAD LOGICA DE CONTROL, es decir, convalida todo lo hecho previamente a la ejecución de
este comando en los recursos actualizados.
EXEC CICS
SYNCPOINT
END-EXEC.

Recordemos que el CICS realiza un punto de sincronismo automático al momento de la


finalización de nuestra transacción principal. La utilización del SYNCPOINT dentro de nuestra
transacción principal debe ser ejecutada en el momento determinado, observando que se haya
cumplido por entero los que tenemos definido como UNIDAD LOGICA DE CONTROL.
Si nuestra aplicación utiliza recursos como el DL/I o DB2, el comando SYNCPOINT
también convalidará todos los cambios efectuados en ellos.

CICS - 121
CICS CICS
Customer Information Control
System SYNCPOINT ROLLBACK

El comando SYNCPOINT ROLLBACK permite restaurar todos los recursos actualizados


al estado inicial de nuestra UNIDAD LOGICA DE CONTROL, es decir, efectúa la vuelta atrás de todo
lo hecho previamente a la ejecución de este comando en los recursos actualizados.
EXEC CICS
SYNCPOINT ROLLBACK
END-EXEC.

Recordemos que el CICS realiza un punto de sincronismo automático al momento de la


finalización de nuestra transacción principal. La omisión del SYNCPOINT ROLLBACK dentro de
nuestra transacción principal debe ser ejecutada en el momento de detectar una condición de
excepción que ponga en peligro la integridad de lo que tenemos definido como UNIDAD LOGICA
DE CONTROL.
Si nuestra aplicación utiliza recursos como el DL/I o DB2, el comando SYNCPOINT
ROLLBACK también restarurará todos los cambios efectuados en ellos.

CICS - 122
CICS CICS
Customer Information Control
System ABEND

El comando ABEND además de restaurar todos los recursos actualizados al estado


inicial de nuestra UNIDAD LOGICA DE CONTROL, permite efectuar un vuelco de memoria para su
posterior analisis.
EXEC CICS ABEND
[ ABCODE (name) ]
[ CANCEL ]
END-EXEC.

ABCODE producirá un vuelco de memoria que será almacenado en el archivo especificado por
‘name’
CANCEL produce la suspensión de cualquier rutina de HANDLE ABEND vigente (para no entrar
en loop).
Si nuestra aplicación utiliza recursos como el DL/I o DB2, el comando ABEND también
restarurará todos los cambios efectuados en ellos.

CICS - 123
CICS CICS
Customer Information Control
System Transacciones propias de CICS

CICS - 124
CICS CICS
Customer Information Control
System Transacciones propias de CICS

CICS - 125

También podría gustarte