JCL - DD 语句



数据集是大型机文件,其记录以特定格式组织。数据集存储在大型机的直接存取存储设备 (DASD) 或磁带上,是基本的数据存储区域。如果需要在批处理程序中使用/创建这些数据,则在 JCL 中对文件(即数据集)物理名称以及文件格式和组织进行编码。

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

语法

以下是 JCL DD 语句的基本语法

//DD-name DD Parameters

描述

让我们看看上面 DD 语句语法中使用的术语的描述。

DD-NAME

DD-NAME 标识数据集或输入/输出资源。如果这是 COBOL/汇编程序使用的输入/输出文件,则程序在其中引用该文件。

DD

这是用于将其识别为 DD 语句的关键字。

参数

以下是 DD 语句的各种参数。您可以根据需要使用一个或多个参数,并且它们之间用逗号分隔

参数 描述
DSN

DSN 参数指的是新创建或现有数据集的物理数据集名称。DSN 值可以由 1 到 8 个字符长度的子名称组成,用句点分隔,总长度为 44 个字符(字母数字)。以下是语法

DSN=物理数据集名称

临时数据集仅在作业期间需要存储空间,并在作业完成后删除。此类数据集表示为DSN=&name或根本不指定 DSN。

如果作业步骤创建的临时数据集要在下一个作业步骤中使用,则将其引用为DSN=*.stepname.ddname。这称为反向引用。

DISP

DISP 参数用于描述数据集的状态,以及在作业步骤正常和异常完成时结束时的处理方式。仅当数据集在同一作业步骤中创建和删除时(如临时数据集),DD 语句中不需要 DISP。以下是语法

DISP=(状态, 正常处理方式, 异常处理方式)

以下是状态的有效值

  • NEW:数据集由作业步骤新创建。上面示例中的 OUTPUT1。

  • OLD:数据集已创建,将在作业步骤中被覆盖。作业步骤获得对数据集的独占访问权限,在作业步骤完成之前,其他任何作业都无法访问此数据集。

  • SHR:数据集已创建,将在作业步骤中读取。多个作业可以同时读取该数据集。示例:INPUT1 和 INPUT2。

  • MOD:数据集已创建。当需要将新记录追加到现有数据集时(不会覆盖现有记录),将使用此处理方式。

正常处理方式参数可以采用以下值之一

  • CATLG、UNCATLG、DELETE、PASS 和 KEEP

异常处理方式参数可以采用以下值之一

  • CATLG、UNCATLG、DELETE 和 KEEP

以下是 CATLG、UNCATLG、DELETE、PASS 和 KEEP 参数的描述

  • CATLG:数据集保留在系统目录中。

  • UNCATLG:数据集保留,但系统目录条目被删除。

  • KEEP:保留数据集,而不更改任何目录条目。KEEP 是 VSAM 文件的唯一有效处理方式。这仅用于永久数据集。

  • DELETE:从用户和系统目录中删除数据集。

  • PASS:这仅对正常处理方式有效。当需要传递数据集并在 JCL 中的下一个作业步骤中进行处理时使用。

如果未指定 DISP 的任何子参数,则默认值为:

  • 状态:NEW 是默认值。

  • 正常处理方式:如果状态为 NEW,则默认正常处理方式为 DELETE,否则为 KEEP。

  • 异常处理方式:与正常处理方式相同。

DCB

数据控制块 (DCB) 参数详细说明了数据集的物理特性。此参数对于在作业步骤中新创建的数据集是必需的。

LRECL 是数据集中每个记录的长度。

RECFM 是数据集的记录格式。RECFM 可以保存 FB、V 或 VB 值。FB 是固定块组织,其中一个或多个逻辑记录分组在一个物理块中。V 是可变组织,其中一个可变长度逻辑记录放置在一个物理块中。VB 是可变块组织,其中一个或多个可变长度逻辑记录放置在一个物理块中。

BLKSIZE 是物理块的大小。块越大,FB 或 VB 文件的记录数就越多。

DSORG 是数据集组织的类型。DSORG 可以保存 PS(物理顺序)、PO(分区组织)和 DA(直接组织)值。

当需要将一个数据集的 DCB 值复制到同一作业步骤或 JCL 中的另一个数据集时,将其指定为 DCB=*.stepname.ddname,其中 stepname 是作业步骤的名称,ddname 是复制 DCB 的数据集。

请查看下面的示例,其中 RECFM=FB、LRECL=80 构成数据集 OUTPUT1 的 DCB。

SPACE

SPACE 参数指定 DASD(直接存取存储磁盘)中数据集所需的存储空间。以下是语法

SPACE=(空间单位, (主空间, 次空间, 目录), RLSE)

以下是所有使用参数的描述

  • 空间单位:可以是 CYL(柱面)、TRK(磁道)或 BLKSIZE(块大小)之一。

  • 主空间:这是数据集所需的主存储空间。

  • 次空间:当主存储空间不足时,这是所需的额外存储空间。

  • 目录:如果数据集是包含成员的 PDS(分区数据集),则这是所需的目录块。

  • 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=类别

其中,如果类别为 A,则将其输出定向到打印机,如果类别为*,则将其输出定向到与 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=*
广告