Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual de Cics
Manual de Cics
CICS
Septiem bre
INDICE GENERAL
MÓDULO I ................................................................................................................................................ 5
INTRODUCCIÓN A CICS ................................................................................................................................. 5
Procesamiento en Lotes ............................................................................................................................ 5
Procesamiento en línea ............................................................................................................................ 7
Flujo de las Transacciones CICS .............................................................................................................. 8
El Entorno CICS .................................................................................................................................... 11
Componentes del CICS ........................................................................................................................... 12
Interfase a Nivel de Comando ................................................................................................................ 15
Características de un programa CICS .................................................................................................... 16
Programas CICS Conversacionales y Pseudo-Conversacionales ............................................................ 17
Concepto de COMMAREA ..................................................................................................................... 17
Bloque de Interfase de Ejecución (EIB) .................................................................................................. 17
MÓDULO II ............................................................................................................................................. 19
CONTROL DE PROGRAMAS ........................................................................................................................... 19
Consideraciones sobre los programas de aplicación .............................................................................. 19
Invocación de un programa .................................................................................................................... 20
Comandos de Control de Programas ...................................................................................................... 20
Programa modular ................................................................................................................................. 24
Iniciación de una Tarea ......................................................................................................................... 27
CONTROL DE ARCHIVOS .............................................................................................................................. 29
Definición de Areas de trabajo de Entrada/Salida .................................................................................. 29
Comandos de Control de Archivos ......................................................................................................... 30
Lectura de un registro ............................................................................................................................ 30
Atención de condiciones de excepción .................................................................................................... 32
Actualización de un registro ................................................................................................................... 35
Eliminación de Registros de un Archivo VSAM ...................................................................................... 37
Liberación de un Registro ...................................................................................................................... 37
Resumiendo ............................................................................................................................................ 41
Agregado de Registros ........................................................................................................................... 41
MÓDULO III ........................................................................................................................................... 45
CONTROL DE ARCHIVOS II ........................................................................................................................... 45
Qué es la búsqueda secuencial (Browse)?............................................................................................... 45
Consideraciones VSAM .......................................................................................................................... 46
Consideraciones DAM/BDAM ................................................................................................................ 46
Consideraciones ISAM ........................................................................................................................... 46
Pasos para una búsqueda secuencial ...................................................................................................... 46
Posicionar .............................................................................................................................................. 48
Lectura de Registros............................................................................................................................... 52
Reconocimiento de fin de archivo ........................................................................................................... 55
Fin de Archivo Físico ............................................................................................................................. 56
Página -1-
Fin de Archivo Lógico ............................................................................................................................ 56
Terminación de la búsqueda ................................................................................................................... 57
Reposicionamiento ................................................................................................................................. 60
El procesamiento secuencial VSAM con saltos ....................................................................................... 63
Técnicas adicionales de Procesamiento .................................................................................................. 63
Búsquedas secuenciales múltiples .......................................................................................................... 63
Actualización de Registros .................................................................................................................... 65
Ejemplos de Uso..................................................................................................................................... 68
Consideraciones sobre diseño de aplicaciones ....................................................................................... 71
Tiempo de respuesta ............................................................................................................................... 72
Puja por recursos ................................................................................................................................... 72
Indice alternativo de VSAM .................................................................................................................... 73
La condición de excepción clave duplicada ............................................................................................ 75
Actualización de Registros ..................................................................................................................... 77
Relación entre el CICS y el DB2 ............................................................................................................ 77
Relación entre planes, programas y transacciones ................................................................................. 77
Manejo de unidades de trabajo en CICS................................................................................................. 78
Performance ........................................................................................................................................... 78
Temporary Storage (TS) ......................................................................................................................... 79
Conceptos de Almacenamiento Temporario ........................................................................................... 79
Registros de Almacenamiento Temporario ............................................................................................. 79
Condiciones de Excepción ...................................................................................................................... 80
Comandos de Almacenamiento Temporario. ........................................................................................... 81
Comando WRITEQ ................................................................................................................................. 81
Comando READQ .................................................................................................................................. 83
Comando DELETEQ .............................................................................................................................. 85
MÓDULO IV............................................................................................................................................ 86
Interprete a nivel comandos ................................................................................................................... 86
Invocación del intérprete........................................................................................................................ 86
Transacciones CECS .............................................................................................................................. 86
Transacción CECI .................................................................................................................................. 87
Diseño de pantalla ................................................................................................................................. 89
Línea de comandos ................................................................................................................................. 89
Línea de estado ...................................................................................................................................... 89
Area de información ............................................................................................................................... 91
Area de mensajes ................................................................................................................................... 93
Teclas de función ................................................................................................................................... 94
Area de teclas de función ....................................................................................................................... 95
DEPURACIÓN DE PROGRAMAS CEDF .......................................................................................................... 111
Detección de errores ............................................................................................................................ 111
Errores en la Preparación de los Programas ........................................................................................ 111
Errores en tiempo de Ejecución............................................................................................................ 112
Facilidad de Rastreo ............................................................................................................................ 112
Columnas ‘Trace Type’ (Tipo de Rastreo) ............................................................................................ 117
Columnas ‘Field A’ y ‘Field B’ ............................................................................................................ 117
Columna ‘REQD’ ................................................................................................................................. 117
Página -2-
Columna ‘ID’ ....................................................................................................................................... 117
Columna ‘REG14’ ................................................................................................................................ 118
Columna ‘Trace Table’ ........................................................................................................................ 118
Vuelco de Transacción ......................................................................................................................... 119
Facilidad de diagnóstico de Ejecución (EDF) ...................................................................................... 121
Seguimiento de una Tarea .................................................................................................................... 122
Depuración y Prueba de una Transacción ............................................................................................ 132
MÓDULO V ........................................................................................................................................... 135
TEMAS VARIOS DE UTILIZACIÓN DEL CICS .................................................................................................. 135
Comando de Formateo de entrada........................................................................................................ 135
Comando de formateo de Salida ........................................................................................................... 136
Introducción ......................................................................................................................................... 138
Objetivos .............................................................................................................................................. 139
Facilidades de Recuperación del CICS ................................................................................................ 139
HANDLE CONDITION ........................................................................................................................ 139
HANDLE ABEND ................................................................................................................................ 140
Registros Protegidos ............................................................................................................................ 142
Control Exclusivo ................................................................................................................................. 143
Unidad lógica de trabajo...................................................................................................................... 143
Backout Dinámico de transacciones ..................................................................................................... 144
ABEND del Sistema.............................................................................................................................. 145
LOGGING ............................................................................................................................................ 146
JOURNALING ..................................................................................................................................... 147
JOURNALS Automáticos ...................................................................................................................... 147
Journal del Usuario ............................................................................................................................. 149
Comando Journal ................................................................................................................................. 149
Comandos de fecha y hora .................................................................................................................. 151
Administración de los tiempos y de las tareas....................................................................................... 151
Obtención de la hora ............................................................................................................................ 151
Obtención de la fecha........................................................................................................................... 152
FORMATTIME ..................................................................................................................................... 153
Función ................................................................................................................................................ 153
Sintaxis del Comando ........................................................................................................................... 153
Opciones Formattime ........................................................................................................................... 154
Condición FORMATTIME .................................................................................................................... 156
MÓDULO VI.......................................................................................................................................... 156
Funciones del BMS .............................................................................................................................. 156
Independencia de dispositivos .............................................................................................................. 157
Independencia de Formato ................................................................................................................... 158
Mapas físicos ....................................................................................................................................... 159
Conjuntos de Mapas ............................................................................................................................. 159
(MAPSET) ............................................................................................................................................ 159
Mapas simbólicos ................................................................................................................................. 163
Creación de conjuntos de ..................................................................................................................... 165
Mapas físicos y simbólicos. .................................................................................................................. 165
Página -3-
Definición de conjunto de..................................................................................................................... 168
Mapas Macro DFHMSD ...................................................................................................................... 168
Definición de mapas ............................................................................................................................. 173
Macro DFHMDI .................................................................................................................................. 173
Definición de campos ........................................................................................................................... 176
Macro DFHMDF ................................................................................................................................. 176
Modificación del Byte de Atributo ........................................................................................................ 183
Página -4-
Módulo I
Introducción a CICS
Procesamiento en Lotes
El CICS amplía en gran medida la programación de las aplicaciones en
línea. No obstante ello, antes de examinar la programación en línea, Veamos
las características del procesamiento en lotes. La figura 1-1 muestra el
método típico utilizado para actualizar un archivo en un entorno de
procesamiento en lotes.
REORDENES
ARCHIVO
MAESTRO DE
INVENTARIOS
Fig. 1-1.
Ejemplo de Entorno
de Procesamiento
en Lotes ACTUALIZACION ARCHIVOS
MAESTRO
INFROME DE
ESTADO de
EMISIONES Y INVENTARIO
RECIBOS
Página -5-
Imprimir el registro actualizado en el informe de inventario
Crear, si fuera necesario, un archivo de salida de reposición de ítems
Cerrar los archivos cuando el programa haya concluido su
procesamiento
INSTRUCCIONES
Fig. 1-2.
Diagrama
Conceptual de la
Memoria de un METODOS DE ACCESO
Programa Batch
AREAS DE ENTRADA/SALIDA
AREAS DE TRABAJO
Página -6-
Procesamiento en línea
Veamos un ejemplo de lo que quiere significarse con el vocablo en línea.
La Figura 1-3 muestra tres tipos de transacciones que podrían atenderse en
una aplicación de inventarios.
Consulta de
Estado de PROGRAMA 1
Existencias
ARCHIVO
MAESTRO DE
PARTES
Fig. 1-3 Pendientes
Ejemplo de Entorno
en Línea
PROGRAMA 2
Despachadas
Página -7-
En un entorno en línea, los departamentos de una empresa pueden ingresar
datos concurrentemente y al azar, cada uno de ellos en sus propias
terminales. Una transacción ingresada en una terminal consta de
transacción, también llamado "ID de transacción " (pre-definida por el
programador de sistemas) y de datos. Cada una de las transacciones crea
una unidad de trabajo dentro del CICS llamada "tarea" (task).
TRANSACCION
TAREA
DATOS
"UNIDAD DE TRABAJO"
CODIGO DE
TRANSACCION
TRANSACCION INGRESADA
DESDE UNA TERMINAL
Página -8-
Veamos qué sucede cuando se ingresa una transacción CICS en una
terminal.
Una transacción ingresada por un operador de terminal consta de dos partes:
una "ID de transacción" seguida de los "datos" que han de ser procesados.
STAT 19523
PARTICION/REGION CICS
BUFFER DE TERMINAL
STAT 19523
STAT 19523
MENSAJE DE
ENTRADA
STAT STATPGM
ID DE TRANSACCION A SER
ASOCIADA CON EL PROGRAMA
STATPGM
Página -9-
Para una ID de la transacción válida, el CICS crea una "tarea" para procesar
esa transacción. En la siguiente ilustración, esta tarea es representada por el
rectángulo rotulado TASK1. TASK1 es en realidad un bloque de control que
contiene información que el programa de aplicación y el CICS necesitan para
llevar a cabo la unidad de trabajo a completar.
PARTICION/REGION CICS
BUFFER DE TERMINAL
STAT 19523
STAT 19523
MENSAJE DE
ENTRADA
BLOQUE DE CONTROL
TAREA 1
PARTICION/REGION CICS
STAT 19523
MENSAJE DE
ENTRADA BUFFER DE TERMINAL
STAT 19523
BLOQUE DE CONTROL
BIBLIOTECA DE BLOQUE
TAREA 1DE CONTROL
PROGRAMAS
TAREA 1
STATPGM
BUFFER DE ARCHIVOS
ARCHIVO
MAESTRO
Página -10-
Al terminar la transacción, se liberan los recursos adquiridos (por ejemplo
almacenamiento principal) y las conexiones establecidas durante el
procesamiento de la tarea. La terminal queda luego disponible para el
ingreso de otra transacción.
El Entorno CICS
El CICS es el programa principal de la partición/región en la que está
ubicado. Los programas de aplicación operan bajo el CICS. La figura 1-4
ilustra las varias particiones o regiones que atiende un sistema operativo,
incluso la partición/región CICS y la ubicación de los programas de
aplicación en relación con el CICS
DOS/VS o OS/VS
SISTEMA OPERATIVO
PARTICION/REGION CICS/VS
PARTICION/REGION 'X'
Fig. 1-4
Entorno CICS/VS
PARTICION/REGION 'Y''
Página -11-
TRANSACCION TRANSACCION TRANSACCION
'A ' 'A ' 'A '
PROGRAMACION
DE
APLICACION
PARTICION/REGION CICS
Módulo de Administración
Tablas
Bloques de Control
Página -12-
Los pedidos de entrada/salida se hacen al CICS, en lugar de hacerlo al
sistema operativo como en el caso de procesamiento en lotes.
MODULO DE MODULO DE
CONTROL CONTROL
Programa de Programa de
control de control de
archivos terminales
ARCHIVO A
TERMINAL
PROGRAMA PROGRAMA
DE DE
APLICACION APLICACION
LEER ENVIAR
ARCHIVO A MENSAJE
Página -13-
Las TABLAS definen el entorno del sistema CICS. Las tablas, generadas por
el System Programmer, están funcionalmente asociadas con los módulos de
administración. Por ejemplo, todas las definiciones de archivos están en la
"File Control Table" (tabla de control de archivos), de modo que todos los
programas de aplicación y tareas pueden compartirlas. Por este motivo, los
archivos no se definen en el programa de aplicación, a diferencia de los
programas batch. La "Terminal Control Table" (tabla de control de
terminales) define cada terminal de la red, el programa de aplicación no
necesita así ocuparse de los atributos físicos de las varias terminales del
sistema. No todos los módulos de administración tienen tablas asociadas.
MODULO DE MODULO DE
CONTROL CONTROL
Programa de Programa de
control de control de
archivos terminales
Terminal 'X'
ARCHIVO A
PROGRAMA PROGRAMA
DE DE
APLICACION APLICACION
LEER ENVIAR
ARCHIVO A MENSAJE
Ent.Terminal 'X'
Ent. Archivo A
TABLA DE
TABLA DE CONTROL DE
CONTROL DE TERMINALES
ARCHIVOS
Página -14-
Los BLOQUES de CONTROL contienen información sobre el tipo de
sistema. Al iniciarse una transacción se crea un bloque de control llamado
Area de Control de Tarea. El Area de Control de Tarea contiene información
perteneciente a la tarea. Por ejemplo, el Area de Control de Tarea contiene
señaladores del programa de aplicación y de la entrada de la terminal de la
"Terminal Control Table"
MODULO DE
CONTROL
Programa de
control de
terminales
Terminal 'X'
PROGRAMA
AREA DE
DE
CONTROL DE
APLICACION
TAREA
RECIBIR TAREA A
MENSAJE
Ent.Terminal 'X'
TABLA DE CONTROL
DE TERMINALES
Página -15-
Características de un programa CICS
El CICS provee a cada tarea que ejecuta el programa una copia del área de
trabajo del programa. Esto se debe al hecho de que el contenido del área de
trabajo variará entre una tarea y la siguiente.
TRANSACCION 1
TAREA 1
Memoria de
trabajo
TCA
Fig. 2-1.
Area de
Almacenamiento Memoria de
Dinámico Trabajo
TAREA 2
TRANSACCION 2
ARCHIVOS
TCA
Memoria de
trabajo
Página -16-
Programas CICS Conversacionales y Pseudo-Conversacionales
recepción
N envío
veces fin del programa invocándose a sí mismo nuevamente
o
fin (la última vez)
usando el comando
RETURN TRANSiD
Concepto de COMMAREA
Además de los servicios (tales como lectura de un registro) prestados por los
varios módulos de administración del CICS, el CICS conserva ciertos datos
Página -17-
que el programa de aplicación puede necesitar durante la ejecución - datos
tales como el número de la tarea, la hora y la fecha.
El CICS registra este tipo de datos internos en áreas a las que el programa
de aplicación no tiene acceso. Empero, el CICS copia los datos en un
Bloque de Interfase de Ejecución (EIB), que se crea en el momento de
iniciarse la tarea. Hay un EIB por tarea. El Traductor de Comandos incluye
automáticamente una copia del EIB en el programa de aplicación.
EIBTRNID ID de la transacción
Página -18-
Módulo II
Control de Programas
RUTINA DE INICIALIZACION
RUTINA DE VALIDACION
RUTINA DE VERIFICACION
DE CODIGO
RUTINA DE AGREGADO
DE UN REGISTRO
RUTINA DE ACTUALIZACION
DE UN REGISTRO
RUTINA DE MANEJO DE
SITUACIONES ANORMALES
Página -19-
Las rutinas para agregar y actualizar están ambas presentes, aunque solo se
necesita una de ellas para procesar una transacción dada
Las rutinas para atender condiciones anormales también están presentes,
aún cuando durante el procesamiento de una transacción quizá no se
necesite de ellas
Invocación de un programa
Página -20-
B se detecta un comando RETURN. En ese momento, el control se devuelve
al programa llamador (en este caso, el programa A). se reanuda la ejecución
de A en la instrucción que sigue de inmediato al comando LINK.
La secuencia puede ser diagramada de la siguiente manera:
PROGRAMA A
PROGRAMA B
EXEC CICS LINK
PROGRAMA DE
NIVEL LOGICO
SUPERIOR
EXEC CICS
RETURN
PROGRAMA DE
NIVEL LOGICO
INFERIOR
Página -21-
Por ejemplo:
Programa A
GO TO END
EXEC CICS
EXEC CICS XCTL EXEC CICS XCTL RETURN
Página -22-
EXEC CICS XCTL PROGRAM (name)
PROGRAMA A
EXEC CICS
RETURN
EXEC CICS
EXEC CICS XCTL EXEC CICS XCTL RETURN
AL CICS
En resumen:
Página -23-
una sentencia de condición HANDLE que especifique PGMIDERR y que
preceda al comando XCTL. Por ejemplo:
PROGRAMA A
GO TO END
Programa modular
Página -24-
RUTINA DE INICIALIZACION
RUTINA DE VALIDACION
RUTINA DE VERIFICACION
DE CODIGO
RUTINA DE AGREGADO
DE UN REGISTRO
RUTINA DE ACTUALIZACION
DE UN REGISTRO
RUTINA DE MANEJO DE
SITUACIONES ANORMALES
La figura 2-1 ilustra este programa tal como podría dividirse en módulos en
los que se utilizan los comandos LINK y XCTL para mantener el flujo lógico y
proveer un uso óptimo del almacenamiento.
INICIALIZAR
Actualización AGREGADO
VALIDACION (LINK)
RETURN RETURN
TEST
Fig. 2-1. Validación
Ejemplo de Agregado
Transferencia del (XCTL) AL CICS AL CICS
ni actualización
control de un programa
Ni agregado
RETURN
AL CICS
Página -25-
Los programas para inicializar, agregar un registro y actualizar son todos del
mismo nivel lógico. El comando RETURN devuelve el control al programa del
siguiente nivel lógico más alto, en este caso, CICS. Se usa LINK para llamar
al programa VALIDATE porque INITIALIZE tiene más 'trabajo' que hacer.
Cuando el control se retransfiere de VALIDATE a INITIALIZE se prueba un
código para determinar si debe invocarse ADD o UPDATE.
Luego de la prueba, deja de ser necesario el programa INITIALIZE. Por lo
tanto, XCTL es el comando que se usa para llamar a ADD o UPDATE.
Bajo el CICS una transacción puede asociarse con otra, terminando los
programas de procesamiento con el siguiente comando:
TRANSID ('VAC2')
PROCESO DE SELECCION
VAC2
EXEC CICS RECEIVE ....... SELECCION
Página -26-
Iniciación de una Tarea
ID de ID de
TRANSACCION TERMINAL
INTERVAL (hhmmss)
Supongamos, POR ejemplo, que son las 3 de la tarde y que desea iniciar
una nueva tarea a las 5.
12 12
3 3
Página -27-
El período de tiempo INTERVAL se ilustraría como (020000). La tarea se
iniciaría luego de transcurridas dos horas. Aunque no se recomienda, puede
especificarse un intervalo de hasta 99 horas.
Página -28-
Control de Archivos
Fig. 2-2.
Lectura de un
Registro de un WORKING-STORAGE SECTION.
Archivo 01 INPUT-AREA.
02 INPUT-KEY PIC X(6).
01 RECORD-AREA.
02 RECORD-KEY PIC X(6).
PROCEDURE DIVISION.
Página -29-
Comandos de Control de Archivos
Lectura de un registro
VSAM GENERIC
KEYLENGTH (data-value) CLAVE PARCIAL
Página -30-
LENGTH especifica una media palabra binaria S9(4) COMP que da la
longitud del área de trabajo. Define el 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 se lo coloca en el área de trabajo, advirtiéndose la condición
LENGERR. La longitud real del registro se coloca en LENGTH.
RIDFLD identifica el nombre simbólico del área que contiene la clave del
registro a leer. El formato y el contenido de RIDFLD varía en función del
método de acceso que esté usando.
Para los archivos ISAM, debe especificarse una clave completa de registro
Para los archivos VSAM KSDS, puede especificarse una clave completa o
genérica. Cuando se usa una clave genérica, deben también especificarse
las opciones KEYLENGTH y GENERIC. estas opciones se describen en
párrafos subsiguientes. Luego de completado el READ, RIDFLD contendrá la
clave completa el registro leído. Por lo tanto, ha de ser lo suficientemente
grande como para acomodar la clave del registro completa
Para los archivos VSAM ESDS o KSDS accedidos mediante el RBA, RIDFLD
contiene la dirección binaria del byte relativo de 4 bytes (RBA). Cuando se
especifica el RBA, deberá incluirse la opción RBA.
Para los archivos VSAM RRDS, RIDFLD contiene el número binario de
registro relativo de 4 bytes (RRN). Cuando se especifica el RRN, debe
codificarse la opción RRN.
Para los archivos DAM/BDAM, RIDFLD consta de tres subcampos: La
referencia de bloque identifica el bloque contiene el registro a procesar.
Puede especificarse como un número de bloque relativo, como número de
pista y registro relativo, o como una dirección real en disco.
Página -31-
KEYLENGTH es un campo binario de dos bytes que identifica la longitud de
la clave especificada en RIDFLD. Esta opción debe incluirse si utiliza una
clave genérica, ya que indica la longitud de la clave genérica. De otra manera
no es necesario especificar KEYLENGTH.
GTEQ significa que una clave de registro mayor que, o igual a la clave
especificada en el comando READ satisface la búsqueda.
Página -32-
condiciones pueden ser especificadas en una sentencia HANDLE que
precede 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:
Página -33-
Estas condiciones indican que el archivo que se está procesando no está
disponible. el programa de aplicación podría transmitir un mensaje a la
terminal maestra CICS alertando al operador para que observe el Sistema.
El operador de la terminal solicitante podría también ser notificado que la
transacción no puede completarse en ese momento.
Fig. 2-5.
Recuperación (lectura solamente)
de un registro (COBOL).
IDENTIFICATION DIVISION.
PROGRAM-ID. FCPCOB1.
*
*EL PROGRAMA LEE UN REGISTRO CON LA CLAVE LAX01 EN UN ARCHIVO LLAMADO MAESTRO
*
*
*
***EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA***
*
ENVIROMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 LEN PIC S9(4) COMP VALUE 25.
77 RECORD-KEY PIC X(5) VALUE 'LAX01'.
01 FILE-AREA.
02 REC-KEY PIC X(5).
02 REC-DESC PIC X(20).
.
.
.
PROCEDURE DIVISION.
*** VERIFICACION DE ERROR ***
EXEC CICS HANDLE CONDITION LENGERR (RTOOLONG)
NOTFND (NOREC) ERROR (OTHERR)
END-EXEC.
Página -34-
NOREC.
*ERROR DE PROCESAMIENTO.EL REGISTRO CON LA CLAVE *
*ESPECIFICADA NO ESTA EN EL ARCHIVO *
.
.
OTHERR.
*ERROR DE PROCESAMIENTO.HA SURGIDO OTRO ERROR *
Actualización de un registro
En la fig.2.6 pueden observarse las opciones del comando READ para una
actualización. Estas opciones tienen el mismo significado que las usadas en
el comando de lectura solamente. UPDATE es la opción que indica al FCP
que ha de obtenerse un registro para su posterior actualización.
UPDATE
RIDFLD (data-name)
DAM/BDAM DEBKEY
DEBREC
Fig. 2-6.
Comandos READ y VSAM GENERIC
REWRITE
KEYLENGTH (data-value)
VSAM GTEQ
EQUAL
RBA
RRN
Página -35-
El comando REWRITE se usa para actualizar un registro que ha sido leído
por un READ con la opción UPDATE. En el comando REWRITE, la opción
FROM identifica el área que contiene el registro que ha de grabarse
nuevamente. La longitud del registro se especifica en la opción LENGTH.
Adviértase que LENGTH puede ser una constante en el comando REWRITE.
La figura 2.7 ilustra un ejemplo de actualización de archivo en el cual se
define un área de trabajo, una lectura de registro para actualización y la
regrabación del registro. Revise el ejemplo.
Fig. 2-7.
Actualización de Archivo.
(COBOL).
IDENTIFICATION DIVISION.
*
* EL PROGRAMA LEE Y ACTUALIZA UN REGISTRO CON EL CODIGO LAX01 EN
* UN ARCHIVO LLAMADO MAESTRO *
*
*** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIROMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 LEN PIC S9(4) COMP VALUE 25.
77 RECORD-KEY PIC X(5) VALUE 'LAX01'.
01 FILE-AREA.
02 REC-KEY PIC X(5).
02 REC-DESC PIC X(20).
.
.
.
PROCEDURE DIVISION.
*VERIFICACION DE ERROR *
EXEC CICS HANDLE CONDITION LENGERR(RTOOLONG)
NOTFND(NOREC) ERROR(OTHERR)
END-EXEC.
EXEC CICS READ INTO(FILE-AREA) FILE('MASTER')
RIDFLD(RECORD-KEY) LENGTH(LEN) UPDATE
END-EXEC.
***REGISTRO DEL PROCESO ***
.
.
.
EXEC CICS REWRITE FROM(FILE-AREA) FILE('MASTER')
LENGTH(LEN) END-EXEC.
.
.
.
RTOOLONG.
*ERROR DE PROCESAMIENTO. EL REGISTRO LEIDO ES MAS EXTENSO *
*QUE EL NUMERO DE BYTES ESPECIFICADOR EN LA LONGITUD DEL *
*CAMPO (LEN)*
.
.
.
NOREC.
*ERROR DE PROCESAMIENTO.EL REGISTRO CON LA CLAVE ESPECIFICADA*
Página -36-
*NO ESTA EN EL ARCHIVO *
.
.
.
OTHERR.
*ERROR PROCESSING - OTHER ERROR HAS OCCURRED *
.
.
.
UPDATE
Fig. 2-8.
Comandos READ y RIDFLD (data-name)
DELETE
GTEQ EQUAL
RBA RRN
FILE (name)
Liberación de un Registro
Página -37-
otra tarea tenga acceso a ese registro. Cuando la tarea termina también se
cancela el control exclusivo.
Página -38-
END-EXEC.
* OTHER PROCESSING *
.
.
*PARA SUPRIMIR EL REGISTRO *
EXEC CICS DELETE FILE('MASTER')
END-EXEC.
RTOOLONG.
*ERROR DE PROCESAMIENTO. EL REGISTRO LEIDO ES MAS EXTENSO *
*QUE EL NUMERO DE BYTES ESPECIFICADOR EN LA LONGITUD DEL *
*CAMPO (LEN)*
.
.
.
NOREC.
*ERROR DE PROCESAMIENTO.EL REGISTRO CON LA CLAVE ESPECIFICADA*
*NO ESTA EN EL ARCHIVO *
.
.
.
OTHERR.
*ERROR PROCESSING - OTHER ERROR HAS OCCURRED *
FILE ('MAESTRO')
RIDFLD ('RECORD-KEY')
IDENTIFICA EL
REGISTRO A SER
BORRADO
Página -39-
METODO DE ACCESO EXEC CICS DELETE
KEYLENGTH (data-value)
NUMREC (data-value)
RBA RRN
Fig.2-11.
DELETE de un Grupo de Registros
(COBOL).
IDENTIFICATION DIVISION.
*
* EL PROGRAMA ELIMINA REGISTROS CON CLAVES GENERICAS LA EN *
* UN ARCHIVO LLAMADO MAESTRO *
*
*** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIROMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 RECORD-KEY PIC X(5) VALUE 'LAX01'.
77 REC-DEL PIC S9(4) COMP.
.
.
.
PROCEDURE DIVISION.
*VERIFICACION DE ERROR *
EXEC CICS HANDLE CONDITION
NOTFND(NOREC) ERROR(OTHERR)
END-EXEC.
EXEC CICS DELETE FILE('MASTER') KEYLENGTH(2)
RIDFLD(RECORD-KEY) GENERIC NUMREC(REC-DEL)
END-EXEC.
***EL NUMERO DE REGISTROS ELIMINADOS ESTA EN EL CAMPO REC-DEL***
.
.
Página -40-
.
NOREC.
*ERROR DE PROCESAMIENTO.EL REGISTRO CON LA CLAVE ESPECIFICADA*
*NO ESTA EN EL ARCHIVO *
.
.
.
OTHERR.
*ERROR DE PROCESAMIENTO - HA SURGIDO OTRO ERROR *
.
.
.
Resumiendo
Agregado de Registros
RIDFLD (data-name)
MASSINSERT
Página -41-
MASSINSERT permite grabar múltiples registros en secuencia ascendente
usando el mismo área de trabajo. La operación MASSINSERT se aplica
solamente a archivos VSAM. Termina por fin de la tarea o con el comando
EXEC CICS UNLOCK.
Fig.2-13.
Agregado de Registro.
(COBOL)
IDENTIFICATION DIVISION.
PROGRAM-ID. FCPCOB6.
*
* EL PROGRAMA AGREGA UN REGISTRO CON LA CLAVE LAX01 A UN REGISTRO *
* LLAMADO MAESTRO *
*
*** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIROMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
RECORD-KEY PIC X(5) VALUE 'LAX01'.
01 FILE-AREA.
02 RECORD-KEY PIC X(5).
02 REC-DESC PIC X(20).
.
.
.
PROCEDURE DIVISION.
*VERIFICACION DE ERROR *
EXEC CICS HANDLE CONDITION DUPREC(RECTHERE)
ERROR(OTHERR)
END-EXEC.
Página -42-
Fig.2-14.
MASSINSERT para VSAM.
(COBOL)
IDENTIFICATION DIVISION.
PROGRAM-ID. FCPCOB7.
*
* EL PROGRAMA AGREGA 5 REGISTROS SECUENCIALES COMENZANDO CON LA *
* CLAVE XLAX01 A UN ARCHIVO LLAMADO MASTER*
*
*** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIROMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 LEN PICS9(4)COMP VALUE 25.
01 RECORD-KEY-A PIC X(5) VALUE 'LAX01'.
02 RECORD-KEY-A PIC X(3).
02 RECORD-KEY-N PIC 9(2).
01 FILE-AREA.
02 RECORD-KEY PIC X(5).
02 REC-DESC PIC X(20).
.
.
.
PROCEDURE DIVISION.
*VERIFICACION DE ERROR *
EXEC CICS HANDLE CONDITION DUPREC(RECTHERE)
ERROR(OTHERR)
END-EXEC.
.
.
.
MOVE 'LAX01' TO RECORD-KEY.
MASS-INS.
MOVE RECORD-KEY TO REC-KEY.
MOVE'NEW RECORD INSERTED' TO REC-DESC.
EXEC CICS WRITE FROM(FILE-AREA) FILE('MASTER')
RIDFLD(RECORD-KEY) MASSINSERT END-EXEC.
ADD 1 TO RECORD-KEY-N.
IF RECORD-KEY-N LESS THAN 6 THEN GO TO MASS-INS
ELSE
EXEC CICS UNLOCK FILE('MASTER') END-EXEC.
.
.
RECTHERE.
*ERROR DE PROCESAMIENTO.EL REGISTRO YA ESTA EN EL ARCHIVO*
.
.
.
OTHERR.
*ERROR DE PROCESAMIENTO - HA SURGIDO OTRO ERROR *
.
.
.
Página -43-
El comando UNLOCK debería ejecutarse para liberar el control exclusivo de
un registro después de un READ para actualización cuando el programa de
aplicación determina que no es necesario un REWRITE o un DELETE.
Página -44-
Módulo III
Control de Archivos II
Página -45-
Consideraciones VSAM
Consideraciones DAM/BDAM
Consideraciones ISAM
Página -46-
Terminar búsqueda - Los registros se leen y procesan hasta que decide
que no es necesario proseguir con la recuperación secuencial e indica al
CICS que se ha completado la operación.
POSICIO-
NAMIENTO
Fig. 3-1.
Flujo de la Típica
Operación de LEER SIGUIENTE
Recorrido REGISTRO
SI
Procesa el
PROCESA
registro ?
NO
NO
fin de búsqueda ?
SI
TERMINA
BUSQUEDA
Página -47-
Posicionar
RIDFLD especifica la clave del registro del archivo en el que desea comenzar
la búsqueda. La posición inicial puede especificarse de una variedad de
maneras.
Para archivos ISAM y VSAM secuenciados por clave (KSDS), RIDFLD puede
contener una clave completa o genérica. Cuando se usa una clave genérica,
deben especificarse las opciones GENERIC y KEYLENGTH, RIDFLD ha de
ser lo suficientemente grande como para contener la clave completa de un
registro. No es necesario inicializar las posiciones que siguen a la clave
genérica. La figura 3.3 da un ejemplo de cómo especificar una clave
genérica.
Página -48-
Página -49-
Fig. 3-3. CAMPO DE CLAVE DEL REGISTRO
Especificación de
una clave genérica C O M P U T A C I O N
Reckey is 20 bytes
Para archivos VSAM, puede iniciarse una búsqueda al final del archivo,
yendo hacia atrás. Esto es útil cuando desea obtener los registros en
secuencia descendente. Para comenzar al final del archivo, el RIDFLD
deberá contener FF's hexadecimales. No se especificarán las opciones
GENERIC y KEYLENGTH.
Página -50-
Si se especifica EQUAL y no existe registro alguno, se activa la
condición NOTFND.
Fig.3-4.
Posicionamiento.
(COBOL)
IDENTIFICATION DIVISION.
PROGRAM-ID. FCPCOB10.
*
* SE INICIA EL EXAMEN DEL ARCHIVO CON CLAVE VSAM UTILIZANDO LA CLAVE *
* GENERICA EQUAL*
* EL EXAMEN COMIENZA EN LA CLAVE GENERICA 'LAX !
*
*** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIROMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 RECORD-KEY.
02 KEY-PFX PIC X(3) VALUE 'LAX'.
02 KEY-NUM PIC X(2).
.
.
.
PROCEDURE DIVISION.
*VERIFICACION DE ERROR *
EXEC CICS HANDLE CONDITION
NOTFND(NOREC)
ERROR(OTHERR)
END-EXEC.
.
.
.
NOREC.
*ERROR DE PROCESAMIENTO.EN EL ARCHIVO NO EXISTEN REGISTROS QUE*
TENGAN LA CLAVE GENERICA ESPECIFICADA(LAX)
.
.
OTHERR.
*ERROR DE PROCESAMIENTO - HA SURGIDO OTRO ERROR *
.
Página -51-
.
.
Lectura de Registros
Para recuperar registros secuencialmente en secuencia ascendente, use el
comando READNEXT.
La figura 3.5 ilustra los parámetros y las opciones de este comando.
RIDFLD (data-area)
KEYLENGTH (data-value)
VSAM RBA
RRN
INTO o SET identifican el área en la que desea que el CICS lea el registro.
Se especifica una opción o la otra.
INTO especifica que quiere que el registro sea devuelto en un área de trabajo
definida dentro de su programa.
SET indica que quiere procesar el registro en el "buffer de archivo". El CICS,
colocará en el campo especificado en la opción SET un 'pointer' a la
dirección del registro leído dentro del buffer.
Página -52-
Fig. 3-6.
Definición de Area de
Entrada con la Opción
SET LINKAGE SECTION.
01 REC-PTRS.
02 FILLER PIC XXXX.
02 MAST-PTR PIC S9(8) COMP.
COBOL 01 MASTER-RECORD.
02 FIELDA PIC (5).
02 FIELDB PIC XX.
.
.
.
LENGTH (un campo binario de dos bytes) especifica la longitud esperada del
registro a procesar. EL CICS usará este campo para devolver a su programa
la longitud real del registro leído.
Página -53-
Fig.3-7.
Lecturas de Registros.
(COBOL)
IDENTIFICATION DIVISION.
PROGRAM-ID. FCPCOB11.
*
* SE INICIA EL EXAMEN DEL ARCHIVO CON CLAVE VSAM UTILIZANDO LA CLAVE *
* GENERICA EQUAL*
* EL EXAMEN COMIENZA EN LA CLAVE GENERICA 'LAX !
*
*** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIROMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 LEN PIC S9(4) COMP.
01 RECORD-KEY.
02 KEY-PFX PIC X(3) VALUE 'LAX'.
02 KEY-NUM PIC X(2).
01 FILE-AREA.
02 REC-KEY PIC X(5).
02 REC-DESC PIC X(20).
.
.
.
PROCEDURE DIVISION.
*VERIFICACION DE ERROR *
EXEC CICS HANDLE CONDITION
NOTFND(NOREC)
ERROR(OTHERR)
END-EXEC.
*
EXEC CICS STARTBR
FILE('MASTER') RIDFLD(RECORD-KEY)
INTO (FILE-AREA) LENGTH(LEN)
END-EXEC.
READ-SEQ.
MOVE 25 TO LEN.
EXEC CICS READNEXT
FILE('MASTER') RIDFLD(RECORD-KEY)
INTO(FILE-AREA) LENGTH(LEN)
END-EXEC.
***REGISTRO DEL PROCESO ***
.
.
NOREC.
*ERROR DE PROCESAMIENTO.EN EL ARCHIVO NO EXISTEN REGISTROS QUE*
*TENGAN LA CLAVE GENERICA ESPECIFICADA(LAX) .
.
Página -54-
.
OTHERR.
*ERROR DE PROCESAMIENTO - HA SURGIDO OTRO ERROR *
.
.
.
RTOOLONG.
*ERROR DE PROCESAMIENTO. EL REGISTRO LEIDO ES MAS EXTENSO QUE EL *
*NUMERO DE BYTES ESPECIFICADOS EN LA LONGITUD DEL CAMPO (LEN)*
Los archivos VSAM pueden ser leídos hacia atrás y hacia delante. Para leer
registros en secuencia descendente, use el siguiente comando:
LENGTH (data-area)
FILE (name)
RIDFLD (data-area)
KEYLENGTH (data-value)
RBA ¦ RRN
Las opciones del comando READPREV son las mismas que las del comando
READNEXT, con las siguientes diferencias:
Página -55-
Fin de Archivo Físico
Fig.3-7.
Comprobación de fin de
Archivo (COBOL)
IDENTIFICATION DIVISION.
PROGRAM-ID. FCPC0B12.
*
* SE INICIA EL EXAMEN DEL ARCHIVO CON CLAVE VSAM UTILIZANDO LA *
* CLAVE GENERICA EQUAL *
* EL EXAMEN COMIENZA EN LA CLAVE GENERICA 'LAX.'
* RECUPERA LOS REGISTROS SECUENCIALMENTE EN SECUENCIA ASCENDENTE *
* CONTROLA PARA EL FIN FISICO Y LOGICO DEL ARCHIVO (CAMBIO EN LA *
* CLAVE GENERICA *
* AL FINAL DEL ARCHIVO, CONCLUYE LA REVISION *
*
* *** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 LEN PIC S9(4) COMP.
77 COMPARE-KEY PIC X(3) VALUE 'LAX'.
01 RECORD-KEY.
02 KEY-PFX PIC X(3) VALUE 'LAX'.
02 KEY-NUM PIC X(2).
01 FILE-AREA.
02 REC-KEY PIC X(5).
02 REC-DESC PIC X(20).
.
.
.
PROCEDURE DIVISION.
* *VERIFICACION DE ERROR *
EXEC CICS HANDLE CONDITION
NOTFND(NOREC) ERROR(OTHER)
LENGERR(RTOOLONG)
ENDFILE(END-BROWS)
END-EXEC.
Página -56-
*
EXEC CICS STARTBR
FILE('MASTER') RIDFLD(RECORD-KEY)
GENERIC KEYLENGTH(3) EQUAL
END-EXEC.
READ-SEQ.
MOVE 25 TO LEN.
EXEC CICS READNEXT
FILE('MASTER') RIDFLD(RECORD-KEY)
INTO(FILE-AREA) LENGTH(LEN)
END-EXEC.
IF KEY-PFX IS GREATER THAN COMPARE-KEY
GO TO END-BROWS
ELSE
NEXT SENTENCE.
***REGISTRO DEL PROCESO ***
.
.
***VUELTA ATRAS PARA RECUPERAR EL REGISTRO SIGUIENTE ***
END-BROWS.
***CONCLUYE LA REVISION ***
.
.
.
NOREC.
* ERROR DE PROCESAMIENTO.EN EL ARCHIVO NO EXISTEN REGISTROS QUE
* TENGAN LA CLAVE GENERICA ESPECIFICADA ('LAX') *
.
.
.
OTHERR.
* ERROR DE PROCESAMIENTO. HA SURGIDO OTRO ERROR *
.
.
RTOOLONG.
* ERROR DE PROCESAMIENTO. EL REGISTRO LEIDO ES MAS EXTENSO QUE
* EL NUMERO DE BYTES ESPECIFICADOS EN LA LONGITUD DEL CAMPO
*(LEN)
Terminación de la búsqueda
FILE (name)
Página -57-
FILE especifica el nombre del archivo sobre el que se realizó la búsqueda
secuencial. No se requieren otros parámetros.
Fig.3-8.
Terminación de la
Búsqueda (COBOL).
IDENTIFICATION DIVISION.
PROGRAM-ID. FCPC0B13.
*
* SE INICIA EL EXAMEN DEL ARCHIVO CON CLAVE VSAM UTILIZANDO LA *
* CLAVE GENERICA EQUAL *
* EL EXAMEN COMIENZA EN LA CLAVE GENERICA 'LAX.'
* RECUPERA LOS REGISTROS SECUENCIALMENTE EN SECUENCIA ASCENDENTE *
* CONTROLA PARA EL FIN FISICO Y LOGICO DEL ARCHIVO (CAMBIO EN LA *
* CLAVE GENERICA *
* AL FINAL DEL ARCHIVO, CONCLUYE LA REVISION *
*
* *** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 LEN PIC S9(4) COMP.
77 COMPARE-KEY PIC X(3) VALUE 'LAX'.
01 RECORD-KEY.
02 KEY-PFX PIC X(3) VALUE 'LAX'.
02 KEY-NUM PIC X(2).
01 FILE-AREA.
02 REC-KEY PIC X(5).
02 REC-DESC PIC X(20).
.
.
.
PROCEDURE DIVISION.
* *VERIFICACION DE ERROR *
EXEC CICS HANDLE CONDITION
NOTFND(NOREC) ERROR(OTHER)
LENGERR(RTOOLONG)
ENDFILE(END-BROWS)
END-EXEC.
*
EXEC CICS STARTBR
FILE('MASTER') RIDFLD(RECORD-KEY)
GENERIC KEYLENGTH(3) EQUAL
Página -58-
END-EXEC.
READ-SEQ.
MOVE 25 TO LEN.
EXEC CICS READNEXT
FILE('MASTER') RIDFLD(RECORD-KEY)
INTO(FILE-AREA) LENGTH(LEN)
END-EXEC.
IF KEY-PFX IS GREATER THAN COMPARE-KEY
GO TO END-BROWS
ELSE
NEXT SENTENCE.
***REGISTRO DEL PROCESO ***
.
.
***VUELTA ATRAS PARA RECUPERAR EL REGISTRO SIGUIENTE ***
END-BROWS.
EXEC CISC ENDBR
FILE('MASTER')
END-EXEC.
.
.
.
NOREC.
* ERROR DE PROCESAMIENTO.EN EL ARCHIVO NO EXISTEN REGISTROS QUE
* TENGAN LA CLAVE GENERICA ESPECIFICADA ('LAX') *
.
.
.
OTHERR.
* ERROR DE PROCESAMIENTO. HA SURGIDO OTRO ERROR *
.
.
.
RTOOLONG.
* ERROR DE PROCESAMIENTO. EL REGISTRO LEIDO ES MAS EXTENSO QUE
* EL NUMERO DE BYTES ESPECIFICADOS EN LA LONGITUD DEL CAMPO
* (LEN)
Página -59-
Reposicionamiento
FILE (name)
RIDFLD (data-area)
KEYLENGTH (data-value)
GENERIC
GTEQ ¦ EQUAL
RBA ¦ RRN
Página -60-
Página -61-
Fig.3-9.
Reposicionamiento.
(COBOL)
IDENTIFICATION DIVISION.
PROGRAM-ID. FCPC0B14.
*
* INICIA LA REVISION PARA UN ARCHIVO UTILIZANDO UNA CLAVE GENERICA
* RECUPERA REGISTROS HASTA QUE LA CLAVE GENERICA CAMBIA,Y ENTONCES
* RESTABLECE SU POSICION EN EL PRIMER REGISTRO RECUPERADO
*
*
* *** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 RECORD-KEY.
02 KEY-PFX PIC X(3) VALUE 'LAX'.
02 KEY-NUM PIC X(2).
01 FILE-AREA.
02 REC-KEY PIC X(5).
02 REC-DESC PIC X(20).
.
.
.
PROCEDURE DIVISION.
* *VERIFICACION DE ERROR *
EXEC CICS HANDLE CONDITION
ENDFILE(END-BROWS) ERROR(OTHERR)
END-EXEC.
EXEC CICS STARTBR
FILE('MASTER') RIDFLD(RECORD-KEY)
GENERIC KEYLENGTH(3)
END-EXEC.
EXEC CICS READNEXT
FILE('MASTER') RIDFLD(RECORD-KEY)
INTO(FILE-AREA)
END-EXEC.
***PASA REGISTROS HASTA QUE LA CLAVE GENERICA CAMBIA ***
.
.
.
***RESTAURA LA PRIMERA CLAVE DEL REGISTRO ***
EXEC CICS RESETBR
FILE('MASTER') RIDFLD(RECORD-KEY)
END-EXEC.
.
.
.
END-BROWS.
***CONCLUYE LA REVISION ***
.
.
.
Página -62-
OTHERR.
* ERROR DE PROCESAMIENTO. HA SURGIDO OTRO ERROR *
.
.
.
Secuencial con salto sólo se puede usar para ir hacia delante en un archivo
.
El tipo de identificación de registro especificado (clave completa o genérica,
RBA, RRN) ha de ser el mismo que el especificado en el STARTBR o último
RESETBR emitido para esta operación
Si se usara una clave genérica, debe codificarse la opción KEYLENGTH en
el comando READNEXT que especifica la nueva ubicación inicial.
Si el comando STARTBR o el último RESETBR especificó una búsqueda
EQUAL, y no existe un registro para la nueva identificación de registro, se
activa la condición NOTFND. (Si se activa la condición NOTFND y deseara
continuar la búsqueda, la rutina NOTFND podría emitir un comando
RESETBR con la opción GTEQ. Esto establecería la posición en el siguiente
registro del archivo. La recuperación secuencial de los registros podría
reanudarse luego en esa ubicación).
Página -63-
FILE (name)
RIDFLD (data-area)
REQID (data-value)
.
.
Fig.3-10.
Búsqueda Múltiple
(COBOL)
IDENTIFICATION DIVISION.
PROGRAM-ID. FCPC0B15.
*
* REVISA DOS ARCHIVOS SIMULTANEAMENTE. LOS REGISTROS EN EL ARCHIVO
* 'INDEX'SENALAN POR CLAVE A LOS REGISTROS EN EL ARCHIVO 'MAESTRO'
* PUEDEN EXISTIR MULTIPLES REGISTROS DEL 'MAESTRO' POR CADA
* REGISTRO 'INDEX'. AMBOS ARCHIVOS TIENEN REGISTROS DE LONGITUD
*FIJA. USE LA OPCION 'SET'.
*
*
* *** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 INDX-KEY PIC X(3) VALUE 'LAX'.
01 MAST-KEY.
02 MAST-PFX PIC X(3).
02 MAST-NUM PIC X(2).
.
.
.
LINKAGE SECTION.
01 REC-PTRS.
02 FILLER PIC XXXX.
02 INDX-PTR PIC S9(8) COMP.
02 MAST-PTR PIC S9(8) COMP.
01 INDX-RECORD PIC X(25).
01 MAST-RECORD PIC X(90).
PROCEDURE DIVISION.
* *VERIFICACION DE ERROR *
EXEC CICS HANDLE CONDITION
ENDFILE(END-BROWS) ERROR(OTHERR)
Página -64-
END-EXEC.
EXEC CICS STARTBR
FILE('INDEX') RIDFLD(INDX-KEY)
END-EXEC.
EXEC CICS READNEXT
FILE('INDEX') RIDFLD(INDX-KEY)
SET(INDX-PTR)
END-EXEC.
***REGISTRO DE PROCESO 'INDEX'***
.
.
.
EXEC CICS STARTBR
FILE('MASTER') RIDFLD(MAST-KEY)
END-EXEC.
EXEC CICS READNEXT
FILE('MASTER') RIDFLD(MAST-KEY)
SET(MAST-PTR)
END-EXEC.
***REGISTROS DE PROCESO 'MASTER' ***
.
.
.
END-BROWS.
* LA RUTINA DE TERMINACION COMUN DETERMINA QUE REVISION HALLO EL
* FIN DEL ARCHIVO Y LO PROCESA DE ACUERDO CON ELLO. *
.
.
.
EXEC CICS ENDBR FILE('INDEX')
END-EXEC.
.
.
.
EXEC CICS ENDBR FILE('MASTER')
END-EXEC.
.
.
.
OTHERR.
* ERROR DE PROCESAMIENTO. HA SURGIDO OTRO ERROR *
.
.
.
Actualización de Registros
Página -65-
cambio, que esta técnica n puede usarse en el OS/VS con Recursos
Compartidos VSAM ya que provocaría un bloqueo.
Página -66-
Fig.3-11.
Actualización de Registros
en una búsqueda secuencial
(COBOL)
IDENTIFICATION DIVISION.
PROGRAM-ID. FCPC0B16.
*
* REVISA UN ARCHIVO Y ACTUALIZA LOS REGISTROS APROPIADOS*
* LA REVISION COMIENZA CON REGISTRO 'LAX01' *
*
* *** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 LEN PIC S9(4) COMP.
77 RECORD-KEY PIC X(5) VALUE 'LAX01'.
01 FILE-AREA.
02 REC-KEY PIC X(5).
02 REC-DESC.
.
.
PROCEDURE DIVISION.
* *VERIFICACION DE ERROR *
EXEC CICS HANDLE CONDITION
LENGERR(RTOOLONG)
ENDFILE(END-BROWS)ERROR(OTHER)
END-EXEC.
*
EXEC CICS STARTBR
FILE ('MASTER') RIDFLD(RECORD-KEY)
END-EXEC.
MOVE 25 TO LEN.
EXEC CICS READNEXT
FILE ('MASTER') RIDFLD(RECORD-KEY)
END-EXEC.
Página -67-
.
.
.
OTHERR.
* ERROR DE PROCESAMIENTO. HA SURGIDO OTRO ERROR *
.
.
.
Ejemplos de Uso
Computación, Aplicaciones
Computación, Carreras
Computación, Historia
Computación, Tecnología
Computación, Programación
ICAT COMPUTACION
Página -68-
Computación,Aplicaciones
Compu-
Computación,Carreras tación Coleoptero
Computación,Historia Coloso
Computación,Programación Computación, Aplicaciones
RIDFLD
Computación, Carreras
Computación, Historia
Computación, Programación
Página -69-
han de obtenerse todos los registros de esa sección. No existen condiciones
específicas de selección que satisfacer.
PROGRAMA DE
APLICACION
BLOCK 1
BLOCK3
BLOCK 2
RIDFLD
BLOCK 3
BLOCK 4
BLOCK 5
BLOCK 6
Página -70-
Una búsqueda específica puede limitarse a una sección particular de un
archivo. Dentro de esa sección, en cambio, sólo se seleccionan para su
procesamiento posterior los registros que satisfacen criterios de búsqueda
estrechamente definidos. Se toma esta decisión probando uno o más
criterios especificados, se lo saltea.
RRN 1
RRN 12 EXPIRADO
RRN 13 NO EXPIRADO
RRN 14 EXPIRADO
Página -71-
Tiempo de respuesta
Luego emite comandos para leer secuencialmente los registros. Durante este
tiempo el operador espera una respuesta. El tiempo que demanda la lectura
de un solo registro puede ser relativamente corto. Pero para el operador que
está esperando unos pocos segundos le parecen mucho tiempo. Es
importante limitar el alcance de una búsqueda para minimizar el tiempo de
respuesta al operador de terminal solicitante.
VSAMFIL
TAREA A
TAREA C TAREA B
STRINGS = 2
Página -72-
Toda vez que se inicia una búsqueda, se asigna un string de VSAM para
atender el pedido. Es importante advertir que el string está asignando
mientras dure la búsqueda, esto es, hasta que se emita el comando ENDBR.
CATALOGO
NRO ITEM
AUTOR TEMA
TITULO
Página -73-
La combinación de un índice alternativo y el archivo base se conoce como un
camino del índice alternativo. El (los) camino(s) y el archivo base se definen
en la Tabla de Control de Archivos (FCT).
Página -74-
La condición de excepción clave duplicada
INDICE
ALTERNATIVO
Fig. 63-12.
Indice Alternativo con LA COMPUTACION MODERNA
Claves no Unicas
LA CARRERA DE INFORMATICA
Página -75-
COMIENZO
Fig. 3-13.
Procesamiento de
EXEC CICS READ
Indice Alternativo con
Clave no Unicas
SI
EXEC CICS
DUPKEY?
STARTBR
NO
PROCESO DEL
DUPKEY?
REGISTRO
NO
PROCESO DEL
ULT. REGISTRO
EXEC CICS
ENDBR
Página -76-
Actualización de Registros
Página -77-
Manejo de unidades de trabajo en CICS
Las funciones de CICS usadas en los programas puede ser coordinado con
el DB2 para que los datos DB2 y no DB2 sean consistentes. Si se produce un
error, se volverán atrás todos los cambios (tanto los producidos en archivos
como los realizados en tablas DB2).
Performance
Con respecto a este tema hay que tener las mismas consideraciones que al
usar cualquier tipo de recursos bajo CICS. Es necesario tener en cuenta el
volumen de transacciones que se procesan, y la concurrencia de las mismas,
y tratar de minimizar el uso de recursos, y el tiempo que estos se encuentran
tomados por la transacción.
Página -78-
Temporary Storage (TS)
Página -79-
La ID de datos del Almacenamiento Temporario es un nombre de 1 a 8
caracteres. Todo registro puede tener un nombre único, o bien pueden
guardarse varios registros bajo el mismo nombre, formando así una cola de
Almacenamiento Temporario, o grupo de mensajes.
Los registros de un grupo de mensajes del Almacenamiento Temporario, o
grupo pueden ser leídos secuencialmente en el orden en que fueron creados.
También son accesibles directamente por referencia a su posición relativa
dentro del grupo de mensajes.
Por lo tanto, cualquier tarea puede acceder los datos del Almacenamiento
Temporario cualquier número de veces.
Condiciones de Excepción
Página -80-
INVREQ: La longitud de los datos a escribir es cero o excede la capacidad de
registro especificada para el almacenamiento auxiliar.
Comando WRITEQ
QUEUE (name)
FROM (data-area)
LENGTH (data-value)
ITEM (data-area)
REWRITE
MAIN ¦ AUXILIARY
Página -81-
nuevos, el CICS devuelve el número del registro agregado en el área de
datos especificada por ITEM.
Fig.3-14.
Envío de un mensaje al
Almacenamiento
Temporario (COBOL)
IDENTIFICATION DIVISION.
PROGRAM-ID. FCPC0B16.
*
* GRABACION SOBRE UN GRUPO DE MENSAJES EN ALMACENAMIENTO TEMPORARIO*
*
* *** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TS-DATA.
02 FLD1 ....
02 FLD2 ....
.
.
PROCEDURE DIVISION.
* *VERIFICACION DE ERROR *
EXEC CICS HANDLE CONDITION NOSPACE (FULL)
INVREQ (DATA-LEN) ERROR(OTHER)
END-EXEC.
* MOVIMIENTO DE DATOS EN LOS CAMPOS TS *
Página -82-
.
OTHERR.
* ERROR DE PROCESAMIENTO. HA SURGIDO OTRO ERROR *
.
Comando READQ
QUEUE (name)
INTO (data-area)
LENGTH (data-value)
Página -83-
Fig.3-15.
Actualización en el
Almacenamiento Temporario
(COBOL)
IDENTIFICATION DIVISION.
PROGRAM-ID. FCPC0B16.
*
* REEMPLAZO DE UN ITEM EN UN GRUPO DE MENSAJES DE ALMACENAMIENTO
* TEMPORARIO *
* *** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 ITEM-NO PIC S9(4) COMP.
01 TS-DATA.
02 FLD1 ....
02 FLD2 ....
.
.
PROCEDURE DIVISION.
*
EXEC CICS HANDLE CONDITION NOSPACE (FULL)
INVREQ (DATA-LEN) QIDERR (WRONG) ERROR(OTHER)
ITEMERR (NO-ITEM)
END-EXEC.
.
.
Página -84-
* ERROR DE PROCESAMIENTO. HA SURGIDO OTRO ERROR *
.
.
NO-ITEM.
* ERROR DE PROCESAMIENTO. EL REGISTRO NO ESTA EN EL GRUPO DE MENSAJES *
.
.
.
Comando DELETEQ
Página -85-
Módulo IV
Transacciones CECS
Página -86-
Fig.4-1.
Control de Sintaxis
de Comandos.
Transacción CECI
La transacción CECI le permite no sólo verificar la sintaxis de los comandos sino
también ejecutarlos. Por ejemplo, para leer un registro con una clave de 000001
en FILEA, ingrese lo siguiente por la terminal
Página -87-
Fig.4-2.
Control de Sintaxis
de Comandos y Ejecución.
Fig. 4-3
Ejecución de
Comando Completa.
Página -88-
Diseño de pantalla
Línea de comandos
Línea de estado
Area de información
Area de mensaje
Area de teclas de función
Línea de comandos
Línea de comandos tal como fueron ingresados. En un programa de aplicación
siempre es necesario codificar EXEC CICS antes de la función de comando, pero
el intérprete no lo requiere. El intérprete a nivel comandos también permite el uso
de abreviaturas. Esto no es posible en los programas de aplicación, donde deben
codificarse los comandos tal como aparecen en el manual de referencia.
El comando mostrado en las dos figuras previas puede ser ingresado en su forma
abreviada tal como se ve en la figura 4.4
Fig. 4-4
Línea de Comandos
Línea de estado
La línea de estado identifica el tipo de pantalla. Las figuras 4.5 a 4.7 muestran
tres tipos diferentes de pantallas.
Página -89-
Figura 4.5
Línea de estado -
Control de sintaxis de comandos
Figura 4-6.
Línea de estado - A punto
de ejecutar un comando
Página -90-
Fig. 4-7.
Línea de estado
Ejecución de comando completa
Area de información
Página -91-
Fig.4.8
Area de Información.
Los signos mayor que (>) y menor que (<) indican parámetros opcionales y son
equivalentes a los paréntesis usados en el ‘Application Programmer’s Reference
Manual’ (SC33-0077). La barra vertical (│) indica alternativas. Las opciones que
carecen de los signos mayor y menor son obligatorias salvo cuando se trate de
campos receptores. Uno de estos campos es, en la figura 4.8, el área de INTO. Si
no se ingresa ningún campo receptor en línea de comandos, el intérprete lo define
automáticamente.
Tras la ejecución del comando READ FILE, el área INTO contiene el registro
pedido, tal como se muestra en la figura 4.9.
Fig. 4-9.
Area INTO
Página -92-
El apóstrofo seguido por puntos en el área INTO indica que el registro era
demasiado largo para mostrarlo completo. Para ver todo el registro hay que dar
INTRO teniendo el cursor bajo los datos del área INTO. En la figura 4.10 vemos
el área INTO expandida.
Fig. 4-10.
Area INTO expandida
Area de mensajes
Fig. 4-11.
Area de mensajes
Código de retorno CICS
Página -93-
Tras el control de sintaxis de un comando el área de mensajes puede tener un
mensaje de error del traductor. Si el comando está bien y no corresponde
mensaje alguno, el área queda en blanco. La figura 4.12 muestra un ejemplo de
un mensaje de error.
Fig.4-12.
Area de mensajes
Mensaje de error del traductor.
Teclas de función
Página -94-
Fig.4-13.
Area de Teclas de Función.
Página -95-
Fig.4-14.
Formato Hexadecimal.
Fig. 4-15.
Formato hexadecimal del
área INTO expandida.
Página -96-
PF5. Pueden definirse variables y luego ser mostradas mediante PF5. Las
variables se usan para guardar información que se usará más tarde en una
sesión. Por ejemplo, si un comando ha de ser usado con frecuencia en una
sesión, puede almacenarse en una variable ingresando un nombre en el
parámetro NAME= y dando INTRO. Este nombre debe comenzar con un
ampersand (&). La figura 4.16 muestra una variable (&READS) cuando es
asignada a un comando.
Fig.4-16.
Asignación de variable.
Comando.
Un campo receptor puede ser definido como una variable. Esto serviría para
transferir datos entre dos comandos asociados. En la figura 4.17 el área INTO es
definida como una variable (&SAVEIO).
Página -97-
Fig. 4-17.
Asignación de variable.
Campo receptor.
Los datos guardados en &SAVEIO pueden ser alterados tal como veremos más
tarde y vuelto s a incorporar al archivo usando el comando REWRITE con la
opción FROM especificada como &SAVEIO.
La figura 4.18 muestra un segundo método para asignar una variable a los datos
del área INTO. En este caso, tenemos un área expandida INTO en formato
hexadecimal. La variable &SAVEIO se define en el parámetro NAME=
Fig.4-18.
Asignación de variable.
Página -98-
Dando PF5 y oprimiendo INTRO aparecen todas las variables asociadas con una
sesión dada del intérprete, tal como puede verse en la figura 4.19.
Fig.4-19.
Resultado de PF5.
Contents
Length
Name
Las tres primeras variables fueron usadas para guardar datos entre sesiones.
Después de haberse familiarizado con los comandos y comenzado a usar el
intérprete de comandos, le aconsejamos leer el párrafo sobre almacenamiento de
variables en el capítulo del intérprete que está en el ‘Application Programmer’s
Reference Manual (Command Level)’ (SC33-0077).
La pantalla de la figura anterior puede usarse para dar de alta variables. Esto se
consigue agregando una nueva línea donde se especifica el nuevo nombre, la
longitud y contenido. Asimismo, puede eliminarse una variable poniendo el cursor
bajo el ampersand del nombre y apretando la tecla de ERASE EOF o BORRE FIN
CAMPO. Finalmente, también es factible alterar tanto el contenido como la
longitud simplemente ingresando la nueva información sobre la existente.
PF9. Es posible que durante el control de sintaxis haya más de un error y por
consiguiente haga falta más de un mensaje. En ese caso el área de mensajes
muestra cuantos mensajes fueron generados, tal como se ve en la figura 4.20.
Página -99-
Fig. 4-20.
Múltiples mensajes de error.
READ
STATUS: COMMAND SYNTAX CHECK
EXEC CICS READ
File ()
SET () INTO ()
< Length () >
Ridfld ()
<Keylength () <Generic>>
<SYsid () >
<SEGset () ¦Segsetall >
< Rba RRn DEBRec DEBKey >
< Gteq Equal >
< Update >
Para ver los mensajes hay que presionar PF9 y aparecerán en la forma en que se
muestran en la figura 4.21.
Fig.4-21.
Múltiples mensajes de error.
Segunda pantalla.
Página -100-
PF7, PF8, PF10, PF11: A veces toda la información no entra en una sola pantalla.
En la figura 4.22 el signo más (+) que hay junto a la última opción está indicando
que sigue más información.
Fig. 4-22.
Información de múltiples páginas.
ASS
STATUS: COMMAND EXECUTION COMPLETE
EXEC CICS ASSing
+ < Facility ('L77A') >
< Restart('.') >
< SCRNWd (+00080) >
< SCRNHt (+00024) >
< Sigdata('....') >
< Unattend('.') >
< Extds ('.') >
< Color ('.') >
< PS ('.') >
< Hiligth ('.') >
< Abcode (' ') >
< Prinsysid (' ') >
< STARTcode ('TD') >
< Applid ('DBDCCICS') >
< Sysid ('dfh')>
< DELimiter('.') >
< Validation ('.') >
Esos datos adicionales pueden ser vistos dando PF8 (avanza media página) o
PF11 (avanza página completa). Esta última opción es la que se usó para el
ejemplo de la figura 4.23.
Página -101-
Fig.4-23.
Paginado hacia delante.
ASS
STATUS: COMMAND EXECUTION COMPLETE
EXEC CICS ASSing
+ < CWaleng (+00512) >
< TWaleng(+00000) >
< TCaualeng (+00000) >
< LDCMnem ('.') >
< LDCNum('P') >
< DESTcount(+00000) >
< PAgenum (+00000) >
< STATionid (''') >
< TELlerid('.') >
< Numtab ('.') >
< DESTID (' ') >
< DESTIDLeng (+00000) >
< FCi ('.') >
< TERmcode ('DBDCCICS') >
< OPid ('...')>
< OPClass('...') >
< OPSecurity ('...') >
El signo (+) en la primera línea de opción de la figura 4.23 indica que hay
información precediendo a la pantalla que está siendo mostrada. Esta puede ser
vista dando PF7 (retrocede media página ) o PF10 (retrocede página completa).
Página -102-
Fig.4-24.
Detalle del EIB.
READ F(FILEA)R(000001)
EXEC INTERFACE BLOCK
EIBTIME = +0134605
EIBDATE = +008074
EIBTRNID = 'CECI'
EIBTASKN = +0000027
EIBCPOSN = +00005
EIBCALEN = +00000
EIBAID = X'7D'
EIBFN = X'602' (READ)
EIBRCODE = X'000000000000'
EIBDS = 'FILEA '
EIBREQUID = '........'
EIBRSRCE = 'FILEA '
EIBSYNC = '.'
EIBFREE = '.'
EIBRECV = '.'
EIBATT = '.'
EIBEOC = '.'
EIBFMH = '.'
PF1: La figura 4.25 muestra los cuatro temas sobre los que hay información
disponible en la pantalla de ayuda o HELP.
1. Línea de comandos.
Página -103-
Fig.4-25.
Pantalla de ayuda o HELP.
Enter command on the first line and press ENTER (after returning from HELP) Options
can be abbreviated to the minimum to make them unique.
? before command gives Command Syntax
To expand a value or variable to full screen,
position cursor using TAB key and press ENTER.
PF 3 RETURN
Hay otra ayuda disponible que, sin embargo, no está asociada con ninguna PF.
Ingresando el código de transacción CECI sin parámetros pueden verse todos los
comandos EXEC CICS. Las abreviaturas posibles aparecen en mayúsculas y el
resto del comando en minúsculas si la terminal lo permite.
La figura 4.26 muestra una lista de los comandos EXEC CICS.
Página -104-
Fig. 4-26.
Lista de Comandos EXEC CICS.
PF3: Esta tecla puede usarse en cualquier momento para dar por terminada la
sesión.
COMANDO CEMT:
Es un comando, que se utiliza para requerir información o ejecutar diversas
acciones sobre las Tablas del CICS en el cual se está trabajando.
Este comando permite visualizar las diversas tablas del CICS y tomar acciones
Sobre ellas como por ejemplo: Abrir/Cerrar archivos, Dar de Baja una Task,etc
Página -105-
INQUIRE
STATUS: ENTER ONE OF THE FOLLOWING OR HIT ENTER FOR DEFAULT
SYSID=CIT2 APPLID=ARGTEST2
Página -106-
I FIL
STATUS: RESULTS - OVERTYPE TO MODIFY
Fil(AA101D ) Vsa Clo Ena Rea Bro Sha
Dsn( ÑDS067.AA.KS.AA101D )
Fil(AA101U ) Vsa Clo Ena Rea Bro Sha
Dsn( ÑDS014.AA101D.ROU )
Fil(AA107D ) Vsa Clo Ena Rea Bro Sha
Dsn( ÑDS067.AA.KS.AA107D )
Fil(AA109D ) Vsa Clo Ena Rea Bro Sha
Dsn( ÑDS936.AA.KS.AA109D )
Fil(AA117D ) Vsa Clo Ena Rea Upd Add Bro Del Sha
Dsn( ÑDS922.AA.KS.AA117D )
Fil(AA903D ) Vsa Clo Ena Rea Upd Add Bro Del Sha
Dsn( ÑDSCC.AA.KS.AA903D )
Fil(ACM103D ) Vsa Clo Ena Rea Upd Add Bro Del Sha
Dsn( ÑDST2.AC.KS.ACO103D )
Fil(ACM103D1) Vsa Clo Ena Rea Upd Add Bro Del Sha
Dsn( ÑDST2.AC.KS.ACO103D.PATH1 )
+ Fil(ACM103D2) Vsa Clo Ena Rea Upd Add Bro Del Sha
Dsn( ÑDST2.AC.KS.ACO103D.PATH2 )
SYSID=CIT2 APPLID=ARGTEST2
RESPONSE: NORMAL TIME: 16.30.06 DATE: 08.30.00
PF 1 HELP 3 END 5 VAR 7 SBH 8 SFH 9 MSG 10 SB 11 SF
I PROG(ACO001A)
STATUS: RESULTS - OVERTYPE TO MODIFY
Prog(ACO001A ) Len(0017840) Cob Pro Ena Pri Ced
Res(000) Use(0000000000) Bel Uex Ful Qua
SYSID=CIT2
APPLID=ARGTEST2
RESPONSE: NORMAL TIME: 16.30.06 DATE: 08.30.00
PF 1 HELP 3 END 5 VAR 7 SBH 8 SFH 9 MSG 10 SB 11 SF
Como puede verse a continuación se le puede dar NEW COPY (N ; para que
tome una nueva versión de un programa).
Página -107-
I PROG(ACO001A)
STATUS: RESULTS - OVERTYPE TO MODIFY
Prog(ACO001A ) Len(0017840) Cob Pro Ena Pri N Ced
Res(000) Use(0000000000) Bel Uex Ful Qua
SYSID=CIT2
APPLID=ARGTEST2
RESPONSE: NORMAL TIME: 16.31.29 DATE: 08.30.00
F 1 HELP 3 END 5 VAR 7 SBH 8 SFH 9 MSG 10 SB 11 SF
I PROG(ACO001A)
STATUS: RESULTS - OVERTYPE TO MODIFY
Prog(ACO001A ) Len(0017840) Cob Pro Ena Pri Ced NORMAL
Res(000) Use(0000000000) Bel Uex Ful Qua
SYSID=CIT2
APPLID=ARGTEST2
RESPONSE: NORMAL TIME: 16.31.29 DATE: 08.30.00
F 1 HELP 3 END 5 VAR 7 SBH 8 SFH 9 MSG 10 SB 11 SF
Página -108-
S PROG(ACO001*)
STATUS: RESULTS - OVERTYPE TO MODIFY
Prog(ACO001A ) Len(0017840) Cob Pro Ena Pri Ced
Res(000) Use(0000000000) Bel Uex Ful Qua
Prog(ACO001C ) Len(0008072) Cob Pro Ena Pri Ced
Res(000) Use(0000000000) Bel Uex Ful Qua
Prog(ACO001P ) Len(0006720) Cob Pro Ena Pri Ced
Res(000) Use(0000000000) Bel Uex Ful
SYSID=CIT2
APPLID=ARGTEST2
RESPONSE: NORMAL TIME: 16.31.29 DATE: 08.30.00
F 1 HELP 3 END 5 VAR 7 SBH 8 SFH 9 MSG 10 SB 11 SF
S PROG(ACO001*) NEW
STATUS: RESULTS - OVERTYPE TO MODIFY
Prog(ACO001A ) Len(0017840) Cob Pro Ena Pri Ced
Res(000) Use(0000000000) Bel Uex Ful Qua
Prog(ACO001C ) Len(0008072) Cob Pro Ena Pri Ced
Res(000) Use(0000000000) Bel Uex Ful Qua
Prog(ACO001P ) Len(0006720) Cob Pro Ena Pri Ced
Res(000) Use(0000000000) Bel Uex Ful Qua
SYSID=CIT2 APPLID=ARGTEST2
RESPONSE: NORMAL TIME: 16.31.29 DATE: 08.30.00
F 1 HELP 3 END 5 VAR 7 SBH 8 SFH 9 MSG 10 SB 11 SF
Página -109-
S PROG(ACO001*) NEW
STATUS: RESULTS - OVERTYPE TO MODIFY
Prog(ACO001A ) Len(0017840) Cob Pro Ena Pri Ced NORMAL
Res(000) Use(0000000000) Bel Uex Ful Qua
Prog(ACO001C ) Len(0008072) Cob Pro Ena Pri Ced NORMAL
Res(000) Use(0000000000) Bel Uex Ful Qua
Prog(ACO001P ) Len(0006720) Cob Pro Ena Pri Ced NORMAL
Res(000) Use(0000000000) Bel Uex Ful Qua
SYSID=CIT2 APPLID=ARGTEST2
RESPONSE: NORMAL TIME: 16.31.29 DATE: 08.30.00
F 1 HELP 3 END 5 VAR 7 SBH 8 SFH 9 MSG 10 SB 11 SF
Página -110-
Depuración de programas CEDF
Detección de errores
Tres pasos han de ejecutarse para producir un módulo ejecutable, como se ilustra
en la figura 4.27.
Fig.4-27.
Preparación de Programas.
TRADUCCION DE LISTADO DE
COMANDOS TRADUCCION
CICS
Programa
Fuente
LISTADO DE
COMPILADOR COMPILACION O
O ASSEMBLER
ASSEMBLER
MODULO
OBJETO
DOS:
Biblioteca Core LISTADO
LINK LINK EDIT
Image EDIT
OS:
Biblioteca de
Carga
Página -111-
De cada paso se producen listados. Estos vuelcos impresos, que revisará
cuidadosamente, son fuentes de información de errores que provee cada uno de
los programas.
Ha de diseñarse el programa de aplicación para que atienda los errores que sea
capaz de detectar. Por ejemplo, si el programa de aplicación instruyera al
operador a ingresar datos, el programa de aplicación debiera detectar errores en
el formato de los datos. Además de la verificación del formato de entrada,
deberán validarse también los datos. Así, el programa de aplicación debiera
notificar al operador si los datos de entrada no están dentro de límites razonables
o si en el archivo maestro no existe un registro.
Veamos algunos de los errores que puede atender el CICS. Si el CICS hubiera
sido diseñado para requerir la habilitación del operador (sign on), detectará
cualquier error deslizado durante el procedimiento de habilitación y transmitirá un
mensaje a la terminal.
Solamente pueden iniciarse las Ids de transacción que han sido definidas en el
CICS. Si un operador ingresa una ID inválida, se transmite un mensaje a la
terminal.
Es posible definir una ID de transacción con una clave de seguridad. Luego, esa
transacción sólo puede ser iniciada por un operador que tenga la misma clave de
seguridad. Si se cometiera una violación, se transmite un mensaje a la terminal
del usuario y a la Terminal Maestra (CSMT).
Facilidad de Rastreo
Página -112-
La facilidad de rastreo, que puede activarse o inactivarse dinámicamente, se
implementa a través del uso de una Tabla de Rastreo. Al arrancar el rastreo,
tosas las tareas que estén activas harán que los varios módulos de
administración del CICS generen entradas en tabla. Así, por ejemplo, si hubiera
tres tareas activas en el sistema y se activara el rastreo aparece
conceptualmente de la siguiente manera:
ENTRADAS DE
RASTREO DE
TAREA 1
ENTRADAS DE
RASTREO DE
TAREA 2
ENTRADAS DE
RASTREO DE
TAREA 3
ENTRADAS DE
RASTREO DE
TAREA 2
Página -113-
Fig.4-28.
Entradas de la Tabla de Rastreo.
TAREA 1
TABLA DE RASTREO
TAREA 2
TAREA 3
TAREA 2
LA TIOA ES LIBERADA
Página -114-
Los errores en tiempo de ejecución del programa de aplicación pueden dividirse
en dos categorías generales:
Los módulos de administración del CICS son los que hacen entradas en la Tabla
de Rastreo.
Dirección de la entrada
Información codificada en hexadecimal
Tipo de rastreo
Como puede ver, las entradas de tipo de rastreo reflejan los pasos que acabamos
de describir cuando el programa de aplicación emitió un comando RECEIVE.
Observamos ahora la figura 4.29 que muestra un vuelco impreso parcial de una
tabla de rastreo en la que se ilustran las entradas de dos tareas. El
encabezamiento de columna TASK identifica a la tarea que originó la entrada.
Fig.4-29.
Tabla de Rastreo
TRACE
ID REG14 REQD TASK FIELD A FIELD B TRACE TYPE
TABLE
2781B0 F0 1E606C 1104 TC 011E14E8 E2D1C1F2 ...YSJA2 KCP ATTACH-ONDITIONAL
2781C0 F1 1DD91E EA04 TC 00080620 801E14E8 .......Y SCP GETMAIN-COND-INIT
2781D0 C8 1DF222 0004 TC 001F7000 BA030628 ........ SCP ACQUIRED TCA
2781E0 F0 1E4078 4004 TC 44000000 001E1538 ........ KCP WAIT
2781F0 F2 1E7534 0204 0002 E2D1D4D6 C4C1F140 .SJMODA1 PCP XCTL
278200 F1 1F2AB6 CC04 0002 00000128 011E14E8 .......Y SCP GETMAIN-INIT
278210 C8 1DF222 0004 0002 001F7630 8C000138 ........ SCP ACQUIRED USER
278220 F1 1F2D16 CC04 0002 00000191 011E14E8 .......Y SCP GETMAIN-INIT
278150 C8 1DF222 0004 0002 001F7770 BC0001A8 ........ SCP ACQUIRED USER
278160 E1 246E5A 0004 0002 001F7780 00000204 ........ EIP HANDLE-COND ENTRY
278170 F1 1F24A6 CC04 0002 00000070 011E14E8 .......Y SCP GETMAIN-INIT
278180 C8 1DF222 0004 0002 001F7920 BC000078 ........ SCP ACQUIRED USER
278190 E1 246E5A 00F4 0002 00000000 00000204 ........ EIP HANDLE-COND RESP
2781A0 E1 246E7E 0004 0002 001F7780 00000402 ........ EIP RECEIVE-TC ENTRY
Página -115-
Advierta, por ejemplo, que Control de Terminal (TC) es una tarea activa con
entradas en la tabla. La otra tarea con entradas en la tabla es la tarea 0002. Ha
aprendido Ud. que una tarea se identifica con una ID alfanumérica de cuatro
caracteres. Puesto que una misma transacción puede iniciarse concurrentemente
en terminales diferentes, el CICS controla todas las tareas asignando a cada una
de ellas, al iniciarse, un número secuencial. Así, por ejemplo, al iniciar la tarea
AB12 el CICS le asigna un número de identificación de tarea secuencial.
Típicamente, su tarea será la única tarea del usuario activa. Esto se debe al
hecho de que está depurando un programa en un sistema de prueba CICS y no
en un sistema de producción, en donde hay múltiples usuarios del sistema.
Lo que sigue es una explicación de cada una de las columnas de la figura 4.29.
Página -116-
Columnas ‘Trace Type’ (Tipo de Rastreo)
Por ejemplo, KCP inicia una tarea cuya ID es SJA2. Advierta en la figura 4.29
cómo la columna ‘Field B’ es la representación EBCDIC para SJA2. Advierta
también que cuando el PCP transfiere el control al programa de aplicación
SJMODA1, ese nombre está contenido en el ‘Field A’ y en el ‘Field B’; no tendría
que ocuparse de su contenido.
Columna ‘REQD’
Esta columna identifica, con un valor numérico, la función o servicio que se le
requirió a un módulo de administración CICS. Por ejemplo, en la línea 1 de la
figura 4.29, el 1104 en la columna REQD significa para ‘ATTACH-CONDITIONAL’
(arranque condicional de una tarea).
Columna ‘ID’
Página -117-
Esta columna identifica al módulo de administración. Así, F0 es la codificación
para KCP; F1, para SCP, etc.
Columna ‘REG14’
RECEIVE-TC ENTRY
La actividad más antigua es la primer línea (superior) del vuelco impreso, así
ATTACH-CONDITIONAL
278150
UBICACION FISICA
DE LA TABLA DE
RASTREO
278220
La tarea número 0002 originó la entrada. La función que cumple SJMODA PCP
XCTL – es pedir al servicio de control de programas la transferencia de control
al programa de aplicación SJMODA1.
La entrada más antigua la originó Control de Terminales, que emitió un pedido al
Programa Control de Tareas (KCP) para que arranque una nueva tarea con la ID
de transacción SJA2.
Página -118-
Cuando el rastreo (Trace) está activo, la tabla de rastreo se imprimirá
automáticamente como parte de un vuelco de transacción.
Además de ser activado por la terminal Maestra, el rastreo puede asimismo ser
activado e inactivado por comandos del programa de aplicación. El programa de
aplicación puede requerir que se hagan entradas de rastreo solamente cuando
invocan ciertos módulos de administración del CICS.
Además, puede hacer entradas de tipo USER. Cuando se hacen entradas USER,
el programa de aplicación suministra los ocho bytes de información en ‘Field A’ y
‘Field B’.
Vuelco de Transacción
CODE:XXXX TASK:XXXX
ID DE
TRANSACCION
CODIGO DE TERMINACION
(Abend)
Los mensajes y los códigos del sistema se describen en ‘CICS Message and
Codes Manual’.
Página -119-
DFH2005 XXXX XXXX
ID E TRANSACCION
Mensaje del sistema DFHnnnnn especifica la acción que toma el CICS y sugiere
la acción que Ud. debe tomar.
CODIGO DE ABEND
ID E TRANSACCION
Página -120-
Un programa de aplicación puede asimismo requerir un vuelco emitiendo el
siguiente comando:
La segunda parte de esta sección describe las facilidades EDF que simplificaran
el proceso de prueba.
Si no quiere que se mezclen las salidas, puede usar una segunda terminal para
invocar a CEDF. Para invocar a CEDF desde una segunda terminal debe
especificar la ID de la terminal que procesa su transacción.
Página -121-
Por ejemplo:
CEDF L77A
Página -122-
Fig.4-30.
Pantalla 1.
ENTER: CONTINUE
'Pantalla1' : Esta es la primer pantalla EDF que vería en una terminal en la que se
está siguiendo la transacción FC01.
Todas las sentencias de comando tienen dos pantallas asociadas con ellas: una
'antes' y otra 'después' de ejecutarse el comando.
Página -123-
Fig. 4-31.
Pantalla 2.
ENTER: CONTINUE
Página -124-
Fig.4-32.
Pantalla 3.
ENTER: CONTINUE
Fig.4-33.
Pantalla 4.
ENTER: CONTINUE
'Pantalla 4': Esta pantalla muestra el comando RECEIVE antes de ser ejecutado.
Página -125-
Fig.4-34.
Pantalla 5.
ENTER: CONTINUE
'Pantalla 5': esta pantalla muestra el comando RECEIVE después de que fue
ejecutado. El dato
Página -126-
Fig.4-35.
Pantalla 6.
LENGERR()
.
.
ENTER: CONTINUE
Fig.4-36.
Pantalla 7.
Página -127-
Fig.4-37.
Pantalla 8.
Fig.4-38.
Pantalla 9.
Página -128-
Fig.4-39.
Pantalla 10.
Fig.4-40.
Pantalla 11.
(USER SCREEN)
Página -129-
Fig.4-41.
Pantalla 12.
Fig.4-42.
Pantalla 13.
Página -130-
Fig.4-43.
Pantalla 14.
ENTER: CONTINUE
Fig.4-44.
Pantalla 15.
Página -131-
Depuración y Prueba de una Transacción
Los programas se escriben para atender las condiciones de error que pueden
producirse durante su ejecución. En algunos casos es difícil, si no imposible,
'forzar' los errores que permitan probar la lógica de atención de errores de un
programa.
Fig.4-45.
Pantalla 16.
Página -132-
El modo de representación seguirá siendo hexadecimal hasta que pulse PF2,
para volver a carácter.
Fig.4-46.
Pantalla 17.
00132870 000000
00132880 000004 00000000 D3C1C3F9 40C4C9E2 D740D3E2 ...........FC01 DISP LS
00132890 000014 F0F1F200 00000000 00000000 00000000 012....................
000024 00000000 00000000 00000000 D3E2F0F1 ...................LS01
F440F5C2 C1D5C440 E2C8D6D9 .......2GR54 5BAND SHOR
E540C3C8 C9F1F7F7 .......TW
RECEIV CHI177
40F7F8F1 ...........78 0130LAX781
77 0295NYC102220
PF6: Esta tecla representa la pantalla del usuario asociada con la pantalla EDF
que se está representando.
PF10 y PF11: EDF almacena las pantallas tal como se representan; puede
resguardarse un máximo de 10 pantallas. PF11 le permite recorrer hacia atrás las
pantallas que han sido resguardadas (yendo de la más reciente a la más antigua).
Página -133-
PF10 lo lleva directamente a la más antigua resguardada. Puede representar
pantallas hacia delante pulsando ENTER por cada pantalla.
PF9: Como hemos mencionado antes, una vez iniciada la transacción CEDF, la
transacción del usuario es interceptada en cada comando EXEC CICS. En lugar
de parar la transacción del usuario en cada comando EXEC CICS, puede pedirse
a EDF que pare la transacción en base a una o más condiciones. El pedido para
seleccionar las condiciones puede hacerse en cualquier momento pulsando PF9.
se representa una pantalla de guía en la cual puede especificar las condiciones
que harán que EDF pare la transacción, por ejemplo, puede pararse cuando se
alcanza un tipo especificado de comando o cuando durante la ejecución de un
comando se produce una condición de excepción o error.
Página -134-
Módulo V
Los parámetros y opciones del comando de formateo de entrada BMS son los
siguientes:
TERMINAL Indica que los datos han de leerse desde la terminal y luego
formatearse en el área de trabajo del programa. La opción ASIS impide la
conversión a mayúsculas de los caracteres en minúsculas ingresados en la
corriente de entrada. Adviértase que pueden especificarse las opciones
TERMINAL o FROM y LENGTH, pero no ambas. Si no se codificara ninguna, se
asume TERMINAL.
FROM Indica que los datos han de formatearse desde otra área de datos
del programa. El área de datos nombrada contiene una corriente de datos en
modo nativo que ya ha sido leída desde la terminal. La longitud del área de datos
se define mediante la media palabra binaria identificada en el parámetro
LENGTH.
Página -135-
Comando de formateo de Salida
Los parámetros y opciones del comando de formateo de salida BMS son los
siguientes:
TERMINAL Indica que los datos han de ser representados en la terminal con la
cual está asociada la transacción.
FROM Especifica el nombre del área de trabajo que contiene los datos a
formatear. Si se omitiera este parámetro, el BMS presupone que los datos están
en el área de trabajo definida por el mapa simbólico.
Esta suposición es válida sólo si el nombre del mapa es una constante. Si es una
variable, FROM debe ser especificado.
Página -136-
Fig. 5-1.
Parámetros DATAONLY
y MAPONLY.
MAPA SIMBOLICO MAPA FISICO
CARACTERES DE
AREA DE DATOS CONTROL
CONSTANTES
DATAONLY MAPONLY
Página -137-
ERASEAUP borra todos los campos no protegidos. esto le permite borrar todos
los campos modificados de entrada de datos y dejar las constantes en la pantalla.
Este parámetro es de aplicación sólo a las IBM 3270.
Fig.5-2.
Formato de la pantalla
(COBOL).
IDENTIFICATION DIVISION.
PROGRAM-ID. BMSCOB1.
*
* EL PROGRAMA FORMATEA PANTALLA
*
*** EL PROGRAMA ESTA INCOMPLETO Y NO SE EJECUTARA ***
ENVIROMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
.
.
.
01 MAPAI COPY MAPSETA.
.
.
.
PROCEDURE DIVISION.
.
.
.
EXEC CICS SEND MAP('MAPA') MAPSET('MAPSETA')
MAPONLY END-EXEC.
.
.
Introducción
El dicho ' Si las cosas pueden ir mal, irán' es cierto afortunadamente en un
pequeño porcentaje de las veces. No obstante, en esas veces han de seguirse
procedimientos que vuelvan operativo al sistema en el tiempo más corto posible.
El programador de sistemas o el analista fija esos procedimientos.
Página -138-
utilizan para arrancarlo a primera hora de la mañana. Con este tipo de
rearranque, los operadores de terminal simplemente reingresan sus
transacciones.
Objetivos
Al completar este modulo podrá:
HANDLE CONDITION
La acción HANDLE CONDITION, codificada para un error en particular permite al
programa de aplicación mantener activa a la tarea cuando se produce el error. El
programa de aplicación procesa la condición de error y , usualmente, lleva la
tarea a su terminación normal. Si no se especificara en un comando HANDLE
CONDITION una cierta condición de error, termina anormalmente la tarea.
Página -139-
Si la tarea ejecutara solo una consulta del archivo, el efecto sobre el sistema es
mínimo. Si la tarea estuviera actualizando archivos y tuviera lugar un ABEND, la
actualización puede no quedar completa. En este caso, los registros del archivo
accedidos por la tarea deben ser restaurados a su imagen original. Este proceso
se llama vuelta atrás o backout.
HANDLE ABEND
PROGRAMA A
NOMBRE DE LA RUTINA
DE SALIDA
PROGRAMA A PROGRAMA B
PROGRAMA DE
SALIDA
SALIDA POR ABEND
Página -140-
Luego, al producirse un ABEND, el control se transferirá a la rutina de salida o al
programa de salida. Normalmente, la rutina o el programa de salida se usa para
relevar estadísticas adicionales sobre la falla o para corregir ésta y permitir que la
tarea continúe.
PROGRAMA A PROGRAMA B
XCTL
NIVEL
LOGICO 1
ABEND
RUTINA DE
SALIDA
Puesto que sólo puede especificarse una salida por nivel lógico, se recomienda
especificar un programa de salida en lugar de una rutina de salida cuando una
tarea ejecuta más de un programa del mismo nivel lógico.
Veamos ahora el procesamiento de la salida ABEND del CICS cuando una tarea
está ejecutando programas de diferentes niveles lógicos. Supongamos, por
ejemplo, que el programa A se vincula con el programa B.
PROGRAMA A
PROGRAMA B
HANDLE
ABEND
PROGRAMA Y
LINK
HANDLE
ABEND
PROGRAMA Z
PROGRAMA Y
PROGRAMA Z
Página -141-
Cada uno de los programas ha especificado un comando HANDLE ABEND que
nombra a los programas de salida Y y Z. Si A terminara anormalmente, se
ejecutará el programa de salida Y. Si B terminara anormalmente, se ejecuta el
programa de salida Z. Si Z terminara anormalmente, se ejecuta el programa de
salida Y porque el CICS ejecuta un programa de salida especificado del siguiente
nivel lógico más alto de una tarea terminada anormalmente.
PROGRAMA A
PROGRAMA B
LINK
HANDLE PROGRAMA C
ABEND
PROGRAMA L
LINK HANDLE
ABEND
NIVEL
PROGRAMA K
LOGICO 1
NIVEL
LOGICO 2
NIVEL
LOGICO 3
Registros Protegidos
Algunos recursos del CICS, tales como los registros de archivos o los segmentos
DL/I, están protegidos. Significa esto que en ciertas circunstancias, mientras una
tarea está procesando estos recursos, ninguna otra puede accederlos.
LIBERA
TAREA A REGISTRO 1
REGISTRO 1
REQUIERE (ESPERA)
TAREA B REGISTRO 1
REGISTRO 1
Página -142-
Control Exclusivo
REQUIERE (ESPERA)
TAREA A REGISTRO 1
REGISTRO 2
REQUIERE (ESPERA)
TAREA B REGISTRO 2
REGISTRO 1
Por ejemplo:
ENVIA
ARRANQUE LEE PARA
ACTUALIZA MENSAJE A FIN DE TAREA
TAREA ACTUALIZAR
TERMINAL
PUNTO DE PUNTO DE
SINCRONISMO SINCRONISMO
Página -143-
EXEC CICS SYNCPOINT
Así, una tarea queda compuesta de una o más Unidades Lógicas de Trabajo. Por
ejemplo:
LEE LEE
ARRANQUE REGISTRO 1 ACTUALIZA REGISTRO 2
ACTUALIZA FIN DE TAREA
TAREA PARA REGISTRO 1 PARA
REGISTRO 2
ACTUALIZAR ACTUALIZAR
LUW LUW
El programador de sistemas puede definir una tarea que actualiza uno o más de
los recursos protegidos del CICS como autorizada para el backout dinámico de
la transacción. En el momento en que la tarea modifica un recurso protegido, se
adquiere un buffer llamado log dinámico. Toda la actividad de la tarea que
afecta a un recurso protegido, se registra en el log dinámico con los fines de
volver atrás en caso de terminar anormalmente la tarea. El log dinámico se
mantiene hasta que la tarea termina, o hasta que éste emite un comando
SYNCPOINT. Al término de cada LUW, se borra el log, comenzando nuevamente
la registración a partir de su comienzo. Durante el procesamiento de terminación
anormal de la transacción se invoca un programa utilitario, responsable de volver
atrás los datos almacenados en el log dinámico. El log dinámico se libera en caso
de una terminación normal de la tarea. en la figura 5.3 puede observarse un
ejemplo de la actividad de una tarea y de la información registrada en el log
dinámico.
Página -144-
Fig.5-3.
Log Dinámico.
Log Dinámico
Actividad de la
tarea
Actualiza
REG 2 REG 1
(SOLO CLAVE)
Agrega
REG 3 REG 2
REG 4 Borra
REG 3
(SOLO CLAVE)
Agrega
DL/1 REG 4
Actualiza
DL/1
Al producirse un ABEND del sistema, en éste puede haber muchas tareas activas.
Algunas pueden estar actualizando recursos protegidos, otras no.
Toda tarea que haya arrancado pero no completado al producirse una ABEND
del sistema se llama tarea en vuelo. Si una tarea en vuelo estuviera accediendo
un recurso protegido al terminar anormalmente el CICS, habrá de eliminarse todo
efecto que la tarea haya tenido en el recurso. Esto debe ser así, puesto que no
puede determinarse cuándo ha tenido lugar el ABEND, La información con
pronósticos de restauración se registra en el log del sistema.
El log del sistema puede ser un archivo en cinta o en disco. Las actividades
registradas en este registro se determinan por los nombres de archivo y/o de cola
especificados por el programador de sistemas.
Página -145-
LOGGING
Fig.5-4.
Log del Sistema.
Arranca
TAREA A
agrega
A TS1 TS 1 Arranca
TAREA B
borra
B REG 2
REG 2
Arranca
TAREA C
Pto. de Sinc.
C agrega
REG 3 REG 3
actualiza
REG 1
Lee REG 4
para
actualizar
A REG 4
Lee REG 5
B REG 5 para
actualizar
La tarea A inicia y lee el registro 1 para actualizarlo. se guarda una copia del
registro 1 y se activa una señal de punto de sincronización. La tarea A agrega un
registro de Almacenamiento Temporario que también se guarda en el registro log
del sistema. Arranca la tarea B y se registran sus actividades. Si el sistema
terminara anormalmente, tal como puede verse en la figura 5.4, se lee hacia atrás
el log del sistema y se vuelven atrás las actividades de todas las tareas en curso.
Página -146-
JOURNALING
Journaling es la facilidad del CICS que registra datos que generalmente se usan
con propósitos de recuperación. Tanto el CICS como los programas de aplicación
pueden llevar un journaling.
Hasta aquí hemos hablado de volver atrás datos cuando tiene lugar una falla;
pero, puede aplicarse otro método de recuperación. Este método involucra tomar
una versión anterior de un archivo y volver a aplicarle las transacciones
corrientes.
Probablemente esté familiarizado con el método, ya que es la acción que
normalmente se toma para recuperar un sistema en batch.
Las transacciones, en un sistema batch, están completamente disponibles en
tarjetas, disco o cinta. No obstante, en un sistema en línea las transacciones son
ingresadas desde terminales, y no se dispone posteriormente de ellas salvo que
fueran asentadas en un journal. El programa de aplicación puede salvar
transacciones de entrada en un archivo de journal o archivo diario. Estas
transacciones, en caso de necesitarse de ellas, estarán disponibles
posteriormente para su recuperación.
JOURNALS Automáticos
Página -147-
Fig. 5-5.
Journal Automático.
Tabla de Control
de Archivos
Journal
Agrega Agrega Agrega Agrega Nro.4
Archivo A
REG 1 REG 10 REG 2 REG 5
Journal
Agrega Borra Actualiza Nro.4
Archivo B
REG 23 REG 19 REG 16
Journal
Nro.17
Página -148-
Journal del Usuario
Además de los archivos de journal que puede crear el CICS, existen otros que
puede crear su programa de aplicación. Veamos un sistema de gestión de
inventarios. En el transcurso del día los operadores de terminal ingresan
transacciones que actualizan el archivo maestro de existencias. Estas
transacciones pueden ser despachos a los clientes, nuevos pedidos de éstos o
ítems recibidos de los vendedores. el operador de terminal puede ingresar la
siguiente información:
Comando Journal
NUMERO DE
ARCHIVO JOURNAL
(desde2 hasta 99)
LONGITUD DEL
REGISTRO
NOMBRE DEL AREA QUE
CONTIENE EL REGISTRO
Página -149-
JTYPEID (data-value)
IDENTIFICADOR DEL
REGISTRO
REGISTRO JOURNAL
IDENTIFICACION
DEL REGISTRO DATOS
LONGITUD DEL
PREFIJO
NOMBRE DEL AREA QUE
CONTIENE EL PREFIJO
IDENTIFICACION
DEL REGISTRO PREFIJO DATOS
Fig.5-6.
Buffer de Journal Completo.
(Grabación Física).
Journal Nro.14
Journal
Agrega Actualiza Lee Agrega O44
Nro.17
REG 34 REG 29 REG 24 REG 14
Journal Nº44
Página -150-
El programa de aplicación puede estar manipulando datos críticos y grabando
registros en un archivo de journal. Los registros se colocan en un buffer a la
espera de que se llene antes de que tenga lugar la grabación física. De 'caer' el
sistema, podrían perderse datos críticos en el archivo de journal ( en lugar de
esperar que se llene el buffer), el programador puede especificar la opción
STRATIO en el comando JOURNAL. Esta opción fuerza una grabación física
inmediatamente después del pedido JOURNAL que especifica STARTIO. Si se
especificara STARTIO para cada ejecución del comando, se pierden las ventajas
del buffer. Por lo tanto, deberá limitarse el uso de STARTIO.
Tal como acontece con otros comandos del CICS, con el comando JOURNAL
pueden producirse condiciones de excepción. Estas son las condiciones de
excepción que con toda probabilidad se encontrará Ud..
Las facilidades de Administración de los Tiempos y de las tareas del CICS dan al
programa de aplicación fácil acceso a :
Obtención de la hora
Al iniciarse una tarea se crea un EIB para ella. La hora en la que se inició la tarea
se transfiere al campo EIB para ella. La hora en la que se inició la tarea se
transfiere al campo EIBTIME del EIB.
Página -151-
CICS
EIB
HORA
EIBTIME
HHMMSS
Esto colocará la hora actual en EIBTIME. Podría utilizar la hora actual para
'estampar la hora' de las actividades del CICS. Por ejemplo, cómo parte de los
registros de actualización de un archivo maestro podría disponerse en el registro
de un campo para la hora actual, o bien incluirse la hora actual en una pantalla
transmitida a la terminal.
Obtención de la fecha
EIB
FECHA
EIBDATE
YYDDD
Página -152-
Así, el comando EXEC CICS ASKTIME actualiza dos campos EIB. Típicamente,
al modificarse un campo EIBTIME, se restaurará el campo EIBDATE con la
misma fecha. Pero si se iniciara una tarea poco antes de medianoche y se
emitiera el comando ASKTIME después de medianoche, el campo EIBDATE
contendrá la nueva fecha.
FORMATTIME
Función
Transforma la fecha y hora absolutas dentro de un formato especificado.
FORMATTIME-ABSTIME(data-area)
DATE (data-area) DATE FORM(data-area)
MMDDDYYYY(data-area) MONTHOFYEAR(data-area)
YYYYMMDD(data-area)
Conditions:
INVREQ
Página -153-
EXEC CICS ASKTIME (utime)
EXEC CICS FORMATTIME ABSTIME (utime)
DATASEP ( ‘-‘ ) DDMMYY (date)
TIME (time) TIMESEP
Opciones Formattime
ABSTIME (data-area) especifica el valor para la hora, empaquetado en forma
decimal, desde las 00:00 horas del 1 de Enero de 1900 (en milisegundos
redondeados al mas próximo centésimo de un segundo) que es convertido en un
formato alternativo.
Página -154-
DDMMYY (data-area) especifica en forma de día/mes/año el campo de usuario
de 8 caracteres donde CICS devuelve la fecha (por ejemplo, 21/10/95).
YEAR (data-area) especifica los números de 4 dígitos del año como un numero
binario fullword (por ejemplo, 1995, 2001).
Página -155-
Condición FORMATTIME
INVREQ aparece si la opción ABSTIME es una forma incorrecta (RESP2=1).
Módulo VI
LAX235
492
LAX235
492
Corriente de datos
Página -156-
O, crear una corriente de datos formateada utilizando caracteres de control
dependientes del dispositivo para colocar cada uno de los dos campos en sus
lugares adecuados.
CARACTERES DE CARACTERES DE
LAX235 492
CONTROL CONTROL
Corriente de datos
Independencia de dispositivos
Página -157-
Fig. 6-1.
Interfase BMS
campo 1
campo 2 TCTTE
BMS
Caracteres Caracteres
Campo 1 Campo 2
de Control de Control
TCP
Independencia de Formato
El BMS también le permite escribir programas de aplicación sin ocuparse de la
posición física de los campos de datos al ser desplegados. En su programa de
aplicación usará nombres simbólicos para referenciar los campos.
El BMS relaciona el rótulo con la posición real de la pantalla por medio de tablas
llamadas mapas físicos y mapas simbólicos de descripción.
Página -158-
Mapas físicos
Conjuntos de Mapas
(MAPSET)
Página -159-
Fig.6-2.
Mapas Físicos.
Partición/Región CICS
Biblioteca de
programas
TCTTE
Tipo de
Terminal BMS
Mapset
3270
Programa de
Aplicación Mapset
3767
a
rg
ca
Mapset
Nombre Mapa MAP (MAPSET) 3780
Nombre Mapset Asociado con el
tipo de terminal
3780
3767
3270
Supongamos que la tarea T1, asociada a través de su TCTTE con una IBM 3278,
Modelo 2, quiera usar su programa. Si el mapa no estuviera ya en el
almacenamiento, el BMS pide la carga de un conjunto de mapas conocido al
CICS como MAPSET1M en su memoria dinámica. Otra tarea, T2, asociada a
través de su TCTTE con una IBM 3767 también llama a su programa. El conjunto
de mapas cargado (de no estar ya en el almacenamiento) es, en este caso,
MAPSET1P.
Página -160-
Fig.6-3.
Dos mapas físicos
para el mismo formato de
representación y dos tipos de terminal
Partición/Región CICS
BMS
Tarea T1
TCT
MAP1M SUFIJO M
Programa de TCTTE
Aplicación
MAP1
MAP1P
SUFIJO P
TCTTE
TERMINAL 37672
Tarea T2
MENSAJE AL OPERADOR
Página -161-
Corriente de datos
ESTADO DE EXISTENCIAS
EN ESTANTERIAS:325
Corriente de datos
EN ESTANTERIAS CC 325 CC
Bajo el BMS, los mapas físicos y simbólicos se generan en forma batch mediante
macroinstrucciones de tipo ASSEMBLER. Los mapas físicos se almacenan en la
biblioteca de programas y cargan al inicializarse el CICS o cuando se necesita de
Página -162-
ellos. Los mapas simbólicos se almacenan en la biblioteca de programa fuente y
copian en el programa de aplicación.
Mapas simbólicos
Los datos se presentan por ítem individual. Cada uno de los ítems de datos es
precedido por:
LL A DATOS LL A DATOS
CARACTER DE ATRIBUTO
LONGITUD DE DATOS
Los datos se presentan como segmentos de una línea. Cada una de las líneas se
presentan con el formato con que aparecerá en la terminal, incluso los blancos de
relleno. el atributo se define para cada segmento de línea.
A DATOS A DATOS
BLANCOS
CARACTER DE ATRIBUTO
Página -163-
Este formato se usa generalmente para la entrada de terminales de un tipo
impresora/teclado.
Para direccionar cada uno de los ítems del área de trabajo se crea un conjunto de
nombres simbólicos para los campos a acceder. Por ejemplo, al crear un mapa
simbólico, se define un campo de datos variables rotulado FLD1.
FLD 1
LL A DATOS
FLD11 ó FLD10
FLD1A ó FLD1F
FLD1L
Página -164-
Creación de conjuntos de
Fig.6-4.
Sintaxis de las Macros.
COLUMNA 1
POR LO MENOS UN BLANCO COLUMNA 71 COLUMNA 72
COLUMNA 16
Un conjunto de mapas está formado por uno o más mapas, definiendo cada
mapa un conjunto de campos.
Página -165-
Fig. 6-5.
Ejemplo de Conjunto
de Mapas.
DFHMDI .....
MAP 1 DFHMDF.....
DFHMDF.....
DFHMDF.....
DFHMDI .....
DFHMDF.....
MAP 2 DFHMDF.....
DFHMDI .....
MAP 3 DFHMDF.....
DFHMDF.....
DFHMDF.....
DFHMDI .....
DFHMDF.....
MAP4 DFHMDF.....
DFHMDF.....
DFHMDF.....
DFHMDF.....
La segunda macro DFHMDI define el comienzo del segundo mapa (MAP2) del
conjunto de mapas. Dos macros DFHMDF definen los campos del segundo
mapa. El tercer mapa es definido por la macro DFHMDI seguida de tres macros
DFHMDF. El cuarto mapa es definido por la macro DFHMDI seguida de cinco
macros DFHMDF. Finalmente, se define el fin del conjunto de mapas con la
segunda macro DFHMSD.
TYPE= FINAL
Página -166-
Puede usarse la misma entrada para generar el mapa simbólico reemplazando
MAP por DSECT. Algunos parámetros de las macros son únicos para crear el
mapa físico mientras que otros lo son para crear el mapa simbólico.
Cuando en ambas operaciones use la misma entrada, durante la generación del
mapa físico se ignorarán los parámetros que no pertenezcan al mapa físico, los
parámetros que no pertenezcan al mapa simbólico se ignorarán durante la
generación del mapa simbólico.
Fig.6-6.
Generación de mapas
no interactiva.
Página -167-
DFHMSD DFHMSD
TYPE : MAP TYPE : DSECT
BMS BMS
MAPA MAPA
FISICO SIMBOLICO Programa
Fuente
Traductor de
Comandos
Biblioteca de Carga
(OS/VS)
Biblioteca Fuente
Biblioteca Core
Image (DOS/VS)
Assembler o
Compilación
Biblioteca de Carga
(OS/VS)
Biblioteca Core
Image (DOS/VS)
Definición de conjunto de
Página -168-
Para nombrar y describir las características de un conjunto de mapas se usa la
macro instrucción DFHMSD.
La figura 6.7 señala los parámetros
Página -169-
Fig.6-7.
Macro DFHMSD.
DSECT
NOMBRE DEL MAP
CONJUNTO DE DFHMSD TYPE= FINAL
MAPAS (1a7)
IN
OUT
,MODE= INOUT
ASM
COBOL
,LANG=
PLI
,TERM=type DEFAULT
BLUE
RED
PINK
,COLOR= GREEN
TURQUOISE
YELLOW
NEUTRAL
,CTRL=PRINT,L40,FREEKB,ALARM,FRESET)
L60
L80
HONEOM
FIELD
,DATA= BLOCK
NO
,EXTATT= MAPONLY
YES
OFF
,HILGHT= BLINK
REVERSE
UNDERLINE
BASE
,PS= psid
,SUFFIX=n
¦NO
,TIOAPFX=
¦SI
,STORAGE=AUTO
,VALIDN=(MUSTFILL,MUSTENTER)
Página -170-
* TYPE=MAP Para crear un conjunto de mapas físicos
DSECT Para crear un conjunto de mapas Simbólicos
FINAL Fin de una descripción del conjunto de mapas
* MODE=IN Conjunto de mapas a usar en representaciones de entrada
OUT Conjunto de mapas a usar en representaciones de salida
INOUT Conjunto de mapas a usar en representaciones de entrada/salida
LANG= ASM
COBOL en función del lenguaje del programa fuente
PL/I (este parámetro es necesario para la creación del conjunto de
mapas simbólico).
DATA= Especifica si los datos del área de trabajo del programa está en
formato FIELD o en formato BLOCK para todo el conj. de mapas.
COLOR= Especifica el color por defecto para todos los campos, en todos los
mapas en el conjunto de mapas.
Puede ser reemplazado especificando la opción COLOR en las
macros DFHMDI y DFHMDF.
CTRL= Define las características de la terminal a asociar con el conjunto
de MAPSET el momento de la salida. En operaciones de
impresora se
usan PRINT, Lnn y HONEOM.
L80
Página -171-
FREEKB Requiere el desbloqueo del teclado para permitir al operador el
ingreso de un mensaje. Si no se especificara este parámetro, el operador
necesitará usar la tecla RESET en la 3270 para habilitar la entrada de datos.
BASE
psid
Página -172-
Fig.6-8.
Propósito del parámetro
TIOAPFX.
INFORMACION DE
TIOA LL A DATOS 1 LL A DATOS 2
CONTROL
12 BYTES
AREA DE
TRABAJO DEL LL A DATOS 1 LL A DATOS 2
PROGRAMA
(TIOAPFX=YES)
12 BYTES
Definición de mapas
Macro DFHMDI
Página -173-
Fig.6-9.
Macro DFHMDI.
NOMBRE DEL
MAPAS (1a7) DFHMDI SIZE=(LINE,COLUMN)
,LINE=1 TO 240
,COLUMN=1 TO 240
LEFT
,JUSTIFY= RIGHT
FIELD
,DATA= BLOCK
DEFAULT
BLUE
RED
,COLOR= PINK
GREEN
TURQUOISE
YELLOW
NEUTRAL
OFF
,HILIGHT= BLINK
REVERSE
UNDERLINE
BASE
,PS= psid
,VALIDN=(MUSTFILL,MUSTENTER)
Página -174-
Fig.6-10.
Macro DFHMDI .
Ejemplo 1.
COLUMNA 5
MAPA
LINEA 10
SIZE=(12,20)
LINE=10
COLUM=5
12
JUSTIFY:LEFT
20
La figura 6.10 ilustra otro ejemplo del uso de la macro DFHMDI. Obsérvese que
las especificaciones son las mismas que en la figura 6.9, salvo en que la
representación se alinea a la derecha.
Fig.6-11.
Macro DFHMDI.
Ejemplo 2.
COLUMNA 5
MAPA
LINEA 10
LINEA 10
SIZE=(12,20)
LINE=10
COLUM=5
12
JUSTIFY:RIGHT
20
Página -175-
Definición de campos
Macro DFHMDF
Fig.6-12.
Requerimientos de campos.
UBICACION DEL CAMPO
*DATOS VARIABLES
() DESCRIPCION
CAMPOS CIERRE DE
PROTEGIDOS () NUMERO DE PIEZA CAMPOS
() CANTIDAD
CAMPOS NO PROTEGIDOS
Página -176-
Fig. 6-13.
Macro DFHMDF.
NOMBRE DEL
CAMPO
(1a7 Caracteres opcional) DFHMDF POS=(LINE,COLUMN)
,ATTRB=(
,INITIAL='CONSTANTS'
,LENGTH= 1 to 256
,PICIN='VALUE'
,PICOUT='VALUE'
,JUSTIFY=
,OCCURS=NUMBER OF OCCURENCES
,COLOR=
,HILIGHT=
,PS=
,VALIDN=(MUSTFILL,MUSTENTER)
Página -177-
FIELD NAME (nombre del campo) - parámetro opcional que permite la
identificación de un campo y que contiene datos variables. Los campos que
contienen constantes se definen pero no es necesario asignarles nombres.
En la descripción de los mapas simbólicos se generan solamente rótulos
para los campos que tengan nombres asignados.
POS= Define la posición del byte de atributo relativo al mapa, no a la
pantalla física. POS se expresa como un número de línea y columna dentro
del mapa. por ejemplo:
(PANTALLA)
COLUMNA 5
(MAPA)
PANTALLA
COLUMNA 2
LINEA 10
(MAPA)
LINEA 6
0 CAMPO 1
POS=(6,2)
CAMPO 1 CAMPO 2
CAMPO 3
CAMPO 4
CAMPO 5
* LENGTH= Define la longitud del campo que puede ser de 1 a 256 caracteres
sin contar el byte de atributo.
Página -178-
UNPROT Campo no protegido, campo en el cual el operador ingresa datos en
el momento de la entrada.
DET Puede usar el lápiz luminoso para seleccionar los varios ítems de
datos que quiere usar en el programa. Los ítems de datos fueron
inicializados a estar a las siguientes reglas:
LL A
UN BYTE DE DATOS
VALOR=X'FF'SI EL CAMPO FUE DETECTADO
VALOR=X'00'SI NO FUE DETECTADO
CARACTER DE ATRIBUTO
Página -179-
* JUSTIFY= Salvo que especificara otra cosa, los campos de datos colocados
por el BMS en el área de trabajo de un programa se alinean de la
siguiente manera:
FECHA I
FECHA 0
LL A DD MM AA
AÑO I
MES I AÑO 0
MES 0
DIA I
DIA 0
FECHA A
FECHA F
FECHA L
Página -180-
* OCCURS=n Permite describir n campos idénticos a la vez. Si se usara este
parámetro, se genera un conjunto de rótulos simbólicos con índices
como parte del conjunto de mapas simbólicos. Esta generación
tiene lugar en el COBOL a través de una cláusula OCCURS. En el
PL/I la generación tiene lugar por una matriz. El ASSEMBLER
simplemente reserva suficiente espacio en el mapa simbólico para
acomodar todas las occurrencias de los campos. Advierta que
puede usar OCCURS o GRPNAME, pero no ambos.
FLD2 DFHMDF...LENGTH=4,OCCURS=3
FLD2N
(Nombre de campo de la próxima ocurrencia Assembler
solamente)
FLD2 I
FLD2 0
FLD2 A
FLD2 F
Página -181-
Fig.6.14.
Ejemplo de definición de Mapas y
de Conjuntos de Mapas.
DFHMSD TYPE=FINAL
COLUMNA 72
COLUMNA 16
* DFHMDF Describe los campos de MAPX. hay cuatro macros DFHMDF, una
por cada uno de los cuatro campos que se describen en secuencia
relativa a su posición en el mapa. El programa de aplicación se
refiere sólo a dos de estos campos (DATFLD y NAME). Por lo tanto,
hallará estos dos campos (y solamente estos dos) en el mapa
simbólico relacionado.
Página -182-
Modificación del Byte de Atributo
Para los usuarios del PL/I, el listado consiste en sentencias DECLARE que
definen variables elementales de carácter. Para los usuarios del ASSEMBLE, el
listado consiste de un conjunto de sentencias EQU.
Página -183-
Fig. 6-15.
Lista precodificada de Atributos y
Caracteres de Control de Impresora
(DFHBMSCA)
DFHBMPRO PROTEGIDO
DFHBMUNP NO PROTEGIDO
X'FF' REEMPLAZA EL ATRIBUTO ESPECIFICADO POR
DFHDFT
DEFECTO
DFHBLUE AZUL
DFHRED ROJO
DFHPINK ROSADO
DFHGREEN VERDE
DFHTURQ TURQUESA
DFHYELLO AMARILLO
DFHNEUTR NEUTRO
DFHBLINK PARPADEA
DFHUNDLN SUBRAYA
Página -184-
Fig.6-15.
Modificación del Byte de Atributo
(COBOL)
IDENTIFICATION DIVISION.
PROGRAM-ID. BMSCOB2.
*
* EL PROGRAMA MODIFICA EL BYTE DE ATRIBUTO DE 3 CAMPOS
* ANTES DE ENVIAR EL MAPA Y LOS DATOS A LA TERMINAL
*
*
*** EL PROGRAMA ESTA INCOMPLETO Y NO S EEJECUTARA ***
*
ENVIROMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
.
.
.
01 MAPAI COPY MAPSETA.
.
.
.
01 DFHBMSCA COPY DFHBMSCA.
.
.
.
PROCEDURE DIVISION.
.
.
MOVE DFHBMBRY TO CUSTNOA.
MOVE DFHBMPRO TO CUSTNAMA.
MOVE DFHBMPRO TO AMOUNTA.
.
.
EXEC CICS SEND MAP('MAPA') MAPSET('MAPSETA') END-EXEC.
.
.
Página -185-