数据集是具有以特定格式组织的记录的大型机文件.数据集存储在直接访问存储设备(DASD)或主机磁带上,是基本数据存储区域.如果需要在批处理程序中使用/创建这些数据,则文件(即数据集)物理名称以及文件格式和组织将在JCL中编码.
使用 DD语句给出JCL中使用的每个数据集的定义.作业步骤所需的输入和输出资源需要在DD语句中描述,其中包含数据集组织,存储要求和记录长度等信息.
语法
以下是JCL DD语句的基本语法:
//DD-name DD Parameters
描述
让我们看看上面DD语句语法中使用的术语的描述.
DD-NAME
DD-NAME标识数据集或输入/输出资源.如果这是COBOL/Assembler程序使用的输入/输出文件,则该程序中该名称引用该文件.
DD
这是将其标识为DD语句的关键字.
PARAMETERS
以下是DD语句的各种参数.您可以根据需要使用一个或多个参数,并用逗号分隔:
参数 | 描述 |
---|---|
DSN | DSN参数是指新创建或现有数据集的物理数据集名称. DSN值可以由1到8个字符长度的子名组成,以句点分隔,总长度为44个字符(字母数字).以下是语法: DSN =物理数据集名称 临时数据集需要存储仅适用于作业持续时间,并在作业完成时删除.此类数据集表示为 DSN =& name ,或者只是没有指定DSN. 如果要在作业步骤中创建临时数据集下一个作业步骤,然后它被引用为 DSN = * .stepname.ddname .这称为向后引用. |
DISP | DISP参数用于描述数据集的状态,正常和异常完成时作业步骤结束时的处置.仅当在同一作业步骤(如临时数据集)中创建和删除数据集时,DD语句中才需要DISP.以下是语法: DISP =(状态,正常处置,异常处置) 以下有效状态的值:
normal-disposition 参数可以采用以下值之一
异常处置参数可以采用以下值之一
以下是CATLG,UNCATLG,DELETE,PASS和KEEP参数的说明:
当任何子参数时没有指定DISP,默认值如下:
|
DCB | 数据控制块(DCB)参数详细说明了数据集的物理特征.在作业步骤中新创建的数据集需要此参数. LRECL是数据集中保存的每条记录的长度. RECFM是数据集的记录格式. RECFM可以保存值FB,V或VB. FB是固定块组织,其中一个或多个逻辑记录在单个块内分组. V是可变组织,其中一个可变长度逻辑记录放置在一个物理块内. VB是可变块组织,其中一个或多个可变长度逻辑记录放置在一个物理块内. BLKSIZE是物理块的大小.块越大,FB或VB文件的记录数越大. DSORG是数据集组织的类型. DSORG可以保存值PS(物理顺序),PO(分区组织)和DA(直接组织). 当需要将一个数据集的DCB值复制到另一个数据集时相同的jobstep或JCL,则指定为DCB = * .stepname.ddname,其中stepname是作业步骤的名称,ddname是从中复制DCB的数据集. 检查在下面的示例中,RECFM = FB,LRECL = 80形成数据集OUTPUT1的DCB. |
SPACE | SPACE参数指定DASD(直接访问存储磁盘)中数据集所需的空间.以下是语法: SPACE =(spcunits,(pri,sec,dir),RLSE) 这里是所有使用参数的描述:
|
UNIT | UNIT和VOL参数列在编目数据集的系统目录中,因此只能使用物理DSN名称进行访问.但对于未编目的数据集,DD语句应包含这些参数.对于要创建的新数据集,可以指定UNIT/VOL参数,或者Z/OS分配合适的设备和卷. UNIT参数指定数据集所在的设备类型被储存了.可以使用硬件地址或设备类型组识别设备类型.以下是语法: UNIT = DASD | SYSDA 其中DASD代表直接访问存储设备,SYSDA代表系统直接访问,并引用下一个可用的磁盘存储设备. |
VOL | VOL参数指定由UNIT参数标识的设备上的卷编号.以下是语法: VOL = SER =(v1,v2) 其中v1,v2是卷序列数字.您也可以使用以下语法: VOL = REF = * .DDNAME REF是落后的地方在JCL的任何前面的作业步骤中引用数据集的卷序列号. |
SYSOUT | 到目前为止讨论的DD语句参数对应于存储在数据集中的数据. SYSOUT参数根据指定的类将数据定向到输出设备.以下是语法 SYSOUT = class 如果类是A,那么它将输出定向到打印机,如果class是 * 然后它将输出指向与JOB语句中MSGCLASS参数相同的目标. |
示例
以下是一个示例,它使用了DD语句以及上面解释的各种参数:
//TTYYSAMP JOB 'TUTO',CLASS=6,MSGCLASS=X,REGION=8K,// NOTIFY=&SYSUID//*//STEP010 EXEC PGM=ICETOOL,ADDRSPC=REAL//*//INPUT1 DD DSN=TUTO.SORT.INPUT1,DISP=SHR//INPUT2 DD DSN=TUTO.SORT.INPUT2,DISP=SHR,UNIT=SYSDA,// VOL=SER=(1243,1244)//OUTPUT1 DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),// RECFM=FB,LRECL=80,SPACE=(CYL,(10,20))//OUTPUT2 DD SYSOUT=*