JCL - 基础库

基础库是分区数据集(PDS),它包含要在JCL中执行的程序的加载模块或在程序中调用的编目过程.可以在 JOBLIB 库中为整个JCL指定基本库,也可以在 STEPLIB 语句中为特定作业步骤指定基本库.

JOBLIB语句

使用 JOBLIB 语句来标识要在JCL中执行的程序的位置. JOBL语句在JOB语句之后和EXEC语句之前指定.这只能用于流程序和程序.

语法

以下是JCL JOBLIB语句的基本语法:

//JOBLIB DD DSN=dsnname,DISP=SHR

JOBLIB语句适用于JCL内的所有EXEC声明.将在JOBLIB库中搜索EXEC语句中指定的程序,然后搜索系统库.

例如,如果EXEC语句正在执行COBOL程序,则COBOL的加载模块程序应放在JOBLIB库中.

STEPLIB语句

使用 STEPLIB 语句来识别在作业步骤中执行的程序的位置. STEPLIB语句在EXEC语句之后和作业步骤的DD语句之前指定.

语法

以下是JCL的基本语法STEPLIB声明:

 //STEPLIB DD DSN=dsnname,DISP=SHR

将在STEPLIB库中搜索EXEC语句中指定的程序,然后搜索系统库.在作业步骤中编码的STEPLIB将覆盖JOBLIB语句.

示例

以下示例显示JOBLIB和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

这里,在MYPROC.SAMPLE.LIB1中搜索程序MYPROG1的加载模块(在STEP1中).如果未找到,则在系统库中搜索.在STEP2中,STEPLIB覆盖JOBLIB并在MYPROC.SAMPLE.LIB2中搜索程序MYPROG2的加载模块,然后在系统库中搜索.

INCLUDE语句

可以使用 INCLUDE 语句将一组在PDS成员中编码的JCL语句包含在JCL中.当JES解释JCL时,INCLUDE成员中的JCL语句集替换INCLUDE语句.

语法

以下是基本语法JCL INCLUDE声明:

//name INCLUDE MEMBER=member-name

INCLUDE语句的主要目的是可重用性.例如,在许多JCL中使用的公共文件可以编码为INCLUDE成员中的DD语句,并在JCL中使用.

虚拟DD语句,数据卡规范,PROC,JOB,PROC语句不能在INCLUDE成员中编码. INLCUDE语句可以在INCLUDE成员中编码,进一步嵌套最多可以达到15个级别.

JCLLIB语句

A JCLLIB 语句用于标识作业中使用的私有库.它可以与instream和编目过程一起使用.

语法

以下是JCL JCLLIB语句的基本语法:

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

将按给定顺序搜索JCLLIB语句中指定的库,以查找作业中使用的程序,过程和INCLUDE成员. JCL中只能有一个JCLLIB语句;在JOB语句之后和EXEC和INCLUDE语句之前指定,但它不能在INCLUDE成员中编码.

示例

在以下示例中,程序MYPROG3和INCLUDE成员MYINCL按MYPROC.BASE.LIB1,MYPROC.BASE.LIB2,系统库的顺序搜索.

//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
//*