JCL - Declaración DD

Los conjuntos de datos son archivos de mainframe con registros organizados en un formato específico. Los conjuntos de datos se almacenan en el dispositivo de almacenamiento de acceso directo (DASD) o cintas del mainframe y son áreas básicas de almacenamiento de datos. Si se requiere que estos datos se utilicen / creen en un programa por lotes, entonces el nombre físico del archivo (es decir, el conjunto de datos) junto con el formato y la organización del archivo se codifican en un JCL.

La definición de cada conjunto de datos utilizado en el JCL se da mediante DD statement. Los recursos de entrada y salida requeridos por un paso de trabajo deben describirse dentro de una declaración DD con información como la organización del conjunto de datos, los requisitos de almacenamiento y la longitud del registro.

Sintaxis

A continuación se muestra la sintaxis básica de una declaración JCL DD:

//DD-name DD Parameters

Descripción

Veamos la descripción de los términos utilizados en la sintaxis de la declaración DD anterior.

DD-NAME

Un DD-NAME identifica el conjunto de datos o el recurso de entrada / salida. Si este es un archivo de entrada / salida usado por un programa COBOL / Assembler, entonces el archivo es referenciado por este nombre dentro del programa.

DD

Esta es la palabra clave para identificarlo como una declaración DD.

PARAMETROS

A continuación se muestran los diversos parámetros para la declaración DD. Puede utilizar uno o más parámetros según los requisitos y están separados por comas:

Parámetro Descripción
DSN

El parámetro DSN se refiere al nombre del conjunto de datos físicos de un conjunto de datos existente o recién creado. El valor de DSN puede estar compuesto por subnombres de 1 a 8 caracteres cada uno, separados por puntos y con una longitud total de 44 caracteres (alfanuméricos). A continuación se muestra la sintaxis:

DSN=Physical Dataset Name

Temporary datasetsnecesitan almacenamiento solo durante la duración del trabajo y se eliminan al finalizar el trabajo. Dichos conjuntos de datos se representan comoDSN=&name o simplemente sin un DSN especificado.

Si un conjunto de datos temporal creado por un paso de trabajo se va a utilizar en el siguiente paso de trabajo, se hace referencia a él como DSN=*.stepname.ddname. Se llama Backward Referencing.

DISP

El parámetro DISP se utiliza para describir el estado del conjunto de datos, la disposición al final del paso del trabajo en la finalización normal y anormal. DISP no se requiere en una declaración DD solo cuando el conjunto de datos se crea y se elimina en el mismo paso del trabajo (como los conjuntos de datos temporales). A continuación se muestra la sintaxis:

DISP=(status, normal-disposition, abnormal-disposition)

Los siguientes son valores válidos para status:

  • NEW: El conjunto de datos se crea recientemente en el paso del trabajo. OUTPUT1 en el ejemplo anterior.

  • OLD: El conjunto de datos ya está creado y se sobrescribirá en el paso del trabajo. El paso del trabajo obtiene acceso exclusivo al conjunto de datos y ningún otro trabajo puede acceder a este conjunto de datos hasta que se completa el paso del trabajo.

  • SHR: El conjunto de datos ya está creado y se leerá en el paso del trabajo. Varios trabajos pueden leer el conjunto de datos al mismo tiempo. Ejemplo: INPUT1 e INPUT2.

  • MOD: El conjunto de datos ya está creado. Esta disposición se utilizará cuando sea necesario agregar nuevos registros al conjunto de datos existente (los registros existentes no se sobrescribirán).

UN normal-disposition El parámetro puede tomar uno de los siguientes valores

  • CATLG, UNCATLG, DELETE, PASS y KEEP

UN abnormal-disposition El parámetro puede tomar uno de los siguientes valores

  • CATLG, UNCATLG, DELETE y KEEP

Aquí está la descripción de los parámetros CATLG, UNCATLG, DELETE, PASS y KEEP:

  • CATLG : El conjunto de datos se conserva con una entrada en el catálogo del sistema.

  • UNCATLG : El conjunto de datos se conserva pero se elimina la entrada del catálogo del sistema.

  • KEEP: El conjunto de datos se conserva sin cambiar ninguna de las entradas del catálogo. KEEP es la única disposición válida para archivos VSAM. Esto se debe usar solo para conjuntos de datos permanentes.

  • DELETE : El conjunto de datos se elimina del catálogo de usuario y sistema.

  • PASS: Esto es válido solo para una disposición normal. Se utiliza cuando el conjunto de datos se va a pasar y procesar en el siguiente paso de trabajo en un JCL.

Cuando no se especifica alguno de los subparámetros de DISP, los valores predeterminados son los siguientes:

  • status : NUEVO es el valor predeterminado.

  • normal-disposition : Si el estado es NUEVO, la disposición normal predeterminada es BORRAR, de lo contrario es MANTENER.

  • abnormal-disposition : Igual que la disposición normal.

DCB

El parámetro Bloque de control de datos (DCB) detalla las características físicas de un conjunto de datos. Este parámetro es necesario para los conjuntos de datos que se crean recientemente en el paso del trabajo.

LRECL es la longitud de cada registro que se mantiene dentro del conjunto de datos.

RECFM es el formato de registro del conjunto de datos. RECFM puede contener valores FB, V o VB. FB es una organización de bloque fijo donde uno o más registros lógicos se agrupan dentro de un solo bloque. V es una organización variable en la que un registro lógico de longitud variable se coloca dentro de un bloque físico. VB es una organización de bloque variable en la que uno o más registros lógicos de longitud variable se colocan dentro de un bloque físico.

BLKSIZE es el tamaño del bloque físico. Cuanto mayor sea el bloque, mayor será el número de registros de un archivo FB o VB.

DSORG es el tipo de organización de conjuntos de datos. DSORG puede contener valores PS (secuencial físico), PO (organización particionada) y DA (organización directa).

Cuando existe la necesidad de replicar los valores DCB de un conjunto de datos a otro dentro del mismo paso de trabajo o JCL, entonces se especifica como DCB = *. Stepname.ddname donde stepname es el nombre del paso del trabajo y ddname es el conjunto de datos del cual se copia el DCB.

Verifique el siguiente ejemplo donde RECFM = FB, LRECL = 80 forma el DCB del conjunto de datos OUTPUT1.

SPACE

El parámetro SPACE especifica el espacio requerido para el conjunto de datos en el DASD (Disco de almacenamiento de acceso directo). A continuación se muestra la sintaxis:

SPACE=(spcunits, (pri, sec, dir), RLSE)

Aquí está la descripción de todos los parámetros utilizados:

  • spcunits : Puede ser CYL (cilindro), TRK (pistas) o BLKSIZE (tamaño de bloque).

  • pri : Este es el espacio principal necesario para el conjunto de datos.

  • sec : Este es el espacio adicional necesario, cuando el espacio principal no es suficiente.

  • ir : Estos son los bloques de directorio requeridos, si el conjunto de datos es un PDS (Conjunto de datos particionado) con miembros dentro.

  • RLSE : Se utiliza para liberar el espacio no utilizado al finalizar el trabajo.

UNIT

Los parámetros UNIT y VOL se enumeran en el catálogo del sistema para conjuntos de datos catalogados y, por lo tanto, se puede acceder a ellos solo con el nombre DSN físico. Pero para conjuntos de datos sin catalogar, la declaración DD debe incluir estos parámetros. Para crear nuevos conjuntos de datos, se pueden especificar los parámetros UNIT / VOL o Z / OS asigna el dispositivo y el volumen adecuados.

El parámetro UNIT especifica el tipo de dispositivo en el que se almacena el conjunto de datos. El tipo de dispositivo se puede identificar mediante la dirección de hardware o el grupo de tipos de dispositivo. A continuación se muestra la sintaxis:

UNIT=DASD | SYSDA

Donde DASD significa Dispositivo de almacenamiento de acceso directo y SYSDA significa Acceso directo al sistema y se refiere al siguiente dispositivo de almacenamiento en disco disponible.

VOL

El parámetro VOL especifica el número de volumen en el dispositivo identificado por el parámetro UNIT. A continuación se muestra la sintaxis:

VOL=SER=(v1,v2)

Donde v1, v2 son números de serie de volumen. También puede utilizar la siguiente sintaxis:

VOL=REF=*.DDNAME

Donde REF es la referencia hacia atrás al número de serie del volumen de un conjunto de datos en cualquiera de los pasos de trabajo anteriores en el JCL.

SYSOUT

Los parámetros de la declaración DD discutidos hasta ahora corresponden a los datos que se almacenan en un conjunto de datos. El parámetro SYSOUT dirige los datos al dispositivo de salida según la clase especificada. A continuación se muestra la sintaxis

SYSOUT=class

Donde si la clase es A, entonces dirige la salida a la impresora, y si la clase es * luego dirige la salida al mismo destino que el del parámetro MSGCLASS en la instrucción JOB.

Ejemplo

A continuación se muestra un ejemplo, que hace uso de declaraciones DD junto con varios parámetros explicados anteriormente:

//TTYYSAMP JOB 'TUTO',CLASS=6,MSGCLASS=X,REGION=8K,
//         NOTIFY=&SYSUID
//*
//STEP010  EXEC PGM=ICETOOL,ADDRSPC=REAL
//*
//INPUT1   DD DSN=TUTO.SORT.INPUT1,DISP=SHR
//INPUT2   DD DSN=TUTO.SORT.INPUT2,DISP=SHR,UNIT=SYSDA,
//         VOL=SER=(1243,1244)
//OUTPUT1  DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
//         RECFM=FB,LRECL=80,SPACE=(CYL,(10,20))
//OUTPUT2  DD SYSOUT=*