Hace unas semanas comenzamos a ver cuáles eran los pasos que debíamos seguir para la construcción de un JCL cuya función fuese la generación de un fichero VSAM mediante la utilidad IDCAMS (ver post Creación de fichero VSAM mediante JCL - 1). Hoy trataremos de completar la descripción del proceso.
Recordemos que en esa primera parte habíamos hablado de los pasos de borrado y de carga de datos, así como de la declaración de las cards SYSPRINT y SYSIN del paso de creación del fichero VSAM. A continuación, terminaremos de ver las declaraciones necesarias para el mencionado paso de creación.
3º) Declaración DEFINE:
El comando DEFINE sirve para indicar a la utilidad IDCAMS que tiene que
proceder a la creación de un fichero VSAM. Esta cláusula se divide en 3
partes:
a) Cláusula CLUSTER: Aquí es donde se
deberá indicar el nombre del fichero VSAM y las características
asociadas a dicho fichero. En el ejemplo, este fichero se denominará
JJ00.FACTURAS.PEND.
DEFINE CLUSTER ( NAME (JJ00.FACTURAS.PEND) -
Al dar de alta el fichero, tendremos que especificar una serie de datos precisados para la creación del mismo.
- TRACKS: Espacio de almacenamiento requerido por el VSAM.
- RECORDSIZE: Tamaño del registro almacenado en el fichero.
- FREESPACE:
Para los ficheros indexados, esto especifica el porcentaje de espacio
que deseamos establecer como espacio reservado (para futuras
expansiones) cuando el CLUSTER sea inicialmente cargado o cuando se
realice una inserción masiva sobre el mismo.
- VOLUMES: Unidad en la que se almacenará el fichero.
- SHAREOPTIONS:
Sirve para indicar la forma en que el CLUSTER puede ser compartido, de
manera que varios jobs puedan acceder al VSAM al mismo tiempo. Se debe
indicar la Región (CICS) y el Sistema (MVS).
- KEYS:
En los ficheros indexados deberá indicarse cuál es el campo clave del
registro. Posteriormente, podremos localizar un registro específico
simplemente con indicar el valor del campo clave, ya que no podrá estar
repetido en dos registros diferentes.
- UNIQUE:
Esto se indica cuando deseamos que nuestro CLUSTER no forme parte de un
espacio de datos (dataspace) que contenga otros CLUSTER. De este modo,
en la unidad se crea un nuevo espacio de datos que queda reservado
enteramente para nuestro CLUSTER (por tanto, debe existir espacio libre
en las unidades especificadas para realizar esta acción).
- IMBED: Sirve para indicar que los registros de secuencia de conjunto deben ser insertados en el componente de datos del CLUSTER.
- INDEXED:
Aquí tendremos que indicar qué tipo de fichero VSAM queremos dar de
alta: NONINDEXED para ficheros secuenciales (ESDS), INDEXED para
ficheros indexados (KSDS), NUMBERED para ficheros relativos (RRDS) o
LINEAR para ficheros lineales (LDS).
TRACKS (02 00) -
RECORDSIZE (80 80) -
FREESPACE (00 00) -
VOLUMES (E3WK01) -
SHAREOPTIONS (2 3) -
KEYS (6 1) -
UNIQUE -
IMBED ) -
b) Cláusula DATA:
Al tratarse de un fichero VSAM indexado (es decir, de tipo KSDS), aquí
podremos indicar el nombre del fichero de datos asociado. En el ejemplo,
este fichero se denominará JJ00.FACTURAS.PEND.DATA. Recordemos que los
KSDS emplean dos subficheros para el tratamiento de la información: uno
para el almacenamiento de los índices y otro para el almacenamiento de
los datos asociados a cada índice.
DATA ( NAME (JJ00.FACTURAS.PEND.DATA) ) -
c) Cláusula INDEX:
Del mismo modo, al tratarse de un fichero VSAM indexado, aquí podremos
indicar el nombre del fichero de índices asociado. En el ejemplo, este
fichero se denominará JJ00.FACTURAS.PEND.INDEX.
INDEX ( NAME (JJ00.FACTURAS.PEND.INDEX) )
Una
vez especificados todos los parámetros anteriores, ya estaremos
preparados para lanzar el JCL con el paso de creación del fichero VSAM
(indexado, en este caso). Aunque hay gran cantidad de parámetros, si los
indicamos tal y como aparecen más arriba, en principio no deberíamos
tener problemas en el momento de la ejecución.
En
nuestro ejemplo, tras ejecutar el job pudimos comprobar que se había
generado el fichero VSAM correspondiente (JJ00.FACTURAS.PEND) y sus dos
subficheros asociados (JJ00.FACTURAS.PEND.DATA y
JJ00.FACTURAS.PEND.INDEX).
- Enter "/" to select action Message Volume
-------------------------------------------------------------
JJ00.FACTURAS.PEND *VSAM*
JJ00.FACTURAS.PEND.DATA ZARES1
JJ00.FACTURAS.PEND.INDEX ZARES1
**************** End of Data Set list ***********************
Como se puede apreciar, el Data Set JJ00.FACTURAS.PEND aparece con la etiqueta *VSAM* en la columna "Volume", lo que lo identifica claramente como un fichero VSAM. Junto a él, podemos observar la presencia de los ficheros DATA e INDEX.
Finalmente,
comentar que, aunque el ejemplo lo hemos realizado para un fichero
KSDS, el código podría ser fácilmente adaptado para ficheros VSAM
secuenciales (ESDS) o ficheros VSAM relativos (RRDS), ya que el
procedimiento de generación es bastante similar.
Y eso
es todo. Esperemos que lo comentado sirva para arrojar un poco más de
luz sobre los ficheros VSAM y que os permita realizar la generación de
los mismos sin problema alguno.
Saludos.
No hay comentarios:
Publicar un comentario