- JCL 教程
- JCL 首页
- JCL - 概述
- JCL - 环境
- JCL - JOB 语句
- JCL - EXEC 语句
- JCL - DD 语句
- JCL - 基础库
- JCL - 过程
- JCL - 条件处理
- JCL - 定义数据集
- JCL - 输入/输出方法
- JCL - 运行 COBOL 程序
- JCL - 实用程序
- JCL - 基本排序技巧
- JCL 有用资源
- JCL - 问答
- JCL - 快速指南
- JCL - 有用资源
- JCL - 讨论
JCL - 基础库
基础库是分区数据集 (PDS),它包含在 JCL 中执行的程序的加载模块或程序中调用的已编目过程。基础库可以在整个 JCL 中的JOBLIB库中指定,或者在特定作业步骤中的STEPLIB语句中指定。
JOBLIB 语句
JOBLIB语句用于标识在 JCL 中执行的程序的位置。JOBLIB 语句在 JOB 语句之后和 EXEC 语句之前指定。这只能用于流内过程和程序。
语法
以下是 JCL JOBLIB 语句的基本语法
//JOBLIB DD DSN=dsnname,DISP=SHR
JOBLIB 语句适用于 JCL 中的所有 EXEC 语句。EXEC 语句中指定的程序将在 JOBLIB 库中搜索,然后是系统库。
例如,如果 EXEC 语句正在执行 COBOL 程序,则 COBOL 程序的加载模块应放在 JOBLIB 库中。
STEPLIB 语句
STEPLIB语句用于标识在作业步骤内执行的程序的位置。STEPLIB 语句在 EXEC 语句之后和作业步骤的 DD 语句之前指定。
语法
以下是 JCL STEPLIB 语句的基本语法
//STEPLIB DD DSN=dsnname,DISP=SHR
EXEC 语句中指定的程序将在 STEPLIB 库中搜索,然后是系统库。在作业步骤中编码的 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
这里,程序 MYPROG1(在 STEP1 中)的加载模块在 MYPROC.SAMPLE.LIB1 中搜索。如果未找到,则在系统库中搜索。在 STEP2 中,STEPLIB 覆盖 JOBLIB,程序 MYPROG2 的加载模块在 MYPROC.SAMPLE.LIB2 中搜索,然后在系统库中搜索。
INCLUDE 语句
可以使用INCLUDE语句将 PDS 成员中编码的一组 JCL 语句包含到 JCL 中。当 JES 解释 JCL 时,INCLUDE 成员中的一组 JCL 语句将替换 INCLUDE 语句。
语法
以下是 JCL INCLUDE 语句的基本语法
//name INCLUDE MEMBER=member-name
INCLUDE 语句的主要目的是可重用性。例如,可在 INCLUDE 成员中将跨多个 JCL 使用的公共文件编码为 DD 语句,并在 JCL 中使用。
虚拟 DD 语句、数据卡规范、PROC、JOB、PROC 语句不能在 INCLUDE 成员中编码。INCLUDE 语句可以在 INCLUDE 成员中编码,最多可以嵌套 15 层。
JCLLIB 语句
JCLLIB语句用于标识作业中使用的私有库。它可以与流内过程和已编目过程一起使用。
语法
以下是 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 //*