100% encontró este documento útil (1 voto)
173 vistas35 páginas

Cics

Este documento contiene información sobre CICS/VS (Customer Information Control System/Virtual Storage), un sistema operativo de tiempo compartido y gestión de transacciones. Explica los componentes clave de CICS/VS como las tablas, los módulos de gestión y los programas de control, y proporciona detalles sobre cómo controla las tareas, programas, terminales y ficheros.

Cargado por

Peter Campell
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 DOC, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
173 vistas35 páginas

Cics

Este documento contiene información sobre CICS/VS (Customer Information Control System/Virtual Storage), un sistema operativo de tiempo compartido y gestión de transacciones. Explica los componentes clave de CICS/VS como las tablas, los módulos de gestión y los programas de control, y proporciona detalles sobre cómo controla las tareas, programas, terminales y ficheros.

Cargado por

Peter Campell
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 DOC, PDF, TXT o lee en línea desde Scribd

CCCCCCCCC

CCCCCCCC
CC
CC
CCCCCCCC
CCCCCCCC

IIIIIIII
IIIIIIII
II
II
II
IIIIIIII

CCCCCCCC
CCCCCCCC
CC
CC
CCCCCCCC
CCCCCCCC

SSSSSSSSS
SSS
SSSSSSS
SSSSSSS
SSS
Bego¤a Ramos Barrios SSSSSSSSS

INDICE

CICS / VS.

Control tareas. Control programas ...................... 1

COMPONENTES DEL CICS/VS.

Modulos de gestion del CICS/VS ....................... 2


Tablas del CICS/VS ..................................... 3
Tabla de control de terminales (TCT) ............ 3
Tabla de control de programas (PCT) ............. 3
Tabla de programas de procesos (PPT) ............ 3
Tabla de control de ficheros (FCT) .............. 3
Tabla de control de destinos (DCT) .............. 3

CONTROL DE PROGRAMAS DEL CICS.

Return ................................................... 3
Link ..................................................... 4
Xctl ..................................................... 4

CONTROL DE TERMINALES DEL CICS.

Send ..................................................... 5
Receive .................................................. 5
Wait ..................................................... 6

CONTROL DE FICHEROS DEL CICS.

Read ..................................................... 6
Write .................................................... 7
Update ................................................... 7
Delete ................................................... 8
Unlock ................................................... 8

ACCESO SECUENCIAL A REGISTROS.

Browse / Starbr .......................................... 9


Readnext ................................................. 10
Readprev ................................................. 10
Endbr .................................................... 11

II

INDICE

GESTION DE DATOS.

Gestion de datos transitorios ......................... 11


Datos transitorios intraparticion ................. 12
Datos transitorios extraparticion ................. 12
Gestion de memoria temporal ........................... 12

GESTION DE DATOS TRANSITORIOS.

Escribir datos transitorios ............................ 13


Leer datos transitorios ................................ 14
Borrar datos transitorios .............................. 14
GESTION DE MEMORIA TEMPORAL.

Escribir memoria temporal .............................. 15


Leer memoria temporal .................................. 16
Borrar memoria temporal ................................ 16

APLICACION DE COMANDOS CICS.

Comando Syncpoint ....................................... 17


Comando Start ........................................... 17
Comando Abend ........................................... 18
Comando Address ......................................... 18
Comando Assign .......................................... 18

SOPORTE BASICO DE TRANSFORMACION DE DATOS (BMS).

Componentes de las operaciones del BMS ............... 19


Mapas fisicos ...................................... 19
Mapas de descripcion simbolica ................... 19
Macros de definicion de mapas fisicos ............... 19
Macro de definicion de conjunto de mapas ...... 19
Macro de definicion de mapas .................... 20
Macro de definicion de campos ................... 20
Fin de definicion de conjunto de mapas ........ 20
Descripciones de mapas simbolicos (DSECTS) ........... 20
Receive map ........................................ 21
Send map ........................................... 21
Condiciones que se pueden activar ............... 22

III

INDICE

C.I.C.S.

Transaccion .............................................. 23
Monitor DB/DC ............................................ 23
Multiprogramacion ........................................ 23
Modularidad y tablas ................................... 23
Modulos de gestion ..................................... 24
Programacion con comandos .............................. 24
Handle condition ........................................ 24
Como se arranca una transaccion ...................... 25
Funcion terminal control ............................... 25
Funcion file control ................................... 26

NORMATIVA PARA EL EMPLEO DE MAPAS EN TRANSACCIONES CICS.

Empleo de mapas en transacciones ..................... 28


Descripcion de una operacion de salida .............. 29
Parametros de control del terminal ................... 30
Infor. de la situacion de los datos a enviar ..... 30
Como realizar la descrip. simbolica de datos ....... 30
Forma de realizar la descrip. simbolica de datos .. 30
Corriente de salida ............................... 33
Limpieza del area de descripcion simbolica .......... 34

CAMBIOS EN PROGRAMAS CICS PARA CONVERTIR A COBOL II.

Obtencion de la fecha del sistema ................... 35


Instruccion ADDRESS ..................................... 35
Instruccion GETMAIN ..................................... 36

*********************
* *
* C I C S / V S *
* *
*********************

_________________________________________
| . C T R L T A R E A S . |
| ._______________________________. |
| | --------------------------- | C |
_________ | C | | PROGRAMAS ACTUALIZACION | | T |
| BASES | | T | | DE FICHEROS | | R | --------------
| DE |----| R | --------------------------- | L |----| TERMINALES |
| DATOS | | L | | | |____________|
|_______| | | --------------------------- | T |
| F | | OTROS | | E |
| I | | PROGRAMAS | | R |
| C | ___________________________ | M |
| H | | I |
| E | --------------------------- | N |
| R | | PROGRAMAS DE | | A |
| O | | APLICACION | | L |
| S | ___________________________ | E |
| ._______________________________. S |
| . C T R L P R O G R A M A S . |
|_______________________________________|
|
|
|
________|________
| BIBLIOTECA DE |
| PROGRAMAS |
|_______________|

2
*****************************
* COMPONENTES DEL CICS/VS *
*****************************

-----------------------
| MODULOS DE |
| GESTION |
| DEL CICS/VS |
|_____________________|
| |
| |
| |
----------------------- -----------------------
| TABLAS | | PROGRAMAS |
| DEL CICS/VS | | DEL CICS/VS |
|_____________________| |_____________________|

MODULOS DE GESTION DEL CICS/VS


==============================

- Control de tareas (KC).


- Control de memoria (SC) - Controla la memoria virtual de
la particion CICS/VS.
- Control de programas (PC).
- Control de terminales (TC).
- Soporte basico de transformacion (BMS) - Codificacion/Decodi-
ficacion.
- Control de ficheros (FC) - Soporta solo acceso directo.
- Control de datos transitorios (TD) - Secuencial (Colas intra-
par y extraparticion).
- Control de memoria temporal (TS).
- Control de tiempos. - Intervalos (IC).
- Control de volcados (DC).

TABLAS DEL CICS/VS


==================

- Tabla de control de terminales (TCT) - Define las caracte-


risticas de cada terminal mediante entradas de
la TCT. Cada terminal tiene una entrada en
esta tabla (TCTTE).

- Tabla de control de programas (PCT) - Relaciona cada co-


digo de transaccion con un programa.
- Tabla de programas de procesos (PPT) - Tiene una entrada
por cada programa usado en CICS/VS. Cada entra-
da tiene informacion sobre la posicion de un
programa.

- Tabla de control de ficheros (FCT) - Tiene una entrada por


cada fichero usado en CICS/VS. Cada entrada
guarda la informacion de DTF/DCB/ACB.

- Tabla de control de destinos (DCT) - Suministra al CICS/VS


la informacion sobre los conjuntos de datos u-
tilizados por datos transitorios.

************************************
* CONTROL DE PROGRAMAS DEL CICS *
************************************

============
= RETURN =
============

FUNCION: Dar control al CICS. El programa se termina y se


------- descarga.

FORMATO: EXEC CICS RETURN |TRANSID ('CODIGO-TRANSACCION')| *1


------- |COMMAREA(DATA-AREA)| *2
|LENGTH (VALOR-DATOS)| *3
END-EXEC.

*1 Se trata de dar un control temporal al CICS. Cuando el


operador teclee intro, se carga la transaccion que se
indica (4 digitos).

*2 Nombre de dato definido en la Working.

*3 Longitud de la commarea.

===========
= LINK =
===========

FUNCION: (Equivalente a CALL en BATCH). Dar control a una


------- rutina o programa a nivel inferior. Al final del
programa llamado debe ponerse GOBACK. Cuando termina
de ejecutarse se a a la sentencia siguiente del
programa principal.

FORMATO: EXEC CICS LINK PROGRAM ('NAME') *1


------- |COMMAREA(DATA-AREA)|
|LENGTH (DATA-VALUE)|
END-EXEC.

*1 Area de paso o de E/S. Ejem . Comprobar numeros tecleados


va siempre con el parametro LENGTH.

===========
= XCTL =
===========

FUNCION: Dar control a un programa al mismo nivel. El pro-


------- grama llamante se descarga y se carga el programa
llamado. Se encadenan programas y no se devuelve el
control al programa llamante a menos que se haga
otro XCTL.

FORMATO: EXEC CICS XCTL PROGRAM ('NAME') *1


------- |COMMAREA(DATA-AREA)|
|LENGTH (DATA-VALUE)|
END-EXEC.

CONDICIONES QUE SE PUEDEN ACTIVAR :


=================================

INVREQ : Peticion Invalida. - Se especifico un TRANSID para


una transaccion no asociada con un terminal.

PRMIDERR : Se ha especificado un nombre de programa que no


esta en la PPT, o que no esta disponible.

************************************
* CONTROL DE TERMINALES DEL CICS *
************************************

==================
= SEND =
==================

FUNCION: Envia datos a otro terminal.


-------

FORMATO: EXEC CICS SEND FROM (AREA-DATOS) *1


------- LENGTH (VALOR-DATOS) *2
|WAIT| *3
END-EXEC.

*1 - Area de memoria donde se conlocara el mensaje; puede


ser cualquier area definida en memoria.

*2 - Longitud del mensaje que se envia.

*3 - Asegura que la salida se ha completado antes de per-


mitir otro SEND o RECEIVE.

===================
= RECEIVE =
===================

FUNCION: Recibe datos desde otro terminal.


-------

FORMATO: EXEC CICS RECEIVE INTO (AREA-DATOS) *1


------- LENGTH (VALOR-DATOS) *2
END-EXEC.

*1 - Area de memoria desde la que se cogera el mensaje;


puede ser cualquier area definida en memoria.

*2 - Longitud del mensaje.

=============
= WAIT =
=============

FUNCION: Permite hacer proceso intermedio durante un WAIT,


------- con lo que conseguimos solapar la E/S de fiche-
ros con la E/S de terminales.

FORMATO: EXEC CICS WAIT TERMINAL


------- END-EXEC.

**********************************
* CONTROL DE FICHEROS DEL CICS *
**********************************

==========
= READ =
==========
FUNCION: Leer un registro en un fichero.
-------

FORMATO: EXEC CICS READ DATASET (NOMBRE) *1


------- INTO (AREA-DATOS) *2
|LENGTH (VALOR-DATOS)| *3
RIDFLD (AREA-DATOS) *4
|KEYLENGTH (VALOR-DATOS) GENERIC| *5
|GTEQ / EQUAL| *6
|UPDATE| *7
|RBA / RRN| *8
END-EXEC.

*1 Nombre del fichero definido para el CICS en la FCT.

*2 Nombre de dato definido en la Working.

*3 Si se omite se lee entero.

*4 Clave del registro. Obligatorio para ficheros indexados.

*5 Longitud de la clave, para leer por clave generica.

*6 Mayor o igual, igual. Si se omite asume y busca igual.

*7 Se pone si se quiere leer para modificar el registro.


No suelta el control hasta que no se haga el REWRITE.

*8 RBA : Se lee un registro por su direccion en el fichero


RRN : Se lee un registro por la posicion relativa que
ocupa. Se utiliza con ficheros relativos (El conte-
nido de la clave se identifica con la posicion
relativa dentro del fichero).

==============
= WRITE =
==============

FUNCION: Escribir un registro en un fichero.


-------

FORMATO: EXEC CICS WRITE DATASET (NOMBRE)


------- FROM (AREA-DATOS)
|LENGTH (VALOR-DATOS)| *1
RIDFLD (AREA-DATOS)
|RBA / RRN|
END-EXEC.

*1 Numero, longitud del registro que se quiere escribir.


================
= UPDATE =
================

FUNCION: Actualizar un registro. Para ensayar este mandato,


------- antes ha habido que dar un mandato READ con op-
cion UNDATE, el cual bloquea este registro para
otras peticiones. Al terminar el mandato REWRITE,
es liberado el registro. Si por alguna razon no
se ensaya el mandato REWRITE, es preciso ensayar
un mandato UNLOCK para liberar el registro.

FORMATO: EXEC CICS REWRITE DATASET (NOMBRE)


------- FROM (AREA-DATOS)
|LENGTH (VALOR-DATOS)|
END-EXEC.

============
= DELETE =
============

FUNCION: Borrar un registro en un fichero.


-------

FORMATO: EXEC CICS DELETE DATASET (NOMBRE)


------- RIDFLD (AREA-DATOS) *1
|KEYLENGTH (VALOR-DATOS) GENERIC|
END-EXEC.

*1 Si no se pone hay que hacer primero una READ con UP-


DATE.

=============
= UNLOCK =
=============

FUNCION: Libera el control exclusivo creado por una READ


------- con opcion UPDATE.

FORMATO: EXEC CICS UNLOCK DATASET (NOMBRE)


END-EXEC.

CONDICIONES QUE SE PUEDEN ACTIVAR :


=================================

DSIDER : Dataset identification error. Se manda leer desde un


fichero no identificado en las tablas del CICS.
INVREQ : Se ha hecho un REWRITE sin una previa READ con
UPDATE. Se puede poner como una HANDLE-CONDITION,
con un mandato a una rutina de error.
Tambien se activa cuando se hacen dos READ con
UPDATE sin una REWRITE en medio.

ILLOGIC : Ejemplo: Se hace una lectura, da not open, y sin


abrir se intenta volver a leer. Viene de un er-
ror anterior.

NOTFND : Registro no encontrado.

DUPREC : Intento escribir en un fichero indexado y la


clave ya existe.

ENDFILE : Fin de fichero durante un BROWSE.

LENGERR : Hay discordancia entre la longitud dada en LENGHT


y la longitud del registro que se va a leer.

DUPKEY : Definimos un indice alternativo para acceder a


un fichero. Avisa de que hay clave duplicada.

IOERR : Error de E/S en disco.

NOSPACE : No hay espacio para a¤adir registros.

NOTOPEN : Se va a leer por primera vez y ese fichero


esta cerrado.

***********************************
* ACCESO SECUENCIAL A REGISTROS *
***********************************

=====================
= BROWSE = STARBR =
=====================

FUNCION: Posicionarse en un registro determinado de un fi-


------- chero.

FORMATO: EXEC CICS STARBR DATASET (NOMBRE)


------- RIDFLD (AREA-DATOS)
|KEYLENGTH (VALOR-DATOS) GENERIC|
|GTEQ / EQUAL| *1
|RBA / RRN|
END-EXEC.

*1 Por defecto asume GTEQ.

10

====================
= READNEXT =
====================

FUNCION: Leer hacia adelante despues de posicionarse en un


------- registro con BROWSE.

FORMATO: EXEC CICS READNEXT DATASET (NOMBRE)


------- INTO (AREA-DATOS) *1
|LENGTH (AREA-DATOS)| *2
RIDFLD (AREA-DATOS) *3
END-EXEC.

*1 Nombre del campo de la working donde quiero almacenar


los datos.

*2 Longitud del campo que quiero leer. Asume la longitud


del registro.

*3 Variable de salida. Tiene la clave que ha leido.

===================
= READPREV =
===================

FUNCION: Leer o recuperar hacia atras despues de posicionar-


------- nos en un registro con BROWSE.

FORMATO: EXEC CICS READPREV DATASET (NOMBRE)


------- INTO (AREA-DATOS) *1
|LENGTH (AREA-DATOS)| *2
RIDFLD (AREA-DATOS) *3
END-EXEC.

*1 Nombre del campo de la Working donde quiero almacenar


los datos.

*2 Longitud del campo que quiero leer. Asume la longitud


del registro.
*3 Variable de salida. Tiene la clave que ha leido.

11

=============
= ENDBR =
=============

FUNCION: Finalizar una BROWSE en un fichero. Quita el pun-


------- tero.

FORMATO: EXEC CICS ENDBR DATASET ('NAME')


------- END-EXEC.

**********************
* GESTION DE DATOS *
**********************

Hay veces en que hay que guardar datos en un estado


intermedio, como :

- Mensajes a un terminal que esta ocupado.


- Datos creados por una tarea y que van a ser
utilizados por otra tarea.

El CICS/VS proporciona dos caminos para tratar estos


datos :

1.- Gestion de datos transitorios (TD).


2.- Gestion de memoria temporal (TS).

1.- GESTION DE DATOS TRANSITORIOS


*********************************

Los datos transitorios son una facilidad generalizada de


colas que permite que los datos se dirijan (o se adquie-
ran) a (o desde) un destino simbolico predefinido.

Habra varias colas de datos, una para cada destino di-


ferente. No se mezclaran clases diferentes de datos.

Cada ITEM de datos solo puede ser recuperado una vez.

12

Hay dos formas de datos transitorios :


1.- Datos transitorios intraparticion.- Colas de datos
creadas y leidas por tareas de la particion CICS/VS

2.- Datos transitorios extraparticion.- Son colas de da-


tos :

- Creadas fuera del CICS, y procesadas dentro del CICS


- Creadas dentro del CICS, y procesadas fuera del CICS

1.1.- DATOS TRANSITORIOS INTRAPARTICION


***************************************

Se almacenan en disco (DAM) y las colas se llaman des-


tinos intraparticion. Cada destino debe estar identificado
por un codigo de cuatro caracteres que estara contenido
en la tabla de control de destinos. Los registros son de
longitud variable.

Un destino intraparticion se puede usar por una o mas


tareas al mismo tiempo. Mas tarde empezara una tarea a re-
cuperar los datos de la cola.

1.2.- DATOS TRANSITORIOS EXTRAPARTICION


***************************************

Son conjuntos de datos secuenciales, en cualquier dispo-


sitivo secuencial. Los datos son registros secuenciales de
longitud

|FIJA | Y |BLOQUEADOS |
|VARIABLE| |DESBLOQUEADOS|

2.- GESTION DE MEMORIA TEMPORAL


*******************************

Es una facilidad de "Cuaderno de Notas", para almacenar


y precuperar datos. Los datos pueden ser almacenados por
una transaccion, y recuperados por otras, utilizando un nom-
bre unico, asignado por la tarea de origen.

Los datos almacenados por la memoria temporal, se pueden


recuperar mas de una vez.

13

La memoria temporal no se libera automaticamente una vez


recuperados los datos; debemos liberarla nosotros, y se li-
bera la cola completa.
Es posible almacenar varios ITEMS bajo un nombre simbo-
lico creando una cola de memoria temporal. Estos datos se
pueden recuperar:

- Secuencialmente.
- Directamente.- Especificando el numero de entrada
del ITEM dentro de la cola.

***********************************
* GESTION DE DATOS TRANSITORIOS *
***********************************

=================================
= ESCRIBIR DATOS TRANSITORIOS =
=================================

FUNCION: Escribe en una cola de datos transitorios.


-------

FORMATO: EXEC CICS WRITEQ TD QUEUE (NOMBRE) *1


------- FROM (AREA-DATOS) *2
|LENGTH (VALOR-DATOS)| *3
END-EXEC.

*1 Nombre simbolico de destino de los datos tal como esta


definido en la DCT.

*2 Area del programa desde la que se van a obtener los


datos.

*3 Longitud de los datos que se van a escribir.

14

=============================
= LEER DATOS TRANSITORIOS =
=============================

FUNCION: Lee en una cola de datos transitorios.


-------

FORMATO: EXEC CICS READQ TD QUEUE (NOMBRE) *1


------- INTO (AREA-DATOS) *2
|LENGTH (VALOR-DATOS)| *3
END-EXEC.

*1 Nombre simbolico de origen de los datos tal como esta


definido en la DCT.
*2 Area del programa desde la que se van a obtener los
datos.

*3 Longitud de los datos que se van a escribir.

===============================
= BORRAR DATOS TRANSITORIOS =
===============================

FUNCION: Solo se utiliza en las colas intraparticion, y bor-


------- ra todos los datos asociados con un destino. Co-
mo consecuencia de este mandato, la memoria se
libera aunque los datos no se hayan leido.

FORMATO: EXEC CICS DELETEQ TD QUEUE (NOMBRE)


------- END-EXEC.

CONDICIONES QUE SE PUEDEN ACTIVAR :


=================================

QZERO : Cola vacia en la READQ TD.

LENGERR : La longitud de los datos es mayor que el cam-


po de entrada.

NOSPACE : No hay espacio para a¤adir mas registros.

NOTOPEN : Un destina de TD esta cerrado.

QBUSI : Se intenta una READQ TD mientras otra esta es-


cribiendo en esa cola.

15

QIDERR : No hay entrada en la DCT para una cola de TD


referenciada.

INVREQ : La longitud de los datos es cero o excede la


longitud del chwh intervalo de control.

*********************************
* GESTION DE MEMORIA TEMPORAL *
*********************************

===============================
= ESCRIBIR MEMORIA TEMPORAL =
===============================

FUNCION: Escribe en una cola de memoria temporal.


-------

FORMATO: EXEC CICS WRITEQ TS QUEUE (NOMBRE) *1


------- FROM (AREA-DATOS) *2
LENGTH (VALOR-DATOS) *3
|ITEM (AREA-DATOS)|REWRITE|| *4
|MAIN / AUXILIARY| *5
END-EXEC.

*1 Nombre simbolico de destino de los datos tal como esta


definido en la DCT.

*2 Area del programa desde la que se van a obtener los


datos.

*3 Longitud de los datos que se van a escribir.

*4 ITEM.- En el area de datos se pondra el numero de re-


gistro que ha sido escrito. Empieza por uno, y se
incrementa de uno en uno.

REWRITE.- Si queremos actualizar un registro, usamos esta


opcion, especificando en ITEM el numero de registro
que queremos actualizar.

*5 MAIN.-Memoria principal.

AUXILIARY.- DASD.

16

===========================
= LEER MEMORIA TEMPORAL =
===========================

FUNCION: Lee en una cola de memoria temporal.


-------

FORMATO: EXEC CICS READQ TS QUEUE (NOMBRE) *1


------- INTO (AREA-DATOS) *2
LENGTH (VALOR-DATOS) *3
|ITEM (AREA-DATOS) / NEXT| *4
END-EXEC.

*1 Nombre simbolico de origen de los datos tal como esta


definido en la DCT.

*2 Area del programa desde la que se van a obtener los


datos.

*3 Longitud de los datos que se van a escribir.

*4 ITEM.- En el area de datos se pondre el numero de re-


gistros que se va a leer.

NEXT.- Se va a recuperar el siguiente registro logico de


la cola, dentro de la tares.

=============================
= BORRAR MEMORIA TEMPORAL =
=============================

FUNCION: Libeta la cola de memoria temporal, y todos los


------- datos asociados a ella se borraran.

FORMATO: EXEC CICS DELETEQ TS QUEUE (NOMBRE)


------- END-EXEC.

CONDICIONES QUE SE PUEDEN ACTIVAR :


=================================

ITEMERR : El ITEM utilizado en la READQ TS o una WRITEQ


TS esta fuera de los limites.

LENGERR : La longitud de los datos es mayor que el cam-


po de entrada.

NOSPACE : No hay espacio para a¤adir mas registros.

17

IOERR : Irrecuperable error de entrada/salida para TS.

QIDERR : No esite una cola TS con ese nombre.

INVREQ : La longitud de los datos es cero o excede la


longitud del intervalo de control.

*********************************
* AMPLIACION DE COMANDOS CICS *
*********************************

=======================
= COMANDO SYNCPOINT =
=======================

FUNCION: Punto de sincronismo. Todas las actualizaciones hechas


------- desde el comienzo de la tarea hasta la ejecucion
del SYNCPOINT no se pierden si despues de el o-
curre :
-Terminacion anormal de la tarea.
-Caida del CICS.

FORMATO: EXEC SYNCPOINT


------- END-EXEC.

===================
= COMANDO START =
===================

FUNCION: Arranca desde una tarea una transaccion contra otro


-------- terminal pasando los datos necesarios si lo desea

FORMATO: EXEC CICS START TRANSID (TRANSACCION)


------- |FROM (AREA-DATOS)|
|LENGTH (VALOR-DATOS)|
TERMID (ID-TERMINAL)
END-EXEC.

18

===================
= COMANDO ABEND =
===================

FUNCION: Sirve para terminar anormalmente una tarea. La me-


------- moria asociada a esta tarea es liberada, y op-
cionalmente un DUMP con el codigo indicado en
ABCODE es obtenido de la tarea.

FORMATO: EXEC CICS ABEND |ABCODE (CODIGO-DE-ABEND)|


------- END-EXEC.

=====================
= COMANDO ADDRESS =
=====================

FUNCION: Sirve para tener acceso a las determinadas areas.


-------

FORMATO: EXEC CICS ADDRESS |CSA (PTR-CSA)|


------- |CWA (PTR-CWA)|
|TWA (PTR-TWA)|
|TCTUA (PTR-TCTUA)|
END-EXEC.

====================
= COMANDO ASSIGN =
====================

FUNCION: Sirve para asignar areas de datos.


-------

FORMATO: EXEC CICS ASSIGN TWALENG (AREA-DATOS-1)


------- CWALENG (AREA-DATOS-2)
OPID (AREA-DATOS-3) .....ID-OPERADOR
END-EXEC.

19

*****************************************************
* SOPORTE BASICO DE TRANSFORMACION DE DATOS (BMS) *
*****************************************************

COMPONENTES DE LAS OPERACIONES DEL BMS


**************************************

MAPAS FISICOS
=============

Contienen informacion sobre :

- Posiciones de los campos.

- Atributos.

- Caracteristicas dependientes de los disposi-


vos.

- Datos de cabecera e iniciales.

MAPAS DE DESCRIPCION SIMBOLICA


==============================

Describen las areas de entrada/salida tal como son vis-


tas por los programas de aplicacion.

MACROS DE DEFINICION DE MAPAS FISICOS


*************************************

MACRO DE DEFINICION DE CONJUNTO DE MAPAS


========================================

Nombre-Conjunto-De-Mapas DFHMSD
TYPE = MAP / FINAL
|,MODE = IN / OUT / INOUT|
|,TERM = TIPO-DE-TERMINAL|
|,LANG = COBOL / ASM / PL1|
|,CTLR = (|PRINT| |,FREEKB| |,ALARM| |,FRSET|)|
|,DATA = FIELD / BLOCK|

20

MACRO DE DEFINICION DE MAPAS


============================

Nombre-De-Mapa DFHMDI
|SIZE = (LINEA,COLUMNA)
|,LINE = NUMERO / NEXT / SAME|
|,COLUMN = NUMERO / NEXT / SAME|
|,JUSTIFY = (|LEFT / RIGHT| |,FIRST / LAST|)|
|,TIOAPFX = YES /NO|
|,DATA = FIELD / BLOCK|

MACRO DE DEFINICION DE CAMPOS


=============================

|NOMBRE-DE-CAMPO| DFHMDF
|,POS = NUMERO / (LINEA,COLUMNA)|
|ATTRB = (|ASKIP / PROT / UNPROT| |,NUM|
|,BTR / NORM / DRK| |,DET| |,IC| |,FSET|)|
|,LENGTH = NUMERO|
|,JUSTIFY = (|LEFT / RIGHT| |,BLANK / ZERO|)|
|,INITIAL = 'CUALQUIER INFORMACION USUARIO'|
|,GPRNAME = NOMBRE-GRUPO|
|,OCCURS = NUMERO|
|,PICIN = 'VALOR'|
|,PICOUT = 'VALOR'|

FIN DE DEFINICION DE CONJUNTO DE MAPAS


======================================

DFHMSD TYPE = FINAL

DESCRIPCIONES DE MAPAS SIMBOLICOS (DSECTS)


******************************************
Nombre-Conjunto-De-Mapas DFHMSD
TYPE = DSECT
|,BASE = NOMBRE|
|,TIOAPFX = YES / NO|
|,STORAGE = AUTO|

Los nombres de los campos en las DSECTC de entrada


tienen el sufijo "I", y en las de salida el sufijo "O".

21

==================
= RECEIVE MAP =
==================

FUNCION: Recibe un mapa.


-------

FORMATO: EXEC CICS RECEIVE MAP (NOMBRE) *1


------- |MAPSET (NOMBRE)| *2
|FROM (AREA-DATOS)| |LENGTH (VALOR)| *3
|TERMINAL |ASIS|| *4
END-EXEC.

*1 - Nombre del mapa.

*2 - Nombre del conjunto de mapas.

*3 - Especifica que los datos proceden de otra area del


programa, asi como su longitud.

*4 - Los datos se provienen de un terminal.

=============
= SEND MAP =
=============

FUNCION: Envia un mapa.


-------

FORMATO: EXEC CICS SEND MAP (NOMBRE) *1


------- |MAPSET (NOMBRE)| *2
|TERMINAL |WAIT|| *3
|FROM (AREA-DATOS)| |LENGTH (VALOR)| *4
|DATAONLY / MAPONLY| *5
END-EXEC.

*1 - Nombre del mapa.

*2 - Nombre del conjunto de mapas.

*3 - Los datos se envian a un terminal.


*4 - Area definida en la aplicacion desde la que se van a
transformar los datos, asi como su longitud.

*5 - DATAONLY.- Solo se van a escribir los datos del pro-


grama.

- MAPONLY.- Solo se van a escribir los datos por defec-


to del mapa.

22

CONDICIONES QUE SE PUEDEN ACTIVAR :


=================================

MAPFAIL : Los datos tienen longitud cero, o entrada sin


formato.

INVMPSZ : El mapa especificado es demasiado ancho para el


area de representacion de la pantalla.

23

=========
C.I.C.S
=========

* TRANSACCION.
-----------

Es uno o varios programas que se van a ejecutar como resultado


de una peticion. Puede tener asociados varios programas, en prin-
cipio, el programa esta asociado a una unica transaccion y de esta
se puede arrancar otra transaccion.

* MONITOR DB/DC.
-------------

Monitor de teleproceso con base de datos, encargado de comuni-


carnos con el Host y acceder a los datos atraves de funciones. El
cics permite dar de alta nuevos terminales sin modificar el pro-
grama que envia el mensaje.

* MULTIPROGRAMACION.
-----------------
La multiprogramacion reparte el tiempo de CPU entre varios
programas, pero en cada instante hay un solo programa en la CPU.

Multitasking : (tareas)
Multihreading : Puede haber varios se¤ores ejecutando el mismo
programa a la vez.

* MODULARIDAD Y TABLAS.
--------------------

Para el ordenador el cics es un unico Job, es el solo. El


cics ejecuta programas de usuario, tiene tablas y es una coleccion
de programas.

24

* MODULOS DE GESTION.
------------------

KCP : mira como avanza cada tarea,...


SCP : antes de meter un programa en memoria, mirara se cabe.
TCP : mensajes.
FCP : read y write se pueden sustituir en cics.
TDP : programas que circulan de un programa a otro.
PCP : mira si el programa esta en memoria cargado o no.

Para todo esto utilizan las tablas de control.

* PROGRAMACION CON COMANDOS.


-------------------------

EXEC CICS
funcion argumento
END-EXEC

- valor-de-datos : variable cobol o una constante.


- area-de-datos : variable cobol.
- apuntador : direccion a la que hay que ir a buscar la variable.
- nombre : literal, nombre de variable.
- etiqueta : nombre etiqueta en cobol.

Cuando hacemos una peticion a cics, nos dara una respuesta,


como el sqlcode en DB2, pero hay dos opciones:

- El equivalente al sqlcode, EIBRCODE.


- Mediante la funcion HANDLE CONDITION.
* HANDLE CONDITION.
----------------

EXEC CICS HANDLE CONDITON


condicion(etiqueta)
condicion(etiqueta)
END-EXEC.

Establece a que etiqueta se va a saltar en caso de tener un


error determinado.

Los errores en vez de darlos con numeros los da con literales.


En la HANDLE CONDITION se le dice "para todo el programa si te
encuentras con un 'map file' te vas a 'esta etiqueta', y asi
sucesivamente". No es muy recomendable porque parte toda la es-
tructura JAKCSON.

25

Si se pone la HANDLE CONDITION, no se puede usar el EIBRCODE.


Se pueden poner varias HANDLE CONDITION en el mismo programa.
Cuando queremos anular una condicion de la HANDLE CONDITION pone-
mos la condicion pero sin etiqueta.

* COMO SE ARRANCA UNA TRANSACCION.


-------------------------------

Llega un identificador de transaccion tecleado en un terminal.


El TCP (programa de control de terminales) y usando la tabla TCT
reconoce los datos de entrada del terminal. SCP (programa de
control de memoria) autoriza el almacenamiento de estos datos en
en la TIOA (terminal input output area). Una vez autorizado el
almacenamiento, el TCP coloca los datos ahi y coloca un puntero
en la zona de la TCT que le corresponde a ese terminal. Si no hay
tarea asociada a ese terminal, el TCP pasa control al KCP (progra-
ma de control de tareas), quien reconoce los datos de TIOA. El SCP
autoriza el almacenamiento de esa tarea en el TCA y el KCP prepara
los datos para esta tarea. El KCP atraves de PCT (tabla de control
de programas) busca el programa asociado con esa transaccion. Si
el PPT dice que no esta pasa control a PCP (programa de control de
programas) que obtiene el programa de su libreria LOAD y lo coloca
en memoria y entonces el KCP pasa control al programa de aplica-
cion.

* FUNCION TERMINAL CONTROL.


------------------------

EXEC CICS SEND


FROM(area-datos)
LENGTH(valor-datos)
{WAIT}
END-EXEC.

Su funcion es la de envio de datos al terminal.

EXEC CICS
RETURN
END-EXEC.

Una de las funciones es terminar la transaccion y devolver


control al cics. Para su uso basico no necesita ningun parametro.
Despues del RETURN siempre tiene que ir un GOBACK.

26

EXEC CICS RECEIVE


INTO(area-datos)
LENGTH(valor-datos)
END-EXEC.

Recepciona datos desde un terminal.

EXEC CICS HANDLE AID


opcion (etiqueta)
opcion (etiqueta)
END-EXEC.

Hace lo mismo que la HANDLE CONDITION pero en vez de manejar


condiciones de error, son teclas que nosotros damos desde el
terminal. Podemos evitar el quedarnos en un bucle. Para ver la
tecla que nos han pulsado podemos utilizar tambien la funcion
EIBAID. Se suele hacer por medio de una copy .

* FUNCION FILE CONTROL.


--------------------

El cics va a controlar los ficheros, no tendremos que abrirlos


ni cerrarlos, para eso utilizamos las funciones cics.

Los VSAM son de 3 tipos:

- KSDS : (KEY SECUENCIED DATA SET)


- ESDS : (ENTRY SECUENCIED DATA SET)
- RRDS : (RELATIVE REGISTER DATA SET)

VSAM, conjunto de programas que componen lo que se denomina


metodo de acceso que nos proporcionan unas ciertas facilidades
para acceder a los datos. Es a los ficheros lo que DB2 a las
tablas. Maneja tres tipos de ficheros:

- KSDS , son los ficheros ordenados por clave. Hay una cla-
ve principal por la que se ordenan los ficheros
fisicamente, reservando parte del espacio libre por
necesidades de reorganizacion.
- ESDS, ficheros secuenciales ordenados por el orden de
llegada, parecidos a los secuenciales pero con la
posibilidad de definir claves secuendarias.

- RRDS, funcionan conociendo la posicion relativa del


registro dentro del fichero, acceso directo.

27

EXEC CICS
READ DATASET(nombre) *1
INTO(area-datos) *2
RIDFLD(area-datos) *3
{KEYLENGTH(valor-datos)} *4
{UPDATE} *5
{GTEQ|EQUAL} *6
{LENGTH(valor-datos)}
END-EXEC.

Lectura de un conjunto de datos de acceso directo.

*1 nombre del fichero en CICS definido en la FCT.

*2 donde queremos que nos deje los datos.

*3 contiene la clave que queremos leer. Hay que mover a este


campo la clave antes de leer.

*5 el registro que vamos a leer sa va a quedar pillado para


nosotros, se queda en exclusiva hasta que lo escriba.

EXEC CICS REWRITE


DATASET(nombre)
FROM(area-datos) *2
END-EXEC.

Se usa para actualizar un registro existente en un conjunto de


datos.

*2 especifica el area de datos desde el que se desea actualizar


el registro.

Las operaciones a seguir son:

- Lanzar un comando READ con opcion UPDATE.

- Realizar los datos necesarios en el area de datos.

- Ensayar un comando REWRITE.

- Si el comando REWRITE falla, sa debera ejecutar un comando


UNLOCK, para liberar el registro bloqueado.

EXEC CICS WRITE


DATASET(nombre)
FROM(area-datos)
RIDFLD(area-datos)
{MASSINSERT}
END-EXEC.

Sirve para a¤adir un nuevo registro en un conjunto de datos.

28

NORMATIVA PARA EL EMPLEO DE MAPAS EN


TRANSACCIONES CICS
=======================================

Con el fin de optimizar el uso de la red y no transmi-


mitir informacion superflua, es necesario aplicar por todos
los programadores los parametros "MAPONLY" y "DATAONLY" cor-
rectamente.

En la recepcion de mapas desde el terminal (RECEIVE MAP),


solo se reciben aquellos datos que han sido modificados.

En el envio (SEND MAP) si no se usan dichos parametros


se envia al terminal el mapa fisico y los datos.

Con el parametro "MAPONLY" en la send, solamente se envia


al terminal el mapa fisico.

Con el parametro "DATAONLY" en la send, solamente se envia


al terminal los campos que tiene valor en el area de des-
cripcion simbolica.

Por lo tanto, excepto la primera vez en que puede ser


necesario enviar todo, se hace obligatorio el empleo de estos
parametros.

Se definiran los campos en los mapas con "MDT OFF" es


decir no poner el parametro "FSET". La opcion DATAONLY se
encargara de mantener la condicion de modificados de los
campos en los sucesivos reenvios .

Si un campo tiene en su atributo el MDT en ON, sera


recibido en la primera operacion de entrada. Al desaparecer
este atributo habra campos que, aunque se visualicen en la
pantalla, no seran recibidos por el programa de aplicacion
y por ello este debera tener especial cuidado en tratar es-
ta ausencia de informacion de entrada, se asume en este caso
los ultimos valores actualizados sobre la copia del mapa.

Toda esta normativa es asumida standart cuando se progra-


ma con el lenguaje CSP.

Se incluye a continuacion algunas especificaciones sobre el


uso los parametros mencionados.

29
DESCRIPCION DE UNA OPERACION DE SALIDA
======================================

Una operacion de salida, en general implica:

1.- El BMS recoge del Area de Descripcion Simbolica del


programa los datos a enviar al terminal.

2.- Construye, utilizando la informacion del Mapa Fisico y


la informacion proporcionada en el mandato Send Map, el men-
saje respecto a un terminal.

3.- Envia por medio del programa de Control de Terminales


el mensaje al terminal concreto.

Una operacion de salida se pide por medio del mandato:

SEND MAP(nombre)
FROM(area-dato)
DATAONLY | MAPONLY
LENGTH(valor-dato)
MAPSET(nombre)
FMHPARM solo LUs
REQID(nombre)
LCD(nombre) solo LUs
CURSOR(valor-dato)
SET(ref-ptr) | TERMINAL | PAGING
WAIT
ACCUM
ERASE | ERASEAUP
PRINT
FREEKB
ALARM
FRSET
L40 | L64 | L80 | HONEOM,
NLEOM
LAST solo LUs

Condiciones:

IGREQCD, IGREQID, INVLDC, INVMPSZ,


INVREQ, OVERFLOW, RETPAGE, TSIOERR, WRBRK

30

PARAMETROS DE CONTROL DEL TERMINAL


==================================

Estos parametros producen que el BMS origine en la opera-


cion de salida una corriente de datos con informacion para
el control del terminal.
FREEKB ERASE/ERASEAUP ALARM CURSOR
FRSET PRINT NLEOM L40 L64 L80

INFORMACION DE LA SITUACION DE LOS DATOS A ENVIAR


=================================================

La opcion por defecto es el area de descripcion simboli-


ca del programa. Podemos especificar otra area con la opcion
FROM, LENGTH.

COMO REALIZAR LA DESCRIPCION SIMBOLICA DE LOS DATOS


===================================================

Disponemos de tres opciones:

MAPONLY DATAONLY NINGUN PARAMETRO

FORMA DE REALIZAR LA DESCRIPCION SIMBOLICA DE LOS DATOS


=======================================================

Ha de tenerse en cuenta como realiza el BMS la fusion


de los datos con la informacion existente en el mapa fisi-
co.

De igual forma se tendra en cuenta los elementos involu-


crados en la construccion de los mensajes por el BMS.

31

La informacion que el BMS podra utilizar estara en:

Datos del programa

Datos en el mapa fisico

--------------- -----------------
| DATOS | | INFORMACION |
| EN EL | --------- | EN |
| PROGRAMA |===>| BMS |<===| MAPA FISICO |
| | |---|---| | |
|-------------| | |---------------|
|
|
V
-----------------------------------
| CORRIENTE DE SALIDA |
-----------------------------------
A partir de estos datos, el BMS debe crear una corriente
de salida, controlada con los parametros

MAPONLY DATAONLY SIN OPCIONES

Con la opcion MAPONLY, el BMS no hace caso del area de


transformacion y envia al terminal la informacion existente
en el mapa fisico.

-----------------
| |
| INFORMACION |
--------- | EN |
| BMS |<====| MAPA FISICO |
|-------| |---------------|
|
|
|
V
-------------------------------
| CORRIENTE DE SALIDA |
|-----------------------------|

Con la opcion DATAONLY, especificamos al bms que no debe


utilizar la informacion existente en el mapa fisico.

La corriente de salida se construye con la informacion


existente en el area de descripcion simbolica.

32

|---------------|
| |
| DATOS | |--------|
| EN EL |=======>| BMS |
| PROGRAMA | |--------|
|---------------| |
|
|
V
|-----------------------------|
| CORRIENTE DE SALIDA |
|-----------------------------|

El BMS utiliza esta filosofia:

|---------|-----------|-----------|------------|------------|
| CAMPOA | X'00' | X'00' | NO X'00' | NO X'00' |
|---------|-----------|-----------|------------|------------|
| CAMPOO | X'00' | NO X'00' | X'00' | NO X'00' |
|---------|-----------|-----------|------------|------------|
| NO ENVIA | ENVIA | ENVIA | ENVIA |
| NADA | CAMPOO | CAMPOA | CAMPOA Y |
| | | | CAMPOO |
|-----------|-----------|------------|------------|

La opcion DATAONLY, sirve para limitar el numero de carac-


teres que el CICS transmitira al terminal.

EN OPCION DATAONLY X'00' SIGNIFICA CARACTER DE NO-ENVIO

Un ejemplo tipico de la opcion DATAONLY es el envio de


mensajes de error en procesos de validacion.

En una operacion de entrada tenemos:

|------------------------|
| | |-------------|
| RECEIVE MAP..... |<<=====| TERMINAL |
| | |-------------|
|------------------------|
| |
| VALIDACION DE ENTRADA |
| |
|------------------------|
| | |-------------|
| SI ERROR, ENVIO |=====>>| TERMINAL |
| DE MENSAJE | |-------------|
|------------------------|

33

En estas operaciones de envio de mensaje de error, podemos


utilizar la opcion DATAONLY para enviar solamente un atributo
que destaque el campo erroneo, por ejemplo poniendolo mas
brillante y aprovechar la informacion existente en el buffer
del terminal.

Si no se especifica ninguna opcion, el BMS realiza la fu-


sion entre la informacion actual en el area de transforma-
cion y la informacion existente en el mapa fisico.

|-----------------| |------------------|
| | | |
| DATOS | |-------| | INFORMACION |
| EN EL |===>>| BMS |<<==| EN |
| PROGRAMA | |-------| | MAPA FISICO |
|-----------------| | |------------------|
|
|
V
|--------------------------------|
| CORRIENTE DE SALIDA |
|--------------------------------|

Para realizar esta fusion, el bms considera los datos pa-


ra campos variables existentes en el area de descripcion
simbolica segun esta filosofia:

|----------|----------|-----------|-----------|-----------|
| CampoA | X'00' | X'00' | NO X'00' | NO X'00' |
|----------|----------|-----------|-----------|-----------|
| CampoO | X'00' | NO X'00' | X'00' | NO X'00' |
|----------|----------|-----------|-----------|-----------|
| ATRIBUTO | ATRIBUTO | ATRIBUTO | ATRIBUTO |
| Y DATO | DEL MAPA | DEL AREA. | Y DATO |
| DEL | FISICO. | DATO DEL | DEL |
| MAPA | DATO DEL | MAPA | AREA |
| FISICO | AREA. | FISICO | |
|----------|-----------|-----------|-----------|

Esta forma de actuar, implica que el programa puede modi-


ficar dinamicamente los atributos definidos para un campo se-
gun las circunstancias, colocando simplemente el atributo de-
seado en el area de descripcion simbolica.

34

Por otra parte, si se desea enviar una informacion al


terminal, habra que limpiar previamente con ceros binarios el
area de descripcion simbolica de tal forma que el formato
deseado para estos datos no se modifique.

Una operacion de salida basica en bms supone estos pasos:

LIMPIAR EL AREA DE DESCRIPCION SIMBOLICA A X'00'


MODIFICAR DINAMICAMENTE ATRIBUTOS (COPIAR DFHBMSCA)
MOVER DATOS A CAMPOS DE SALIDA
REALIZAR LA PETICION DE SALIDA AL BMS

LIMPIEZA DEL AREA DE DESCRIPCION SIMBOLICA


==========================================

Cada lenguaje de programacion tiene una tecnica diferente.

El objetivo es poner a ceros binarios, X'00', toda el area


de descripcion simbolica.

NOTA.- Para una informacion mas detallada dirigirse al ma-


nual, Programacion Avanzada de CICS/VS.

35

****************************************************************
*** ***
**** CAMBIOS EN PROGRAMAS CICS PARA CONVERTIR A COBOL II ****
*** ***
****************************************************************

**********************************************************************
* Obtencion de la Fecha del Sistema *
*--------------------------------------------------------------------*
* En los programas Cics no esta permitida la instruccion: *
* ACCEPT xxxxxx FROM DATE *
* *
* La Fecha del Sistema se podra obtener mediante las instrucciones: *
* EXEC CICS ASKTIME ABSTIME | (ver formato en fotocopias de *
* EXEC CICS FORMATTIME | normas de conversion a Cobol II) *
**********************************************************************

***********************************************************************
* Instruccion ADDRESS *
*---------------------------------------------------------------------*
* - Quitar de la LINKAGE-SECTION la lista de BLL. *
* *
* - Definir en la WORKING-STORAGE SECTION: *
* 01 APUNTADOR. *
* 01 RAPUNTADOR REDEFINES APUNTADOR *
* *
* - Codificar en la PROCEDURE DIVISION: *
* EXEC CICS ADDRESS identificador1(APUNTADOR) END-EXEC. *
* SET ADDRESS OF identificador2 TO APUNTADOR. *
* MOVE RAPUNTADOR TO identificador3. *
* *
* DONDE: *
* . identificador1 = estructura que direccionaba la BLL *
* (TCTUA, CWA ...) *
* . identificador2 = nombre del registro (nivel 01) *
* . identificador3 = campo en el que se guarda la direccion *
* *
***********************************************************************

36

***********************************************************************
* Instruccion GETMAIN *
*---------------------------------------------------------------------*
* - Quitar de la LINKAGE-SECTION la lista de BLL. *
* *
* - Definir en la WORKING-STORAGE SECTION: *
* 01 APUNTADOR. *
* 01 RAPUNTADOR REDEFINES APUNTADOR *
* *
* - Codificar en la PROCEDURE DIVISION: *
* EXEC CICS GETMAIN SET (APUNTADOR) LENGTH (longitud) *
* INITIMG (identificador1) END-EXEC. *
* SET ADDRESS OF identificador2 TO APUNTADOR. *
* MOVE RAPUNTADOR TO identificador3. *
* *
* DONDE: *
* . identificador1 = valor al que se inicializa el area *
* . identificador2 = nombre del registro (nivel 01) *
* . identificador3 = campo en el que se guarda la direccion *
* *
***********************************************************************

También podría gustarte