Professional Documents
Culture Documents
CICS:
Que es el CICS ?.
CICS (Customer Information Control System); Es un sistema de manejo de datos de uso general, que puede funcionar dentro de una red de muchas terminales, de hecho miles de ellas.
SISTEMA OPERATIVO
Fig. 1 el CICS puede manejar muchas terminales. Permite acceso a los datos Con sus propios recursos.
Desde cierto punto de vista, el CICS podra verse como un sistema operativo pequeo dentro del Sistema Operativo principal, su funcin sera la de administrar los recursos necesarios para el manejo de un ambiente donde se corren programas de aplicacin incluyendo interfaces de archivos y bases de datos. Por ejemplo, el CICS tiene su propio File Control Program y su propio Terminal Control Program. Los sistemas operativos, estn diseados para administrar eficientemente los recursos de una computadora, el CICS ayuda a mantener una clase particular de programas de aplicacin (llamadas aplicaciones on-line), separadas de otras aplicaciones en el sistema, y por supuesto, a ejecutarlas. Cierto tipo de aplicaciones denominadas 'BATCH', que generalmente se corren en un ambiente TSO (Time Sharing Option), leen un archivo, procesan registros individuales, actualizan una nueva versin del archivo, y producen cierto tipo de reporte impreso. Al terminar el programa, los archivos se cierran, y los datos se tornan inaccesibles para cualquier consulta, adicionalmente, los registros en los archivos, quedan actualizados hasta la ultima ejecucin del programa. A veces, esto no es suficiente. Los usuarios necesitan respuestas rpidas a sus solicitudes de proceso de informacin. La espera mientras termina la ejecucin de un programa puede ser inaceptable en algunas aplicaciones que necesitan respuestas inmediatas. Para esto, se necesita informacin en lnea (on-line Information), en otras palabras, se necesita un control directo de las bases de datos, o sea, un sistema DB/DC (Data Base Direct Control). El usuario final de una aplicacin on-line dentro de una red, puede hacer diferentes clases de operaciones con diferentes archivos (data sets) y observar los resultados
1
MANUAL DE CICS
de su operacin en cuestin de segundos, mientras que la operacin interna del sistema DB/DC le pasa inadvertida; esta es la funcin de CICS.
CICS
TERM INAL 2 PRO G2
CI
DATOS 2
El CICS proporciona:
Las funciones solicitadas por los programas de la aplicacin para comunicacin con terminales locales, remotas y con los subsistemas. Control de concurrencia mientras corren los programas de varios usuarios. Recursos para accesar a las bases de datos y a los archivos, en conjuncin con los diferentes productos y mtodos de acceso que proporciona IBM. La habilidad para comunicarse con otros sistemas CICS y sistemas de Base de Datos, tanto en la computadora local como en los sistemas remotos.
MANUAL DE CICS
Los programas en lnea tienen ciertas caractersticas y necesidades en comn las principales serian: Dar servicio a varios usuarios en lnea simultneamente (aparentemente). Solicitar acceso comn a los mismos archivos (Data Sets) y a las mismas Bases de Datos. Dar respuesta a cada usuario final en un tiempo razonable. Accesar a terminales remotas y sistemas de comunicaciones. El CICS utiliza sus propios servicios para administrar las necesidades de sus transacciones, pero no duplica todos los servicios proporcionados por el Sistema Operativo. Cuando lo considera apropiado, el CICS encarga al OS los servicios necesarios.
termina l
Region de CICS
Datos
SISTEMA OPERATIVO
Task De CICS
termi nal
DATOS
Figura 3
3
MANUAL DE CICS
En resumen, CICS es un ambiente capaz de proporcionar sus propios servicios y que permite el acceso a los distintos manejadores de datos del sistema, en un formato on-line. Si ocurre un error: Con un programa Batch, podemos reiniciar todo el proceso, o continuarlo desde el punto de la falla. Esto se debe a que la secuencia de proceso es predecible (porque esta basada en datos predefinidos), y porque los datos de entrada estn aun disponibles. Para el proceso on-line, los datos no estn preparados con antelacin, sino que se van metiendo segn los necesita la aplicacin. Adicionalmente, los datos pueden provenir de varios usuarios trabajando en forma concurrente. En otras palabras, los datos no llegan a la aplicacin en una secuencia predecible.
Recibe mapa
Procesa Informaci n
DATOS
MANUAL DE CICS
Por esta causa, el CICS tiene diferentes instrucciones dedicadas al envo y recepcin de datos desde terminales. La pantalla de una terminal, generalmente puede exhibir informacin en 24 renglones de 80 columnas cada uno, lo que equivale a 1920 posiciones. Cada una de estas 1920 posiciones se puede direccionar individualmente, lo que quiere decir que el programa puede mandar datos a cualquier direccin de la pantalla. Pero es ms conveniente crear un formato especial de pantalla para enviar y recibir los datos en paquetes completos. El formato especial de pantallas se llama MAPA. El CICS controla cada uno de los programas mientras se ejecuta una aplicacin, para esto, existe un grupo de variables dentro de un bloque llamado Bloque EIB (Execute Interface Block). Son de particular importancia las variables EIBRESP y, EIBRESP2, que contienen un cdigo de respuesta a la ejecucin del comando CICS ejecutado.
CONCEPTOS BASICOS
TRANSACCION (TRANSACTION)
El CICS es un ambiente que procesa transacciones. Una transaccin es un proceso, iniciado por una solicitud, generalmente enviada por el usuario de una terminal. El usuario teclea el nombre de la transaccin P.Ej. ALTA Una sola transaccin invoca uno o ms programas de aplicacin, que al correr, producen el resultado deseado. En otras palabras, "Transaccin" significa en CICS lo mismo que en el lenguaje normal: Un evento o acto de negocio entre dos partes. En el proceso Batch, las transacciones de un mismo tipo, se agrupan y se procesan en tanda (todas las actualizaciones del archivo de personal en un job, la lista de todas las cuentas sobregiradas en otro job y, as, sucesivamente), en cambio, en un sistema on-line las transacciones no se acomodan por tipo, sino que se hacen individualmente segn van llegado (Una actualizacin al archivo de personal, despus una factura de algn cliente, ahora una orden de cobro, etc.).
TAREA (TASK).
MANUAL DE CICS
El usuario le indica al CICS que tipo de transaccin desea ejecutar, para esto usa un identificador de transaccin. Que por convencin, debe ser una palabra de uno a cuatro caracteres. El CICS observa el identificador para saber cual programa debe invocar primero para ejecutar el trabajo solicitado, despus, crea un TASK para hacer el trabajo, y transfiere el control al programa indicado. Entonces un Task es la ejecucin de algn tipo de transaccin. Un Task Puede leer de o escribir en la terminal que lo inicio. Puede accesar a la informacin de uno o varios archivos o Bases de datos Puede iniciar otros Tasks. Ejecutar diferentes operaciones.
Todos estos servicios se solicitan y controlan a travs de comandos CICS dentro de los programas de aplicacin. El CICS maneja varios Tasks de una manera concurrente; En un momento dado, solamente un task se puede estar ejecutando, sin embargo cuando un task solicita un servicio que involucra una espera, como es el caso cuando se solicita un servicio de entrada/salida de archivos, el CICS utiliza el tiempo de espera del primer task para ejecutar un segundo task, y as sucesivamente. Desde el punto de vista del usuario, parece como si muchos tasks se estuvieran ejecutando simultneamente.
MANUAL DE CICS
NEW PASSWORD:
CESN
Una vez identificado, el usuario invoca la aplicacin que desea utilizar, para esto debe teclear el cdigo de identificacin de la transaccin (El nombre de su transaccin) como principio de su solicitud. Los programas de aplicacin estn almacenados en una biblioteca de sistema enlazada al procesador, estos programas se pueden cargar cuando arranca el sistema o, sencillamente, cuando se soliciten. Si un programa esta en la memoria, pero no se usa, el CICS despeja el espacio para usarlo en otros propsitos cuando el programa se necesite de nuevo, el CICS carga una nueva copia desde la biblioteca de carga. Mientras se procesa una transaccin, el sistema puede recibir mensajes de diferentes terminales. Por cada mensaje, el CICS carga un programa de aplicacin, (suponiendo que no este cargado), e inicia un Task para ejecutarlo, entonces varios Tasks pueden estar corriendo concurrentemente, El CICS mantiene una lnea de control separada para cada Task y puede controlar varios de ellos al mismo tiempo, esto es lo que se llama Multitasking. El CICS maneja tanto el Multitasking como las solicitudes de servicios de cada Task, esto le permite optimizar el uso del tiempo y los recursos del sistema mientras esta corriendo una transaccin. Cuando termina la transaccin, el CICS regresa a la terminal a su estado de espera (Standby).
El CICS requiere de varios recursos para efectuar los procesos. La mayora de los recursos estn asignados desde la instalacin bsica del CICS. Cuando se crea una nueva transaccin, generalmente el diseador debe dar de alta los recursos que necesitara para su transaccin. Los recursos mnimos son:
7
MANUAL DE CICS
El nombre de la transaccin y, su asociacin con el programa El nombre del programa asociado con la transaccin. Los archivos que usara la transaccin.
Estos recursos se declaran en tres tablas de recursos: La TABLA PCT (Program Control Table) para el nombre de la Transaccin y su asociacin con el programa. La TABLA PPT (Program Process Table) para el nombre del programa asociado con la transaccin. La TABLA FCT (File Control TABLE) para los nombres de los archivos que usara la transaccin.
No es necesario que existan estos elementos, se pueden dar de alta en las tablas los nombres de las transacciones, programas y archivos, despus se crean los archivos y programas. Para accesar las tablas de recursos, se usa la transaccin estndar CEMT.
PCT FCT ARCHIVO1 ARCHIVO2 . . . ARCHIVOn TRANSACC1 -PROG1 TRANSACC2 PROG2 PPT PROG1 PROG2 ...
Fig. 5 Tabla FCT Para archivos Tabla PCT Asociacin transaccinProgramas Tabla PPT Para nombres de programa
MANUAL DE CICS
Observe que: Las palabras reservadas EXEC CICS deben estar en un mismo rengln El resto de la declaracin puede estar en diferentes renglones. Los Comandos CICS pueden insertarse dentro del programa COBOL con COPY. El CICS controla cada uno de los programas mientras se ejecuta una aplicacin, por esta causa, existe un grupo de variables dentro de un bloque llamado Bloque EIB (Execute Interface Block), que representan la Interfase de ejecucin entre CICS y el programa de aplicacin. Son de particular importancia las variables EIBRESP y, EIBRESP2 (PIC S9(8) COMP), que contienen un cdigo de respuesta a la ejecucin del comando CICS. En caso de que el comando se ejecute correctamente, el campo EIBRESP contiene 0 (cero), en caso contrario contiene un numero de cdigo que representa el estado de la ejecucin del comando.
Por ejemplo: Al terminar un comando CICS, si se ejecuto correctamente, continuar, en otro caso llamar al manejo de errores.
IF EIBRESP = 0 THEN CONTINUE ELSE MOVE ERROR EN COMANDO CICS TO MENSAJE PERFORM 900-ERROR END-IF
MANUAL DE CICS
programa entra en una conversacin con el usuario, permitiendo el acceso a los recursos del sistema, mientras se ejecuta el proceso, y otro llamado Pseudoconversacional, en el cual, un conjunto de transacciones noconversacionales dan al usuario la apariencia de una sola transaccin conversacional, en este caso, los recursos del sistema se usan brevemente, y despus se liberan mientras el usuario observa sus resultados en la pantalla y decide la siguiente operacin que desea ejecutar. Una aplicacin escrita para CICS no es muy diferente de una aplicacin escrita para BATCH, por ejemplo los pasos tpicos para una aplicacin BATCH Tal como se vieron en los apuntes de COBOL son: 1. Inicializar la corrida completa, poner contadores en cero, abrir los archivos, Leer primera entrada 2. Validar los datos de entrada. 3. Procesar los datos. 4. Imprimir los resultados. Se repite hasta el final de los datos 5. Inicializar para la siguiente entrada. 6. Leer la entrada. 7. Regresar al paso 2, y repetir hasta que se acaben los datos. 8. Terminar, escribir totales, y cerrar archivos. Una aplicacin CICS, por su parte: 1. 2. 3. 4. Recibe pantalla con datos enviados por el usuario Procesa datos recibidos Enva pantalla con datos ya procesados para que el usuario pueda verlos Termina (RETURN) TERMINACION DEL PROGRAMA El CICS se encarga de repetir la transaccin cuando ocurra otra comunicacin de la terminal. O Bien, El CICS transfiere el control a otro programa O bien, El CICS da por terminada la transaccin
Observe que: En una transaccin Pseudoconversacional, el programa ocupa brevemente los recursos del sistema, despus termina El CICS se encarga de posteriormente de continuar o terminar el proceso, segn las opciones de RETURN
ASKTIME
ASKTIME
10
MANUAL DE CICS
Ejemplo 1: Actualizar las variables EIBDATE y EIBTIME (Fecha y Hora); Adicionalmente poner la fecha y hora en el campo de COBOL WF-ABSTIME ( PIC S9(15) COMP-3. ) EXEC CICS ASKTIME ABSTIME (WF-ABSTIME) END-EXEC Observe que: WF-ABSTIME es un campo numrico y que la fecha y la hora estn en forma de un numero entero. Conviene convertir la fecha y la hora a un formato ms legible, Para formatear la fecha numrica, en formato de texto ms legible se usa el comando FORMATTIME.
FORMATTIME
FORMATTIME ABSTIME (rea de datos con la fecha en forma numrica) DATESEP (Separador de fecha) TIMESEP (Separador de hora) Formato de la fecha (rea para fecha) TIME (rea para la hora)
Ejemplo convertir la fecha/hora de WF-ABSTIME (PIC S9(15) COMP-3) a formato de texto, poner en WX-DATE (PIC X(8) ) la fecha separada por / y, en WX-HORA (PIC X(8) ) la hora separada por : EXEC CICS FORMATTIME ABSTIME (WF-ABSTIME) DATESEP ('/') TIMESEP (':') DDMMYY (WX-DATE) <- el formato de fecha TIME (WX-HORAS)
END-EXEC
READ
READ
VSAM
11
MANUAL DE CICS
FILE (Nombre de archivo) INTO (Nombre de rea) [LENGTH (Longitud del rea de datos)] RIDFLD (rea de la clave) [KEYLENGTH (Longitud del rea de clave)] [UPDATE]
READ Lee un registro de un archivo declarado en la FCT Antes de usar READ, se debe identificar el registro que se va a leer por medio de su CLAVE (KEY), usando el rea de clave RIDFLD (Record Identification FieLD). Si se utiliza la opcin UPDATE, se localiza un registro para posteriormente borrarlo (Ver DELETE) o para modificarlo (Ver REWRITE). En caso de no localizar el registro solicitado, el EIBRESP contiene el valor 13 (NOTFND)
Ejemplo 1: Leer el registro cuya clave es D11 del archivo ARCHIVO1 y, poner los datos ledos en RG-ARCHIVO1 MOVE D11 EXEC CICS READ FILE INTO LENGTH RIDFLD KEYLENGTH END-EXEC TO RD-CLAVE
Ejemplo 2 Leer para posteriormente modificar el registro clave A00 del archivo ARCHIVO1. MOVE A00 EXEC CICS READ FILE INTO LENGTH RIDFLD KEYLENGTH UPDATE END-EXEC TO RD-CLAVE
(ARCHIVO1) (RG-ARCHIVO1) (WX-LON-DATOS) (RD-CLAVE) (WX-LON-CLAVE) <- UPDATE se usa para localizar el registro
WRITE
WRITE
12
VSAM
MANUAL DE CICS
FILE (Nombre de archivo) FROM (Nombre de rea) [LENGTH (Longitud del rea de datos)] RIDFLD (rea de la clave) [KEYLENGTH (Longitud del rea de clave)]
WRITE Aade un nuevo registro a un archivo declarado en la FCT En caso de que la clave de acceso en RIDFLD ya exista en el archivo (CLAVE DUPLICADA); el EIBRESP contiene el valor 14 (DUPREC)
Ejemplo 1: Grabar un nuevo registro con los datos contenidos en el rea RGARCHIVO1, cuya clave es 000324 en el archivo ARCHIVO1 y, en caso de clave duplicada, poner un mensaje en WL-MENSAJE. MOVE WS-DATOS MOVE 000324 EXEC CICS WRITE FILE FROM LENGTH RIDFLD KEYLENGTH END-EXEC TO TO RG-ARCHIVO1 RD-CLAVE
IF EIBRESP = 0 THEN CONTINUE ELSE IF EIBRESP = 14 THEN MOVE CLAVE DUPLICADA TO WL-MENSAJE ELSE PERFORM 990-ERROR END-IF END-IF
13
MANUAL DE CICS
REWRITE (VSAM)
REWRITE FILE FROM [LENGTH
Modifica un registro previamente ledo de un archivo VSAM. El registro a modificar, se debe leer antes con READ UPDATE El nombre de archivo debe ser un archivo VSAM declarado en la FCT El registro especifico que se va a modificar en el archivo, se indicara por medio de su clave (Record IDentification FieLD), en la opcin RIDFLD de READ. La longitud de la clave se puede especificar en la opcin KEYLENGTH
Ejemplo : Modificar en el archivo VSAM EMPLEADO, el registro identificado por la clave RD-EMPNO. Previamente leda con READ opcin UPDATE MOVE WS-CLAVE EXEC CICS READ FILE INTO RIDFLD KEYLENGTH UPDATE END-EXEC MOVE WS-DATOS EXEC CICS REWRITE FILE FROM END-EXEC TO RD-EMPNO
TO
RG-EMPLEADO
(EMPLEADO) (RG-EMPLEADO)
Observe que: En caso de no localizar el registro solicitado, el EIBRESP contiene el valor 13 (NOTFND)
14
MANUAL DE CICS
DELETE (VSAM)
DELETE FILE (Nombre de archivo) RIDFLD (rea de datos) [KEYLENGTH (Dato numrico)] [GENERIC [ NUMREC (rea de datos)] ]
DELETE Borra uno o varios registros de un archivo VSAM El nombre de archivo debe ser un archivo VSAM declarado en la FCT El registro especifico que se va a borrar del archivo, se indicara por medio de su clave (Record IDentification FieLD), en la opcin RIDFLD. La longitud de la clave se puede especificar en la opcin KEYLENGTH Se puede eliminar un grupo de registros con un solo comando DELETE, identificando el grupo con la opcin GENERIC. En caso de usar GENERIC, el CICS devuelve el numero de registros borrados en la variable indicada en NUMREC. Existe una forma diferente de este comando; para borrar un registro que previamente se ha ledo para modificarlo con el comando READ UPDATE. Pero en este caso, el registro no se reescribe, sino que se borra, en este caso no se especifica la opcin RIDFLD.
Ejemplo 1: Borrar del archivo VSAM EMPLEADO, el registro identificado por la clave RD-EMPNO EXEC CICS DELETE FILE (EMPLEADO) RIDFLD (RD-EMPNO) KEYLENGTH (WX-LON-CLAVE) END-EXEC Ejemplo 2: Borrar del archivo VSAM EMPLEADO, el registro identificado por la clave RD-EMPNO. Previamente leda con READ opcin UPDATE EXEC CICS FILE RIDFLD READ (EMPLEADO) (RD-EMPNO)
15
MANUAL DE CICS
KEYLENGTH (WX-LON-CLAVE) UPDATE END-EXEC EXEC CICS DELETE FILE (EMPLEADO) END-EXEC Observe que: En caso de no localizar el registro solicitado, el EIBRESP contiene el valor 13 (NOTFND)
Area Temporal
TEMPORARY STORAGE
La comunicacin entre las transacciones de un sistema puede hacerse por medio de diferentes reas de almacenamiento de datos que no dependen del programa de aplicacin, sino que dependen directamente del CICS. La TS (Temporary Storage) es un rea que puede utilizarse para comunicacin entre las diferentes transacciones de un sistema. En realidad la TS es una COLA (QUEUE), que puede considerarse como un pequeo archivo secuencial fcil de crear y de consultar que no requiere declaracin en la FCT El comando WRITEQ TS permite guardar informacin en la TS, inclusive, si no existe la cola, WRITE Q TS la crea antes de escribir en ella. El comando READQ TS lee la informacin almacenada en la cola (QUEU). El comando DELETEQ TS Elimina la cola.
Transacci n BE01
Transaccin BE00
TS
Otra instancia de la transaccin BE00
16
MANUAL DE CICS
Ejemplo 1. Aadir un NUEVO registro en la cola A000, tomando los datos del rea WTS-REG, si no existe la cola, se crea, y se graba el primer registro, si la cola ya existe, se graba el siguiente registro y la variable indicada en ITEM, devuelve el nm. de tem grabado. EXEC CICS WRITEQ QUEUE FROM ITEM END-EXEC TS (A000) (WTS-REG) (NUM-ITEM) <- la variable devuelve el nm. Del item grabado
Ejemplo 2. Modificar registro (ITEM) nm. 4 de la cola A000, con los datos en del rea
17
MANUAL DE CICS
EXEC CICS WRITEQ TS QUEUE (A000) FROM (WTS-REG) ITEM (NUM-ITEM) <- La variable numrica contiene 4 REWRITE <- La opcin REWRITE indica que se modificara un tem END-EXEC previamente grabado Observe que: Si el numero de tem no se localiza en la cola, se genera el cdigo 26 (ITEMERR) en la variable EIBRESP.
READQ TS Lee la cola de almacn temporal y `pone el resultado de la lectura en el rea de datos indicada. El rea numrica indica el numero de registro (tem) que se va a leer de la cola. La opcin NEXT indica que se leer el siguiente tem de la cola (el numero actual de tem, estar asignado por la ultima instruccin de acceso a la cola P.ej READQ o WRITEQ)
Ejemplo 1. Leer el registro (ITEM) numero 5 de la cola A000 y, poner los datos en el rea WTS-REG. MOVE 5 TO WC-NUMITEM EXEC CICS READQ TS QUEUE INTO ITEM END-EXEC
MANUAL DE CICS
Observe que: Si no se localiza el registro de la TS solicitado, se genera la condicin 26 (ITEMERR) en la variable Ejemplo 2. Leer el siguiente registro (ITEM) de la cola A000 y, poner los datos en el rea WTS-REG. EXEC CICS READQ TS QUEUE INTO NEXT END-EXEC
(A000) (WTS-REG)
Observe que: Al tratar de leer el registro siguiente al ultimo de la cola, se genera el cdigo 26 (ITEMERR) en la variable EIBRESP.
(Nombre de Cola)
DELETEQ Borra todos los datos asociados con una cola de almacn temporal, y libera el rea ocupada por la cola. Es conveniente borrar los datos de TS (TEMPORARY STORAGE) en cuanto ya no sean de utilidad para ahorrar espacio. El nombre de la cola debe ser el mismo que se utilizo en WRITEQ TS para crear la QUEUE.
Ejemplo Borrar la cola identificada con la variable WX-NOMBRE. EXEC CICS DELETEQ QUEUE END-EXEC IF EIBRESP = 0 THEN CONTINUE ELSE MOVE ERROR AL BORRAR LA COLA TO WL-MENSAJE END-IF
19
TS (WX-NOMBRE)
MANUAL DE CICS
Observe que: En caso de un error, la variable EIBRESP contiene el cdigo de error. El error ms probable es equivocarse con el nombre de la cola. El cdigo 44 (QIDERR) corresponde a un error en el nombre de la cola.
MANUAL DE CICS
STARTBR FILE (Nombre del archivo) RIDFLD (Nombre del rea de clave) KEYLENGTH (Longitud del rea de clave) [REQID (Numero de la revisin) ] READPREV FILE (Nombre del archivo) INTO (Area de datos) LENGTH (Longitud de datos) RIDFLD (Area de clave) KEYLENGTH (Long. de clave) [REQID (Numero de la revisin) READNEXT FILE (Nombre del archivo) INTO (Area de datos) LENGTH (Longitud de datos) RIDFLD (Area de clave) KEYLENGTH (Long. de clave) [REQID (Numero de la revisin)
ENDBR
ENDBR FILE [REQID
ENDBR Da por terminada una revisin (BROWSE) en un archivo declarado en la FCT. Tambin se usa para terminar una revisin (BROWSE) de una tabla de CICS. El valor REQID es un identificador (S9(04) COMP-3) numrico que se usa para identificar diferentes solicitudes de BROWSE. Si se omite REQID, el valor por default es Cero.
Ejemplo: terminar la revisin del archivo EMPLEADO. EXEC CICS STARTBR FILE RIDFLD KEYLENGTH END-EXEC EXEC CICS READNEXT FILE
(EMPLEADO)
21
MANUAL DE CICS
(EMPLEADO)
Observe que: En caso de error, la variable EIBRESP contiene el cdigo de error El error ms probable en ENDBR es que no este iniciada una revisin con el comando STARTBR El cdigo de error 16 (INVREQ) corresponde al caso de una revisin no iniciada.
RECEIVE MAP
RECEIVE MAP MAPSET
Una manera muy conveniente de manejar datos en la pantalla, es por medio de un formato de pantalla completa. Un MAPA es un formato de datos de pantalla completa. RECEIVE MAP recibe una pantalla completa desde la terminal, este formato incluye los datos enviados por el usuario.
Ejemplo recibir el mapa IDENTIF que esta dentro del mapset IDENT01, que contiene las variables USER y PASWORD. EXEC CICS RECEIVE MAP (IDENTIF) MAPSET (IDENT01) END-EXEC
22
MANUAL DE CICS
En caso de un error en la recepcin del mapa, se genera el cdigo 36 (MAPFAIL) en EIBRESP IF EIBRESP = 36 THEN MOVE ERROR EN LA RECEPCION DEL MAPA TO WL-MENSAJE END-IF Las variables contenidas en el mapa se pueden usar despus de recibido este con los valores enviados por el usuario. USERI TO WX-BUSCA-U <- USERI contiene los datos de USER
MOVE
PERFORM 400-BUSCA-USUARIO IF USUARIO-EXISTE THEN CONTINUE ELSE MOVE ERROR EN NOMBRE DE USUARIO TO WL-MENSAJE END-IF Observe que: La variable USERI contiene el dato tecleado por el usuario dentro del campo USER
SEND MAP
SEND MAP MAPSET [FROM [LENGTH [CURSOR [ERASE
(Nombre de MAPA) (Nombre del MAPSET) (Nombre de rea) ] (Dato numrico) ] (Posicin del cursor)] ]
Una manera muy conveniente de manejar datos en la pantalla, es por medio de un formato de pantalla completa. Un MAPA es un formato de datos de pantalla completa. SEND MAP enva una pantalla completa hacia la terminal, este formato incluye los datos asignados a los campos del mapa por el programa. Si se usa la opcin FROM, se especifica el rea que contiene los datos que se procesaran.
23
MANUAL DE CICS
Si no se especifica FROM, el nombre del rea que se procesa es el nombre del mapa con el SUFIJO O. CURSOR se usa para especificar la posicin del Cursor al enviar el mapa (de 1 a 1920), si no se pone, se usa el valor mas reciente. ERASE indica que se debe borrar el BUFFER de pantalla antes de que se exhiban los datos.
Ejemplo enviar el mapa IDENTIF que esta dentro del mapset IDENT01, que contiene las variables USER y PASWORD. MOVE WX-USUARIO EXEC CICS MAP MAPSET CURSOR ERASE END-EXEC TO USSERO <- USERO recibe los datos que se enviaran
En caso de un error en el envo del mapa, se genera el cdigo 36 (MAPFAIL) en EIBRESP IF EIBRESP = 36 THEN MOVE ERROR EN EL ENVIO DEL MAPA TO WL-MENSAJE END-IF Los Campos variables contenidos en el mapa se exhiben en la pantalla del usuario con los nuevos valores asignados. La variable USERO contiene los nuevos datos del campo USER.
RETURN
RETURN TRANSID (Nombre de la transaccin ) COMMAREA (Nombre del rea de comunicacin) LENGTH (Longitud del rea de comunicacin)
Un programa que corre en el ambiente CICS termina cuando se devuelve el control al CICS o cuando se transfiere su control a otro programa. RETURN devuelve el control al CICS o en ciertos casos devuelve el control a otro programa en un nivel superior. Si se usa la opcin TRANSID, el CICS queda en espera de una comunicacin de la terminal que ejecuto la aplicacin, al llegar la comunicacin, se ejecuta la transaccin indicada en TRANSID.
24
MANUAL DE CICS
El rea de comunicaciones indicada en COMMAREA debe estar declarada en la LINKAGE SECTION su nombre debe ser DFHCOMMAREA y se utiliza como medio de comunicacin entre las Transacciones. Si no se usa TRANSID, el CICS da por terminada toda referencia a la ejecucin del programa.
Ejemplo1. Terminar el programa BE00A con RETURN. Cuando el CICS reciba una comunicacin de la terminal deber ejecutar la transaccin BE00, usando como rea de comunicaciones WX-COMMAREA. MOVE BE00 MOVE DFHCOMMAREA MOVE 500 EXEC CICS RETURN TRANSID COMMAREA LENGTH END-EXEC TO TO TO WX-TRANSID WX-COMMAREA WX-LON-COMMAREA
Ejemplo 2. Terminar la ejecucin del programa sin instrucciones para el CICS. EXEC CICS RETURN END-EXEC
XCTL
XCTL PROGRAM COMMAREA LENGTH
(Nombre del Programa ) (Nombre del rea de comunicacin) (Longitud del rea de comunicacin)
Un programa que corre en el ambiente CICS termina cuando se devuelve el control al CICS o cuando se transfiere su control a otro programa. XCTL termina el programa actual, y TRANSFIERE el control a otro programa en el mismo nivel lgico
25
MANUAL DE CICS
El nuevo programa corre hasta su terminacin que puede ser RETURN o XCTL. El rea de comunicaciones debe estar declarada en la LINKAGE SECTION del programa receptor, su nombre debe ser DFHCOMMAREA y se utiliza como medio de comunicacin entre los programas
Ejemplo. Terminar el programa BE00A con XCTL. Transfiriendo el control al programa BE01A, usando como rea de comunicaciones WX-COMMAREA. MOVE BE01A MOVE DFHCOMMAREA MOVE 500 TO TO TO WX-PROGRAM WX-COMMAREA WX-LON-COMMAREA
EXEC CICS XCTL PROGRAM (WX-PROGRAM) COMMAREA (WX-COMMAREA) LENGTH (WX-LON-COMMAREA) END-EXEC El error ms comn en la transferencia es: EIBRESP = 27 (PGMIDERR)
Ocurre en alguna de las siguientes situaciones: El programa no esta declarado en la PPT (EIBRESP2=1). El programa esta deshabilitado (EIBRESP2=2). El programa no se puede cargar (EIBRESP2=3). La definicin del programa es para un programa remoto (EIBRESP2=9).
TERMINALES La terminal tpica en un sistema de procesos de datos es la IBM 3270 que es una familia de impresoras y terminales de vdeo, si bien difieren en tamao y velocidad, bsicamente utilizan el mismo formato de datos. Una terminal es un teclado y una pantalla de vdeo que se utiliza tanto para entrada como para salida de datos, y en ambos casos la pantalla (o ms propiamente la memoria que la representa), es el medio crucial de intercambio entre la terminal y el procesador.
26
MANUAL DE CICS
Cuando el usuario pone en la pantalla los datos que desea procesar, usa una tecla de atencin para enviar estos datos al procesador. Cuando la aplicacin obtiene la informacin que desea presentar al usuario, la enva hacia la terminal para que se exhiba en la pantalla. El propsito del teclado es modificar la pantalla, preparando los datos de entrada para enviarlos al procesador cuando estn listos. Cuando la aplicacin escribe en una terminal, el procesador enva una serie de datos (STREAM) en un formato especial para terminales 3270, el stream contiene no solamente los textos que van a exhibirse en la pantalla, sino informacin de control que define la manera como va a exhibirse el texto en la pantalla. Las impresoras que corresponden a una terminal, utilizan el mismo sistema de codificacin, por lo tanto el mismo STREAM que se enva a una terminal de vdeo, puede utilizarse para una impresora. PANTALLA DE LA 3270 La pantalla de la 3270 puede exhibir hasta 1920 caracteres distribuidos en 24 renglones de 80 columnas cada uno. Cada una de estas 1920 posiciones tiene una direccin individual, esto quiere decir que un programa de aplicacin puede enviar datos directamente a cualquiera de estas posiciones en la pantalla, pero no es necesario dirigir cada carcter a su posicin individualmente, mas bien, dentro de un programa, se divide la pantalla en campos (FIELDS). Un campo es un conjunto de posiciones consecutivas que tienen las mismas caractersticas (mismo color, misma intensidad, protegidos, no protegidos, etc.). Generalmente, se usan los campos de la pantalla de la misma manera que se usan los campos de salida en un reporte, para contener un tem de datos.
MANUAL DE CICS
12
CESN SIGNON Enter Userid and Password USERID: _ PASSWORD: NEW PASSWORD:
Hay varios campos en esta pantalla, sin embargo, solo cuatro de ellos estn exhibiendo datos; el primero esta en el rengln 1, columna 1 (Posicin 1,1) y contiene los datos: CESN -SIGNON- Enter USERID and PASSWORD El campo esta especificado: PROTECTED Lo que quiere decir que el operador no puede escribir sobre esta rea de la pantalla en su terminal. BRIGHT Que significa exhibirse brillante para enfatizar su informacin. El segundo esta en la posicin (3,5) y contiene el dato USERID: tambin PROTECTED y BRIGHT. El subrayado despus de USERID: se llama cursor y marca la posicin donde se aceptara el siguiente carcter que se enve del teclado, estos dos campos se han usado como salida, nicamente para informar algo al usuario, el segundo campo le indica al usuario lo que debe teclear en el tercer campo que empieza en la posicin (3,12) Este tercer campo, es diferente porque se utiliza para que el operador de la terminal teclee informacin en l, y esta informacin sea la entrada de datos la prxima vez que la terminal enve hacia el procesador, por lo tanto NO ESTA PROTEGIDO, y tiene intensidad normal. Aunque no se puede ver, tiene 20 posiciones de longitud porque esta es la longitud mxima permitida de la identificacin de un usuario de CICS.
28
MANUAL DE CICS
TERMINALES Columnas 12 5 12
Renglones 1 -> CESN SIGNON Enter Userid and Password 2 -> 3 -> USERID:X___________________X_ 5 -> 7 -> PASSWORD: NEW PASSWORD: STOPPER Tercer campo
Al final del tercer campo hay otro campo conocido como Tope (Stopper Field) tampoco se puede ver, y su nica funcin es impedir que el usuario teclee mas de 20 caracteres en el campo de identificacin, esto se debe a que el principio de un campo esta sealado en el buffer de datos de la pantalla pero el final no esta sealado, un campo termina en realidad al principio del siguiente campo, por eso el STOPPER se usa para limitar un campo de entrada. Lo importante del stopper es que esta Protegido y cuando un usuario teclea una identificacin de mas de 20 caracteres el cursor alcanza la posicin del stopper y como esta protegido, se bloquea el teclado y no puede teclear mas caracteres. Despus hay otros tres campos en las posiciones (5,5), (5,15), y (5,24) son como los tres campos anteriores, el primero solicita la clave de acceso (PASSWORD) y esta protegido, el segundo es un campo de entrada donde se debe teclear la clave de acceso, esta desprotegido para teclear en l, y tiene un atributo un tanto extrao, DARK o sea invisible esto quiere decir que los datos aunque se tecleen no aparecen en la pantalla, esto se debe a que la Password se supone que es secreta y ningn curioso que este viendo la pantalla debe enterarse de la clave, el tercer campo es por supuesto un Stopper que limita el campo de Password a 8 caracteres. Cuando se analiza mas de cerca la configuracin de los campos en una pantalla, se observa que los campos parecen ser una posicin ms largos de lo que deberan ser. Si el campo de nombre de 20 posiciones empieza en la posicin (3,11) porque el stopper empieza en la posicin (3,32) y no en la (3,31) Bien esto se debe a que los atributos de exhibicin del campo (Protected, Bright etc.) ocupan una posicin en la pantalla por cada campo, o sea, si empezamos un campo de 20 posiciones en la posicin (3,11), el BYTE de atributos (As se llama) del campo, se localiza en (3,11) y los datos van desde (3,12) hasta (3,31). El Byte de atributos se ve en la pantalla como un espacio y esta autoprotegido independientemente de que el campo de datos este protegido o no, as el usuario no puede cambiar la identidad de un campo desde el teclado.
29
MANUAL DE CICS
TERMINALES Columnas 12 5 12 Renglones 1 -> CESN SIGNON Enter Userid and Password 2 -> 3 -> USERID:X___________________X_ 5 -> 7 -> PASSWORD: NEW PASSWORD: STOPPER Tercer campo
El formato de exhibicin de un campo puede tener diferentes posibilidades: High intensity Normal intensity Dark Inverse Color Brillante Normal Invisible (Letras del mismo color que el fondo) Fondo claro, letras obscuras siete colores bsicos
El byte de atributos tambin controla lo que puede hacer el teclado con el campo de datos las opciones pueden ser: UNPROTected NUMeric PROTected AutoSKIP El usuario puede teclear informacin en el campo de datos. El usuario puede nicamente teclear dgitos, punto decimal y signo de menos en el campo. El usuario no puede teclear nada dentro del campo. El usuario no puede teclear nada dentro del campo, pero adicionalmente, si el campo anterior esta lleno, el cursor automticamente se salta este campo hasta el siguiente campo disponible.
Autoskip se usa para los campos de stopper as, si el campo anterior se llena de informacin, el cursor pasa sobre el stopper y va al siguiente campo disponible, de esta manera el usuario puede teclear continuamente llenando los campos y pasando automticamente al siguiente sin necesidad de usar las teclas de avance de cursor.
30
MANUAL DE CICS
Cuando los datos de los campos se envan a la terminal, o se reciben de la terminal, generalmente se arreglan en un formato de pantalla completa llamado MAPA, aunque tambin pueden enviarse sin formatear, pero el envo de datos Unformatted se usa solo para mensajes sencillos.
BMS
Apoyo bsico para hacer mapas Basic Mapping Support (BMS)
No es necesario formatear los datos que se envan a las terminales dentro de la aplicacin, generalmente se utiliza una prestacin del CICS llamada Basic Mapping Support o simplemente BMS. Esta prestacin del CICS permite crear un formato de datos llamado MAPA que presenta una estructura definida por el programador, para el control de los datos de entrada/salida de la pantalla. El BMS simplifica el trabajo de programacin pues mantiene independientes las especificaciones de formato del hardware utilizado. La primera pantalla que deseamos que vea el usuario es la pantalla de MENU principal, segn la describimos en la pagina 36 aqu la volvemos a dibujar, pero para facilitar las explicaciones, se le aadieron nmeros de rengln y de columna, se sealaron con subrayados los campos que no ven a menos que estn ocupados con datos. Se marco la posicin del byte de atributos de los stoppers con un signo, y para los dems campos con el signo + , estos marcadores no aparecen en la pantalla, y se han colocado nicamente para facilitar la explicacin. Esta pantalla se define por medio de MACROS de BMS que son una forma de lenguaje ensamblador. Una vez ensambladas estas macros, producen lo que llama el MAPA FISICO, que contiene las instrucciones necesarias para uso del CICS. Una segunda fase de ensamblado nos produce el MAPA SIMBOLICO (Symbolic Description Map) El mapa simblico es una serie de declaraciones en el lenguaje objeto que se utilizara para programar la aplicacin, en este caso COBOL, por esto, el mapa simblico se integrara al programa de aplicacin COBOL por medio de una declaracin COPY. Este mapa simblico, contiene la informacin necesaria para: Crear la pantalla con todos los ttulos y leyendas en las posiciones adecuadas. Los atributos necesarios para cada uno de los campos.
31
MANUAL DE CICS
Integrar las variables de datos del programa de aplicacin con los campos de la pantalla, para pasar datos del programa a la pantalla y viceversa. Ahora, veamos como se manejan las macros de BMS, que a pesar de parecer complicadas, en realidad son muy sencillas.
(1)
MACRO
DFHMDF de BMS
Nombre de Campo DFHMDF POS=(Renglon,columna),LENGTH=nmero, INITIAL=texto,OCCURSS=(numero), ATTRB=(atributo1, atributo2,...), COLOR=color, HILIGHT=REVERSE La Macro DFHMDF se usa para generar la definicin de cada uno de los campos del mapa BMS. Para cada campo de la pantalla se necesita una Macro DFHMDF como la siguiente:
Si los datos no caben en un rengln, se debe usar un carcter de continuacin en la columna 72, cualquier carcter es valido, excepto espacio y l ultimo del rengln. Los elementos de la macro tienen los siguientes significados. Nombre de Campo Este es el nombre del campo tal como se usara en el programa (hasta cierto punto). Cada campo que se va a leer o a escribir en la pantalla, debe llevar nombre, pero los campos de ttulos o letreros que son constantes, no necesitan llevar nombre, tampoco los stopper necesitan nombre, pues no los vamos a leer o escribir desde el programa. Los nombres de campo: Empiezan con letra, contienen solo letras o nmeros y deben ser de 1 a 7 caracteres. DFHMDF Este es el identificador de Macro, indica que se esta definiendo un campo. POS= (Renglon,Columna)
32
MANUAL DE CICS
Esta es la posicin en la pantalla donde va a aparecer el campo, solo hay que recordar que un campo empieza con su byte de atributo, por lo tanto, si se escribe POS=(1,1), el byte de atributo del campo estar en el rengln 1 y columna 1, y los datos empiezan en la columna 2. LENGTH=numero Esta es la longitud del campo SIN contar el byte de atributo. INITAL=texto Este es el contenido inicial de un campo de texto, as se especifican los ttulos y los letreros de la pantalla que son independientes del programa. Ejemplo: INITIAL PARA el primer campo de la pantalla de men seria:
(2)
MACRO
DFHMDF de BMS
Nombre de Campo DFHMDF POS=(Renglon,columna),LENGTH=nmero, INITIAL=texto,OCCURSS=(numero), ATTRB=(atributo1, atributo2,...), COLOR=color, HILIGHT=REVERSE Los atributos de un campo indican no solamente sus caractersticas de exhibicin, sino tambin la manera de recibir datos desde el teclado.
ATTRB=(atributo1,atributo2...) Estos son los atributos del campo. Hay varias caractersticas diferentes que se pueden especificar: La primera caracterstica es la INTENSIDAD, las opciones son: NORM El campo se exhibe con intensidad Normal. BRT El campo se exhibe con intensidad Brillante. DRK El campo se exhibe obscuro (no se ve) La segunda caracterstica controla lo que el usuario puede hacer desde el teclado, las opciones son: ASKIP No se puede teclear en el campo, y si el campo anterior esta lleno, el cursor brinca sobre este campo, pasando al siguiente disponible.
33
MANUAL DE CICS
PROT
No se puede teclear en el campo, pero el cursor no brinca sobre este campo si el anterior esta lleno.
UNPROT Si se pueden teclear datos dentro del campo. NUM Si se pueden teclear datos dentro del campo, pero solo se aceptan nmeros, el signo de menos, y el punto decimal. La tercera caracterstica controla la etiqueta de Datos modificados. Si un dato cambia en la pantalla, queda listo para enviarse al programa, si no cambia; no se enva. La opcin es: FSET Activa la etiqueta de Datos Modificados. Esto provoca que el campo se enve al programa aunque no se haya modificado. Si no se especifica FSET, entonces el campo se enva al programa solamente cuando el usuario lo modifique. La Cuarta caracterstica, que se especifica como parte de los atributos, indica que este es el campo donde se posicionara el cursor. La opcin es: IC Pone el cursor en la primera posicin del campo, un solo campo es el que puede tener el cursor, por lo tanto, si se pone IC en varios campos, el cursor se posicionara en el ultimo. Si no se especifica el parmetro ATTRIB, entonces el campo tendr caractersticas ASKIP, NORM, por default, no tendr FSET ni IC.
(3)
Nombre de Campo DFHMDF POS=(Renglon,columna),LENGTH=nmero, INITIAL=texto,OCCURSS=(numero), ATTRB=(atributo1, atributo2,...), COLOR=color, HILIGHT=REVERSE Algunas terminales tienen pantalla de color, por lo tanto se pueden exhibir los renglones de datos de algn color en especial. COLOR=color Indica cual WHITE BLUE RED PINK GREEN TURQUOISE YELLOW ser el color de los caracteres del campo, las opciones son: Color blanco Color azul Color rojo Color rosa Color verde Color turquesa Color amarillo
34
MANUAL DE CICS
Este parmetro solo funciona en caso de que la terminal tenga pantalla de color, en otro caso; se ignora. OCCURSS=nmero Por medio de esta opcin, se pueden declarar varios campos con una sola definicin, siempre y cuando, todos los campos tengan las mismas caractersticas, y se encuentren adyacentes. Entonces, si se especifica un campo de longitud 10 en la posicin (4,1), ASKIP, NORM y OCCURSS=3, se tendrn 3 campos de longitud 10, ASKIP y NORM en las posiciones (4,1), (4,12) y (4,23). La opcin HILIGTH=REVERSE color. se puede usar con terminales que no tengan
HILIGTH=REVERSE Usando esta opcin, se puede destacar un campo, invirtiendo el display de letras claras sobre fondo obscuro convirtindolo a letras obscuras sobre fondo claro. Una vez creado el Mapset: 1. Se declara como parte de los recursos del sistema. 2. Se ensambla para generar el mapa fsico y el mapa simblico 3. Se incluye el mapa simblico dentro del programa de aplicacin con COPY
(4)
Nombre de Campo DFHMDF POS=(Renglon,columna),LENGTH=nmero, INITIAL=texto,OCCURSS=(nmero), ATTRB=(atributo1, atributo2,...), COLOR=color, HILIGHT=REVERSE Ejemplo: crear las macros para definicin del mapa de la pantalla de men del ejemplo. (Pg. 37)
PRINT NOGEN *------------------------* DESCRIPCION DEL MAPSET *------------------------BE00MS DFHMSD TYPE=&SYSPARM,MODE=INOUT,LANG=COBOL,TERM=3270, STORAGE=AUTO,CTRL=(FREEKB,FRSET),TIOAPFX=YES,EXTATT=YES *---------------------35
MANUAL DE CICS * DESCRIPCION DEL MAPA *---------------------BE00M01 DFHMDI LINE=01,COLUMN=01,SIZE=(24,80) *-----------------------------------* DESCRIPCION DE LOS CAMPOS DEL MAPA *-----------------------------------DFHMDF POS=(01,30),LENGTH=17,ATTRB=ASKIP, COLOR=WHITE, HILIGHT=REVERSE, INITIAL='MENU DE OPCIONES' DFHMDF POS=(01,48),LENGTH=01,ATTRB=ASKIP DFHMDF POS=(02,01),LENGTH=08,ATTRB=ASKIP, COLOR=YELLOW, INITIAL='FECHA : ' FECHA DFHMDF POS=(02,08),LENGTH=10,ATTRB=ASKIP, COLOR=WHITE DFHMDF POS=(02,19),LENGTH=01,ATTRB=ASKIP DFHMDF POS=(02,61),LENGTH=07,ATTRB=ASKIP, COLOR=YELLOW, INITIAL='HORA : ' HORA DFHMDF POS=(02,70),LENGTH=08,ATTRB=ASKIP,COLOR=WHITE DFHMDF POS=(05,25),LENGTH=12,ATTRB=ASKIP,COLOR=TURQUOISE INITIAL='<1> CONSULTA' DFHMDF POS=(07,25),LENGTH=08,ATTRB=ASKIP,COLOR=TURQUOISE, INITIAL='<2> BAJA' DFHMDF POS=(09,25),LENGTH=08,ATTRB=ASKIP,COLOR=TURQUOISE, INITIAL='<3> ALTA' DFHMDF POS=(11,25),LENGTH=10,ATTRB=ASKIP,COLOR=TURQUOISE, INITIAL='4. CAMBIO' DFHMDF POS=(10,30),LENGTH=06,ATTRB=ASKIP,COLOR=GREEN, INITIAL='OPCION ' OPCION DFHMDF POS=(10,37),LENGTH=01,ATTRB=(IC,NUM,FSET) DFHMDF POS=(10,39),LENGTH=01,ATTRB=ASKIP DFHMDF POS=(12,05),LENGTH=11,ATTRB=ASKIP,COLOR=GREEN, INITIAL='<Esc> Terminar <Enter> Acepta Opcin ' * TERMINA DESCRIPCION DEL MAPSET DFHMSD TYPE=FINAL END
X X X X X X X X X X X X X X
En el ejemplo anterior vemos no solamente la descripcin de los campos con sus DFHMDF sino que tambin se puede observar la definicin del mapa con la macro DFHMDI La macro DFHMDI se usa para definir mapas dentro de un MAPSET. Los elementos dentro de esta macro son:
36
MANUAL DE CICS
Nombre de mapa Este es el nombre del mapa que se utilizara cuando se ejecute un comando CICS para enviar o recibir un mapa, como los nombres de campo, debe empezar con letra y no ser mayor de 7 caracteres. DFHMDI Este es el identificador de la macro, es obligatorio e indica que se va a empezar un nuevo mapa. SIZE=(Renglon,Columna) Este parmetro indica el tamao del mapa, el BMS permite que una pantalla pueda estar formada de varios mapas, y cada mapa puede ser de diferente tamao, en este caso el mapa es del tamao de la pantalla estndar (24 Renglones, 80 columnas). CTRL=(Control1,Control2,...) Este es el parmetro de control de la pantalla y el teclado que se va a enviar junto con los datos del mapa, puede ser cualquier combinacin de lo siguientes: PRINT Especifica que el mapa puede enviarse a una impresora, esto es, si se piensa que es necesario enviar los datos para impresin, se usa PRINT. FREEKB (Libera el teclado). El teclado se bloquea automticamente tan pronto como el usuario enva datos al procesador, permanece bloqueado hasta que alguna transaccin lo libera o hasta que el usuario oprime la tecla <RESET>. Generalmente se especifica FREEKB para mantener liberado el teclado. Este parmetro hace que suene la alarma audible de la terminal.(Este parmetro solo funciona en caso de que la terminal tenga alarma audible, en otro caso, se ignora).
ALARM
Un MAPSET puede contener varios mapas y al ensamblarse, se generan varios MAPAS SIMBOLICOS , Uno por cada mapa declarado, aunque en nuestro caso,
37
MANUAL DE CICS
nuestro MAPSET contiene un solo mapa. Para definir un MAPSET, se usa la macro DFHMSD: Nombre de mapset Este es el nombre del conjunto de mapas, se manejara dentro del programa para indicar de donde provienen los mapas que se utilizaran, deber estar declarado en la definicin de recursos del sistema, y el nombre del mapset deber empezar con letra y tener de 1 a 7 caracteres de longitud. DFHMSD Este es el identificador de la Macro, indica que empieza la definicin de un Mapset. TYPE=tipo TYPE gobierna el resultado del proceso de ensamble, que produce un mapa fisico o un mapa simblico segn el tipo indicado, primero se ensambla con TYPE=MAP, y se produce un mapa fisico que CICS usa en el proceso, despus se ensambla con TYPE=DSECT, y se produce un mapa simblico en lenguaje COBOL que se almacena en la biblioteca de COPY para incluirlo en el programa de aplicacin con una orden COPY. MODE=modo El modo indica si el mapa se usara nicamente para entrada MODE=IN, nicamente para salida MODE=OUT, o para ambas MODE=INOUT. LANG=COBOL Indica el lenguaje de la estructura del mapa simblico (DSECT Structure) que se copiara en el programa de aplicacin, en este caso, COBOL. STORAGE=AUTO Se usa para impedir que las definiciones del mapa simblico se encimen una sobre otra con redefiniciones del primer mapa, si se van a usar varios mapas al mismo tiempo dentro de un programa de aplicacin, se omite STORAGE=AUTO. CTRL=(Control1,Control2,...) Este parmetro tiene el mismo significado que en la macro DFHMDI, la diferencia es que si se pone en la DFHMSD afecta a todos los mapas del Mapset que no tengan CTRL en su propia DFHMDI. TIOAPFX=YES Este parmetro se usa siempre en programas, y genera los doce primeros caracteres de control del mapa simblico. DFHMSD TYPE=FINAL END Para terminar la definicin de un MAPSET, se usa DFHMSD seguida de la instruccin de ensamblador END.
38
MANUAL DE CICS
Por ejemplo: Exhibir un registro de empleado, dado su numero de empleado Aumentar nuevos registros de empleado. Modificacin de registros ya existentes (Localizados por numero de empleado). Eliminar registros de empleado (Localizados por numero de empleado). Las transacciones se ejecutaran por medio de terminales tpicas (3270) y se tomara en consideracin el hecho de que varias veces, distintas terminales intentaran tener acceso a los recursos del sistema y sus datos. DISEO DE LA INTERFACE CON EL USUARIO Para definir la comunicacin con el usuario, observemos la transaccin que el usuario desea ejecutar, y determinar que es lo que se debe presentar en la pantalla, mientras se efecta la transaccin. Antes de ejecutar alguna de las transacciones definidas, seria conveniente presentar un men para que el operador de la terminal pueda seleccionar la transaccin que desea llevar a cabo, entonces necesitamos decidir: Como presentar las opciones ante el operador Como seleccionara este alguna de las opciones Cual es el resultado de la seleccin Que hacer si el usuario comente algn error.
La presentacin de las opciones es muy sencilla, pues solo requiere exhibir en la pantalla los nombres de las transacciones y una letra o numero de acceso para cada una de ellas. El operador necesita meter muy poca informacin para seleccionar una opcin de un men, en este caso nicamente la identificacin de la transaccin que puede ser una letra o un numero. El resultado de la seleccin ser la ejecucin de la transaccin solicitada SELECCIN DEL LENGUAJE DE PROGRAMACION. Existe la posibilidad de utilizar diferentes lenguajes para programar la aplicacin, pues CICS puede manejarse desde diferentes plataformas, los lenguajes ms usuales son COBOL, PLI, C.
39
MANUAL DE CICS
En nuestro caso, utilizaremos el COBOL, debido a su capacidad de manejar archivos, tablas de DB2, y estructuras de datos.
MENU DE OPCIONES Fecha 25/05/2000 Hora 12:00 <1> <2> <3> <4> Opcin _ <Esc> Terminar <Enter> Acepta Opcin CONSULTA BAJAS ALTAS MODIFICACIONES
MANUAL DE CICS
En realidad, en el caso de la transaccin de men, pocas cosa pueden fallar de todas maneras, debemos considerar el caso de que ocurra algn error, por ejemplo, que el usuario indique una opcin no prevista, o que el operador no tenga la autoridad suficiente para ejecutar alguna transaccin.
CONSULTA DE EMPLEADOS Fecha 25/05/2000 Hora 12:00 EMPNO ______ FIRSTNAME INITIAL BIRTHDATE PHONE ________ _ _______ ____ LASTNAME _________ SEX _ HIREDATE _________ JOBCODE ____
SALARY ______ <Esc> Terminar <Enter> Hacer consulta <PF3> Ir al men <PF4> Otra consulta
En este caso, adicionalmente a la validacin de entrada, se debe considerar el caso de que la clave consultada no exista en el archivo de empleados, para indicrselo as al operador.
41
MANUAL DE CICS
ALTA DE EMPLEADOS Fecha 26/05/2000 Hora 12:00 EMPNO ______ FIRSTNAME INITIAL BIRTHDATE PHONE ________ _ _______ ____ LASTNAME _________ SEX _ HIREDATE _________ JOBCODE ____
SALARY ______ <Enter> Valida datos <PF3> Ir al men <PF4> Otra Alta <PF5> Confirma alta
Aqu en caso necesario, se debe indicar al operador que la clave de empleado debe ser un numero mayor que cero, que ningn campo debe estar vaco, que las fechas contengan informacin valida, que el campo de sexo sea M o F, que el
42
MANUAL DE CICS
salario no sea 0 o mayor de 99999, es decir, se requiere validar los datos, para eso se asigna una tecla especial (Enter).
CAMBIOS AL ARCHIVO DE EMPLEADOS Fecha 26/05/2000 Hora 12:00 EMPNO ______ FIRSTNAME INITIAL BIRTHDATE PHONE ________ _ _______ ____ LASTNAME _________ SEX _ HIREDATE _________ JOBCODE ____
SALARY ______ <Enter> Valida datos <PF3> Ir al men Cambios <PF4> Otro Cambio <PF5> Confirma
43
MANUAL DE CICS
Antes de aceptar un cambio, debe validarse la informacin de la misma manera que se hizo con la transaccin de altas. Los mensajes de error indicaran si la clave no es aceptable, si no existen datos para esa clave en el archivo de empleados, o si se intenta enviar datos que no han sido validados. Al terminar, debe indicarse al usuario si los cambios se efectuaron o no correctamente.
BAJAS DEL ARCHIVO DE EMPLEADOS Fecha 26/05/2000 Hora 12:00 EMPNO ______ FIRSTNAME INITIAL BIRTHDATE PHONE ________ _ _______ ____ LASTNAME _________ SEX _ HIREDATE _________ JOBCODE ____
SALARY ______ <Enter> Valida datos <PF3> Ir al men <PF4> Otra Baja <PF5> Confirma Baja
44
MANUAL DE CICS
Adicionalmente a los mensajes de error, se debe informar al usuario si la baja se efecto o no correctamente.
MANUAL DE CICS
2. 3. 4.
Procesa datos recibidos Enva pantalla con datos procesados al usuario Termina (RETURN) El CICS se encarga de repetir la transaccin cuando ocurra otra comunicacin de la terminal. El CICS transfiere el control a otro programa El CICS da por terminada la transaccin
Observe que: En una transaccin Pseudoconversacional, el programa ocupa brevemente los recursos del sistema, despus termina El CICS se encarga de posteriormente de continuar o terminar el proceso, segn las opciones de RETURN
N
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
CONDITION
NORMAL ERROR RDATT WRBRK EOF EODS EOC INBFMH ENDINPT NONVAL NOSTART TERMIDERR FILENOTFOUND NOTFND DUPREC DUPKEY INVREQ IOERR NOSPACE NOTOPEN ENDFILE ILLOGIC LENGERR QZERO SIGNAL QBUSY
MANUAL DE CICS
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 69 70 72 81 82 84 87 94
ITEMERR PGMIDERR TRANSIDERR ENDDATA INVTSREQ EXPIRED RETPAGE RTEFAIL RTESOME TSIOERR MAPFAIL INVERRTERM INVMPSZ IGREQID OVERFLOW INVLDC NOSTG JIDERR QIDERR NOJBUFSP DSSTAT SELNERR FUNCERR UNEXPIN NOPASSBKRD NOPASSBKWR SYSIDERR ISCINVREQ ENQBUSY ENVDEFERR IGREQCD SESSIONERR SYSBUSY SESSBUSY NOTALLOC CBIDERR INVEXITREQ INVPARTNSET INVPARTN PARTNFAIL USERIDERR NOTAUTH SUPPRESSED TERMERR ROLLEDBACK DISABLED OPENERR LOADING
Nmero de ITEM no Grabado al (READQ TS,WRITE TS). El Programa o el Mapa no esta Declarado en la PPT. La Transaccin no esta Declarada en la PCT. No hay mas datos para el Task, usando RETRIEVE No se Localiza. Cuando un Comando Termina su duracin, que no se Utiliza. Ocurre Cundo la Opcin SET esta Especificada. Terminal no se encuentra Instalada, usando ROUTE. Terminal no recibe el Mensaje de ROUTE. Error de Entrada/Salida en la TS. Recibe MAPA Vaco (Operador Oprimi Tecla CLEAR) Identificador de Terminal no es Valido en ROUTE. Cuando el MAPA es muy Grande para la Terminal(SEND RECIVE) Cuando REQID de SEND MAP es Diferente del REQID anterior. Los Datos del Mapa no Ajustan en la Pgina (SEND MAP). Es cuando la LDC no esta Incluida en la lista de LDCs. El rea Solicitada es Mayor Que el rea Disponible. S el Identificador de JOURNAL no Existe. La QUEUE no Existe,(READQ TS). Los BUFFER del JOURNAL Estn Llenos. El DESTINATION STATUS ha Cambiado (ISSUE RECEIVE). Error en la Seleccin del DESTID (ISSUE QUERY). Error Durante la Ejecucin de ISSUE QUERY. Error Inesperado en ISSUE QUERY o ISSUE RECEIVE No est presente el PASSBOOK en RECEIVE. No est presente el PASSBOOK en SEND. EL SYSID No est Definido en READ. Falla en el Sistema Remoto RESP2=70 El recurso Solicitado no est Disponible en ENQ. RETRIEVE especifico una opcin que no corresponde a START Se ordeno SEND MAP despus de SIGNAL con CHANGE DIRECTION. Session Invalido en ALLOCATE. No hay SESSION Disponible en ALLOCATE MAPPED. La session no se puede servir Inmediatamente en ALLOCATE. RECEIVE se envi por una Transaccin generada por START PROFILE de ALLOCATE no Existe. No Localizada. La Particin no es Valida en SEND PARTNSET. La Particin no esta Definida en RECEIVE MAP o SEND MAP. Operador insiste en Enviar a una Particin Invalida RECIVE. Usuario Invalido en SIGNON. Usuario No Autorizado a esta Funcin. Usuario no aadi Registro a la Tabla con (WRITE UMT). Error de Terminal. El Programa no Puede Actualizar y hace el ROLLBACK. El Archivo esta Deshabilitado (READ, WRITE). Error cundo se ABRE, CIERRA o se ESRCIBE la Rutina DUMP. La Tabla Solicitada por READ UPDATE se esta Cargando.
47
MANUAL DE CICS
48