JCL - Biblioteca base

Base Libraryes el Partitioned Dataset (PDS), que contiene los módulos de carga del programa a ejecutar en el JCL o el procedimiento catalogado, que se llama en el programa. Las bibliotecas base se pueden especificar para todo el JCL en unJOBLIB biblioteca o para un paso de trabajo en particular en un STEPLIB declaración.

Declaración JOBLIB

UN JOBLIBLa sentencia se utiliza para identificar la ubicación del programa que se ejecutará en un JCL. La sentencia JOBLIB se especifica después de la sentencia JOB y antes de la sentencia EXEC. Esto solo se puede utilizar para los procedimientos y programas in-stream.

Sintaxis

A continuación se muestra la sintaxis básica de una sentencia JCL JOBLIB:

//JOBLIB DD DSN=dsnname,DISP=SHR

La sentencia JOBLIB es aplicable a todas las sentencias EXEC dentro del JCL. El programa especificado en la instrucción EXEC se buscará en la biblioteca JOBLIB seguido de la biblioteca del sistema.

Por ejemplo, si la instrucción EXEC está ejecutando un programa COBOL, el módulo de carga del programa COBOL debe colocarse dentro de la biblioteca JOBLIB.

Declaración STEPLIB

UN STEPLIBLa declaración se utiliza para identificar la ubicación del programa que se ejecutará dentro de un Paso de trabajo. La sentencia STEPLIB se especifica después de la sentencia EXEC y antes de la sentencia DD del paso de trabajo.

Sintaxis

A continuación se muestra la sintaxis básica de una sentencia STEPLIB de JCL:

//STEPLIB DD DSN=dsnname,DISP=SHR

El programa especificado en la instrucción EXEC se buscará en la biblioteca STEPLIB seguido de la biblioteca del sistema. STEPLIB codificado en un paso de trabajo anula la sentencia JOBLIB.

Ejemplo

El siguiente ejemplo muestra el uso de sentencias JOBLIB y STEPLIB:

//MYJCL JOB ,,CLASS=6,NOTIFY=&SYSUID
//*
//JOBLIB DD DSN=MYPROC.BASE.LIB1,DISP=SHR
//*
//STEP1 EXEC PGM=MYPROG1
//INPUT1 DD DSN=MYFILE.SAMPLE.INPUT1,DISP=SHR
//OUTPUT1 DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
//           RECFM=FB,LRECL=80
//*
//STEP2 EXEC PGM=MYPROG2
//STEPLIB DD DSN=MYPROC.BASE.LIB2,DISP=SHR
//INPUT2 DD DSN=MYFILE.SAMPLE.INPUT2,DISP=SHR
//OUTPUT2 DD DSN=MYFILES.SAMPLE.OUTPUT2,DISP=(,CATLG,DELETE),
//           RECFM=FB,LRECL=80

Aquí, el módulo de carga del programa MYPROG1 (en STEP1) se busca en MYPROC.SAMPLE.LIB1. Si no se encuentra, se busca en la biblioteca del sistema. En STEP2, STEPLIB anula JOBLIB y el módulo de carga del programa MYPROG2 se busca en MYPROC.SAMPLE.LIB2 y luego en la biblioteca del sistema.

Declaración INCLUDE

Un conjunto de sentencias JCL codificadas dentro de un miembro de un PDS se puede incluir en un JCL mediante INCLUDEdeclaración. Cuando JES interpreta el JCL, el conjunto de sentencias JCL dentro del miembro INCLUDE reemplaza la sentencia INCLUDE.

Sintaxis

A continuación se muestra la sintaxis básica de una instrucción INCLUDE de JCL:

//name INCLUDE MEMBER=member-name

El propósito principal de la declaración INCLUDE es la reutilización. Por ejemplo, los archivos comunes que se utilizarán en muchos JCL pueden codificarse como sentencias DD dentro del miembro INCLUDE y utilizarse en un JCL.

Las declaraciones de DD ficticias, las especificaciones de la tarjeta de datos, PROC, JOB, declaraciones PROC no se pueden codificar dentro de un miembro INCLUDE. Una instrucción INLCUDE se puede codificar dentro de un miembro INCLUDE y se pueden realizar más anidamientos hasta en 15 niveles.

Declaración JCLLIB

UN JCLLIBLa declaración se utiliza para identificar las bibliotecas privadas que se utilizan en el trabajo. Se puede utilizar tanto con procedimientos in-stream como catalogados.

Sintaxis

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

//name JCLLIB ORDER=(library1, library2....)

Las bibliotecas especificadas en la sentencia JCLLIB se buscarán en el orden indicado para localizar los programas, procedimientos y el miembro INCLUDE utilizados en el trabajo. Solo puede haber una sentencia JCLLIB en un JCL; especificado después de una instrucción JOB y antes de EXEC e INCLUDE, pero no se puede codificar dentro de un miembro INCLUDE.

Ejemplo

En el siguiente ejemplo, el programa MYPROG3 y el miembro INCLUDE MYINCL se buscan en el orden MYPROC.BASE.LIB1, MYPROC.BASE.LIB2, biblioteca del sistema.

//MYJCL JOB ,,CLASS=6,NOTIFY=&SYSUID
//*
//MYLIB JCLLIB ORDER=(MYPROC.BASE.LIB1,MYPROC.BASE.LIB2)
//*
//STEP1 EXEC PGM=MYPROG3
//INC INCLUDE MEMBER=MYINCL
//OUTPUT1 DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
//           RECFM=FB,LRECL=80
//*