当前位置: 首页 > 工具软件 > JCL > 使用案例 >

JCL入门教程

连正信
2023-12-01

JCL是什么

作业控制语言(JCL)是多虚拟存储(MVS)的命令语言,它是IBM大型机计算机中常用的操作系统。 JCL识别要执行的程序,所需的输入和输入/输出的位置,并通过作业控制语句通知操作系统。

JCL三大要素:JOB,EXEC,DD
(1)作业语句(JOB):标识一个作业的开始,提供必要的运行参数。
(2)执行语句(EXEC):标识一个作业步的开始,定义本作业步所要执行的程序或过程。
(3)数据定义语句(DD):用于描述应用程序所需要的数据文件。

JOB

JOB语句是JCL中的第一个控制语句。

语法 (Syntax):
	//JobName JOB  Positional-param(非必须) Keyword-param

Positional-param

有位置参数,可以有两种类型:

Account information
Programmer name

Keyword-param

根据需要使用一个或多个参数,并用逗号分隔:

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时,无论工作完成的性质如何,都会写入分配和终止消息。

EXEC

每个JCL都可以由许多工作步骤组成。 每个作业步骤可以直接执行程序或者可以调用程序,该程序又执行一个或多个程序(作业步骤)。

语法 (Syntax):
//StepName EXEC Positional-param, Keyword-param (非必须)

Positional-param
这些是位置参数,可以有两种类型:

PGM这是指要在作业步骤中执行的程序名称。
PROC这是指在作业步骤中要执行的过程名称。

DD(重要)

使用DD statement给出JCL中使用的每个数据集的定义。 需要在DD语句中描述作业步骤所需的输入和输出资源,其中包含数据集组织,存储要求和记录长度等信息。

语法 (Syntax):
//DD-name DD Parameters

DSN 参数引用新创建或现有数据集的物理数据集名称。

DISP 参数用于描述数据集的状态,在正常和异常完成时作业步骤结束时的处置。
DISP=(status, normal-disposition, abnormal-disposition)

以下是status有效值:

  • NEW :数据集由作业步骤新创建。
  • OLD :数据集已创建,将在作业步骤中被覆盖。
  • SHR :数据集已经创建,将在作业步骤中读取。 数据集可以同时由多个作业读取。
  • MOD :数据集已经创建。 当需要将新记录附加到现有数据集时将使用此处置(现有记录不会被覆盖)

normal-disposition参数可以采用以下值之一

  • CATLG :数据集通过系统目录中的条目保留。
  • UNCATLG :保留数据集,但删除系统目录条目。
  • DELETE :从用户和系统目录中删除数据集。
  • PASS :这仅适用于正常处置。 当数据集由JCL中的下一个作业步骤传递和处理时使用

abnormal-disposition参数可以采用以下值之一

  • CATLG,UNCATLG,DELETE和KEEP

DCB 参数详细说明了数据集的物理特征。

DCB=(LRECL= ?,RECFM=?,BLKSIZE=?)

  • LRECL是数据集中保存的每条记录的长度
  • RECFM是数据集的记录格式。 RECFM可以保存值FB,V或VB。
  • BLKSIZE是物理块的大小

SPACE 参数指定DASD(直接访问存储磁盘)中数据集所需的空间。

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

  • spcunits :这可以是CYL(Cylinder),TRK(Tracks)或BLKSIZE(Block Size)之一。
  • pri :这是数据集所需的主要空间。
  • sec :当主要空间不足时,这是所需的额外空间。
  • dir :如果数据集是包含成员的PDS(分区数据集),则这是所需的目录块。
  • RLSE :用于在作业完成时释放未使用的空间。

UNITVOL参数列在编目数据集的系统目录中,因此只能使用物理DSN名称进行访问。 但对于未编目的数据集,DD语句应包含这些参数。 对于要创建的新数据集,可以指定UNIT/VOL参数,或者Z/OS分配合适的设备和卷。

UNIT=DASD | SYSDA
VOL=REF=*.DDNAME

SYSOUT 参数根据指定的类将数据定向到输出设备。
SYSOUT=class
如果class为A,则它将输出定向到打印机,如果class为*则它将输出定向到JOB语句中MSGCLASS参数的目标。

例子 (Example)

//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中。

 类似资料: