Desarrollando en Cobol y Natural sobre Plataforma Mainframe

jueves, 7 de agosto de 2014

Creación de fichero VSAM mediante JCL (1)

Hace algún tiempo estuvimos viendo la forma de generar un fichero VSAM mediante la opción "VSAM Utilities" del ISPF (ver post Creación de fichero VSAM mediante ISPF). Hoy veremos cómo se puede realizar esta misma acción mediante el lanzamiento de un JCL previamente configurado.

En realidad, una vez tengamos claro cómo hay que parametrizarlo, lo más normal es que prefiramos la opción de generación del VSAM mediante JCL frente a la generación mediante ISPF. Obviamente, es mucho más rápido y cómodo lanzar un JCL que tener que ir detallando todos los datos que se solicitan en la opción "VSAM Utilities".



A continuación vamos a mostrar un ejemplo de cómo se debería implementar, en un JCL, el paso de creación de un fichero VSAM de tipo KSDS (indexado).

//****************************************************
//DELETE   EXEC PGM=IDCAMS
//SYSPRINT DD   SYSOUT=*
//SYSIN    DD   *
  DELETE  (JJ00.FACTURAS.PEND)

//****************************************************
//DEFINE   EXEC PGM=IDCAMS
//SYSPRINT DD   SYSOUT=*
//SYSIN    DD   *
  DEFINE CLUSTER ( NAME (JJ00.FACTURAS.PEND) -
                   TRACKS (02 00) -
                   RECORDSIZE (80 80) -
                   FREESPACE (00 00) -
                   VOLUMES (E3WK01) -
                   SHAREOPTIONS (2 3) -
                   KEYS (6 1) -
                   UNIQUE -
                   IMBED ) -
            DATA ( NAME (JJ00.FACTURAS.PEND.DATA) ) -
           INDEX ( NAME (JJ00.FACTURAS.PEND.INDEX) )
/*

//****************************************************
//REPRO    EXEC PGM=IDCAMS
//ORIGEN   DD   DSN=JJ00.FACTURAS.ORIGEN,DISP=SHR
//SYSPRINT DD   SYSOUT=*
//SYSIN    DD   *
  REPRO INFILE (ORIGEN) OUTDATASET (JJ00.FACTURAS.PEND)
/*

//****************************************************

Como vemos, el código anterior se compone de 3 pasos y no sólo de uno. Esto es debido a que, junto al paso de creación del VSAM (DEFINE), hemos añadido un paso previo de borrado del registro existente (DELETE) y un paso posterior de carga de datos del fichero (REPRO).

El paso DELETE sirve para comprobar si ya existe un fichero con el nombre con el que pretendemos crear el VSAM. Y, en caso de que se encuentre alguno, procede a su borrado ya que, si no hiciésemos esto, el paso DEFINE de creación daría un error al verificarse que ya existe una entidad con el nombre propuesto.

Por otra parte, el paso REPRO nos sirve para, una vez creado el VSAM, cargarlo con información procedente de otro fichero origen (cuyo nombre también tendremos que especificar). En el ejemplo, estamos volcando la información del fichero JJ00.FACTURAS.ORIGEN al fichero VSAM denominado JJ00.FACTURAS.PEND.

Centrándonos ya en el propio paso de creación del VSAM (DEFINE), vemos que consiste en una invocación de la utilidad IDCAMS que lleva asociada una serie de parámetros. A continuación vemos en qué consiste cada uno de ellos.

1º) Declaración SYSPRINT: Aquí tenemos que indicar el lugar al que deseamos que se envíen todos los mensajes generados durante el proceso de ejecución. Si ponemos SYSOUT=* entonces dicha información se enviará directamente al SPOOL (a la MSGCLASS indicada en nuestro job).

//SYSPRINT DD   SYSOUT=*

2º) Declaración SYSIN: Son las sentencias de control de entrada para el programa. En este caso, la utilidad IDCAMS lleva asociada la sentencia DEFINE, que deberá ser especificada justo debajo de la declaración SYSIN.

//SYSIN    DD   *



El próximo día seguiremos viendo cuáles son las declaraciones que debemos realizar en nuestro JCL para conseguir que IDCAMS realice la creación del fichero VSAM buscado. La cláusula DEFINE CLUSTER es la más importante del paso y, por tanto, aquella en la que habrá que poner más cuidado a la hora de definir los parámetros requeridos.

Eso es todo por hoy. Os emplazamos a la segunda parte del post para continuar con la descripción del proceso a realizar para completar la puesta a punto nuestro JCL.

Saludos.

2 comentarios:

  1. Hola, Eric.
    Gracias por tus comentarios, se agradecen. Me alegro de que te guste el post y espero seguir viéndote por aquí dándote una vuelta por el blog.
    Saludos.

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...