Desarrollando en Cobol y Natural sobre Plataforma Mainframe

jueves, 14 de agosto de 2014

Creación de fichero VSAM mediante JCL (y 2)

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

Related Posts Plugin for WordPress, Blogger...