En el artículo COBOL/CICS vol.1: primer contacto vimos como crear una transacción CICS y asociarla a nuestro programa, por lo que no volveremos a explicarlo.
En esta ocasión veremos como definir un fichero VSAM en CICS para que pueda ser utilizado por nuestro programa. El sistema será el mismo que para definir un programa.
Utilizaremos la transacción CEDA para definir el fichero.
Escribiremos CEDA DEFINE FILE
La información a rellenar será:
File
Group
DSNAme
Add = yes
BRowse = yes
DELete = yes
READ = yes
UPDATE = yes
Una vez definido, tendremos que instalarlo:
CEDA INSTALL FILE(FILE1)
Se debe rellenar el campo Group
Ahora si consultamos la transacción CEMT veremos que ya aparece nuestro fichero:
CEMT I FILE(FILE1)
Ya tenemos el fichero listo para usar.
Antes de meternos a ver el programa, vamos a ver las instrucciones CICS de acceso a fichero que vamos a utilizar.
STARTBR: Apertura del fichero
EXEC CICS STARTBR
FILE ('FILE1')
RIDFLD (WX-CODIGO)
KEYLENGTH (WX-LONG-CLAVE)
GTEQ
RESP (WX-RESP)
END-EXEC.
Donde:
FILE1 es el nombre que le hemos dado a nuestro fichero en CICS.
RIDFLD es el campo clave del fichero.
KEYLENGTH es la longitud de la clave.
GTEQ indica mayor o igual.
RESP indicamos la variable donde guardaremos el código de respuesta.
DELETE: borra un registro del fichero
EXEC CICS DELETE
RIDFLD (WX-CODIGO)
FILE ('FILE1')
NOHANDLE
END-EXEC.
Nota: si usamos NOHANDLE el código de respuesta lo tendremos en EIBRESP
WRITE: graba un registro
EXEC CICS WRITE
FILE ('FILE1')
RIDFLD (WX-CODIGO)
LENGTH (WX-LONG-REG)
FROM (REG-VSAMKSDS)
NOHANDLE
END-EXEC.
Donde:
LENGTH es la longitud del registro
FROM es el nivel 01 que define la estructura del fichero
READ: lectura directa
EXEC CICS READ
RIDFLD (WX-CODIGO)
FILE ('FILE1')
INTO (REG-VSAMKSDS)
LENGTH (WX-LONG-REG)
NOHANDLE
END-EXEC.
Donde:
INTO es el nivel 01 que define la estructura del fichero.
READNEXT: lectura del fichero
EXEC CICS READNEXT
INTO (REG-VSAMKSDS)
RIDFLD (WX-CODIGO)
FILE ('FILE1')
KEYLENGTH (WX-LONG-CLAVE)
RESP (WX-RESP)
END-EXEC.
UPDATE: indica lectura con intención de actualizar
EXEC CICS READ
RIDFLD (WX-CODIGO)
FILE ('FILE1')
INTO (REG-VSAMKSDS)
LENGTH (WX-LONG-REG)
UPDATE
NOHANDLE
END-EXEC.
Nota: con UPDATE bloqueamos el registro para que no se pueda acceder a él mientras tanto
REWRITE: actualiza un registro
EXEC CICS REWRITE
FILE ('FILE1')
LENGTH (WX-LONG-REG)
FROM (REG-VSAMKSDS)
NOHANDLE
END-EXEC.
ENDBR: cierre del fichero
EXEC CICS ENDBR
FILE ('FILE1')
RESP (WX-RESP)
END-EXEC.
La semana que viene continuaremos el artículo con el código completo del programa y su ejecución. Esta no hay tiempo para más!
6 comentarios:
hola que tal.
oye sabes como se hace referencias hacia tras en jcl? es referente al DCB del archivo.
Hola Chennte.
Te refieres a como crear el fichero VSAM por JCL?
Es que no me ha quedado clara la pregunta.
Gracias!
Hola, alguien tiene algún Ej de un PGM con archivos.
Hola Anónimo.
A la vuelta de vacaciones espero terminarlo con el ejemplo completo.
Un saludo!
Muchas gracias a la gente de consultorio cobol por lo que haceis. ¿Continuareis el articulo de acceso a ficheros con cobol/cics?. Un saludo
Hola Anónimo, llevo meses intentando acabar el de ficheros VSAM en batch... si lo consigo me pondré con el de CICS. Sorry, sé que lo he dejado a medias : (