作业控制语言(JCL)是多虚拟存储(MVS)的命令语言,它是IBM大型机计算机中常用的操作系统。 JCL识别要执行的程序,所需的输入和输入/输出的位置,并通过作业控制语句通知操作系统。
JCL三大要素:JOB,EXEC,DD
(1)作业语句(JOB):标识一个作业的开始,提供必要的运行参数。
(2)执行语句(EXEC):标识一个作业步的开始,定义本作业步所要执行的程序或过程。
(3)数据定义语句(DD):用于描述应用程序所需要的数据文件。
JOB语句是JCL中的第一个控制语句。
语法 (Syntax):
//JobName JOB Positional-param(非必须) Keyword-param
有位置参数,可以有两种类型:
Account information
Programmer name
根据需要使用一个或多个参数,并用逗号分隔:
CLASS参数的有效值是A到Z字符和0到9数字(长度为1)
PRTY 参数的有效值0到15之间的数字,数字越高,优先级越高。
NOTIFY=“userid | &SYSUID” 此处系统将消息发送给用户“userid”,但如果我们使用NOTIFY =&SYSUID,则将消息发送给提交JCL的用户。
MSGCLASS=CLASS CLASS的有效值可以是“A”到“Z”和“0”到“9”。
MSGLEVEL=( ST, MSG )
当ST = 0时,仅限Job语句。
当ST = 2时,仅输入JCL。
当MSG = 0时,在异常作业完成时写入分配和终止消息。
当MSG = 1时,无论工作完成的性质如何,都会写入分配和终止消息。
每个JCL都可以由许多工作步骤组成。 每个作业步骤可以直接执行程序或者可以调用程序,该程序又执行一个或多个程序(作业步骤)。
语法 (Syntax):
//StepName EXEC Positional-param, Keyword-param (非必须)
Positional-param
这些是位置参数,可以有两种类型:
PGM这是指要在作业步骤中执行的程序名称。
PROC这是指在作业步骤中要执行的过程名称。
使用DD statement给出JCL中使用的每个数据集的定义。 需要在DD语句中描述作业步骤所需的输入和输出资源,其中包含数据集组织,存储要求和记录长度等信息。
语法 (Syntax):
//DD-name DD Parameters
DSN 参数引用新创建或现有数据集的物理数据集名称。
DISP 参数用于描述数据集的状态,在正常和异常完成时作业步骤结束时的处置。
DISP=(status, normal-disposition, abnormal-disposition)
以下是status有效值:
normal-disposition参数可以采用以下值之一
abnormal-disposition参数可以采用以下值之一
DCB 参数详细说明了数据集的物理特征。
DCB=(LRECL= ?,RECFM=?,BLKSIZE=?)
SPACE 参数指定DASD(直接访问存储磁盘)中数据集所需的空间。
SPACE=(spcunits, (pri, sec, dir), RLSE)
UNIT和VOL参数列在编目数据集的系统目录中,因此只能使用物理DSN名称进行访问。 但对于未编目的数据集,DD语句应包含这些参数。 对于要创建的新数据集,可以指定UNIT/VOL参数,或者Z/OS分配合适的设备和卷。
UNIT=DASD | SYSDA
VOL=REF=*.DDNAME
SYSOUT 参数根据指定的类将数据定向到输出设备。
SYSOUT=class
如果class为A,则它将输出定向到打印机,如果class为*则它将输出定向到JOB语句中MSGCLASS参数的目标。
//TTYYSAMP JOB 'TUTO',CLASS=A,MSGCLASS=X,
// NOTIFY=&SYSUID
//*
//STEP010 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//IN1 DD DSN=TUTO.SORT.INPUT1,DISP=SHR
//OUT1 DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(NEW,CATLG),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=28720),SPACE=(TRK,(10,20))
//SYSIN DD *
REPORT FILEIN(IN1) FILEOUT(OUT1)
数据集TUTO.SORT.INPUT1 复制到 新建数据集MYFILES.SAMPLE.OUTPUT1中。