再上一篇:6. PARM
上一篇:PARM[.过程步名]= 子参数 PARM[.过程步名]=( 子参数, 子参数) PARM[.过程步名]=(‘子参数’, 子参数) PARM[.过程步名]=’子参数, 子参数’
主页
下一篇:3.3 DD 语句的关键字参数
再下一篇:3.3.1 UNIT
文章列表

3.2.5 DD 语句

IBM S390 系统管理基础(zSeries,IBMSystemz, z/VM,zOS等操作系统使用,命令的参数与用法等)

数据定义语句(DD 语句)用于定义一个数据集以及该数据集所需的输入输出资源。DD 语句相对与前面介绍过的 JOB 语句和 EXEC 语句来说,其参数的定义、子参数的设置要复 杂一些,在本小节内我们将仅讨论 DD 语句的一般规则以及部分位置参数,关于 DD 语句的 一些常用参数以及特殊用法我们将用单独的一节讨论。
一、格式:

//[dd 名 ] DD [位置参数][,关键字参数]… [注释] [过程步名.dd 名]

//[dd 名 ] DD [过程步名.dd 名]

二、dd 名
“dd 名”是为 DD 语句定义的名字,它由 1~8 个字母或通配符开头的字符数字构成。 在一个作业步内可以有多个 DD 语句,但每个 DD 语句的 dd 名在本作业步中应该是唯一确 定的。“dd 名”可以由系统定义也可以由用户自己定义,当用户需要调用公用程序时,需根 据公用程序的具体要求选用系统定义的“dd 名”。用户自定义的“dd 名”不可与系统定义“dd 名”相重复。系统定义“dd”名有如下几个:

JOBCAT SYSCHK JOBLIB SYSCKEOV STEPCAT SYSIN STEPLIB SYSMDUMP SYSBEND SYSDUMP JES2 子系统中:

JESJCLIN JESMSGLG JESJCL JESYSMSG JES3 子系统中:

JCBIN JESJCL JS3CATLG

JCBLOCK JESMSGLG J3JBINFO JCBTAB JOURNAL J3SCINFO JESJCLIN JOURNAL J3STINFO JESInnnn JESYSMSG STCINRDR

TSOINRDR

用户子定义“dd 名”可以根据数据的用途,遵循“dd 名”的规则来命名,当为应用程 序输入输出结果定义数据集时,“dd 名”的命名规则取决于程序所用语言的类型。汇编语言 由 DCB 宏指令指定;COBOL 预言有 ASSIGN 子名指定;PL/1 语言由 DECLARE 语句指定; FORTRAN 语言由 READ 或 WRITE 语句中的通道号构成。
三、参数

DD 语句的参数也分为位置参数及关键字参数,这些参数都是可选的。每个 DD 语句只 能有一个位置参数,但根据需要可以有个关键字参数。位置参数有“*”、“DATA”和 “DUMMY”。在本小节中将只介绍位置参数的使用,关键字参数将在下一节中介绍。

1.参数“*”

参数“*”用于开始一个流内数据集。数据记录跟在“DD ”语句之后,其第一、二列 不能是“//”或“/*”;该记录可以是任何编码,如 EDCBIC。下列符号表明流内数据记录的 结束:

·输入流中的“/*”。

·表示另一个 JCL 语句开始的“//”。 当数据记录中需以“//”开始时,就必须使用 DATA 参数来代替“*”参数。 格式:

//dd 名 DD *[,参数]… [注释]

例 1.

//INPUT1 DD *

·

·

data

·

//INPUT2 DD *

·

·

data

·

/*

例 2.

//INPUT3 DD *,DSNAME=&&INP3

·

data

·

/*

例 3.

//STEP2 EXEC PROC=FRESH

//SETUP.WORK

//SETUP.INPUT1

DD DD

UNIT=3400-6,LABEL=(,NSL)

*

·

·

data

·

/*

//PRINT.FRM

DD

UNIT=180

//PRINT.INP

DD

·

*

·

data

·

/*

例 3 在输入流中定义了两组数据。DD 语句“SETUP.INPUT1”定义的输入数据将被编 目过程中名为“SETUP”的过程步使用。而 DD 语句“PRINT.INP”定义的输入数据将被编 目过程中名为“PRINT”的过程步使用。

2. DATA

用作一个流内数据集的开始,该流内数据集里含有以“//”开头的语句。数据记录紧跟 在“DD DATA”语句之后;该数据记录可以是 BCD 或 EDCBIC 编码。数据记录将以“/*” 作为结束。
格式:

//dd 名 DD DATA[,参数]… [注释]

例 1.

//GROUP1 DD DATA

·

·

data

·

//GROUP2 DD DATA

·

·

data

·

/*

例 2.

//GROUP3 DD DATA,DSNAME=&&GRP3

·

data

·

/*

例 3.

//STEP2 EXEC PROC=UPDATE

//PREP.DD4 DD DSNAME=A.B.C,UNIT=3350,VOLUME=SER=D88230

// SPACE=(TRK,(10,5)),DISP=(,CATLG,DELETE)

//PREP.IN1 DD DATA

·

·

data

·

/*

//ADD.IN2 DD *

·

·

data

·

/*

3.DUMMY

DUMMY 参数用于标明:

(1) 没有设备或外存空间分配给该数据集。
(2) 对该数据集不进行状态处理。
(3) 对 BASM 或QSAM 来说,不对该数据集作输入输出操作。
用户使用 DUMMY 参数对程序进行测试。当测试完成时,如果用户希望恢复对数据集 的输入输出操作时,只需将DD DUMMY 参数替换成完整的数据集定义DD 语句。DUMMY 的另一个用途是在编目或流内过程中,这将会在本章后续节中讨论。
格式:

//dd 名 DD DUMMY[,参数]…

所有在 DUMMY 语句中的参数必须在语法上是正确的。系统将对他们进行语法检查。 例 1.

//OUTDD1 DD DUMMY,DSNAME=X.X.Z,UNIT=3380,

// SPACE=(TRK,(10,2)),DISP=(,CATLG)

本例中 DD 语句“OUTDD1”定义了一个空数据集。该语句中除 DUMMY 以外的参数 将接受系统语法检查但并不起作用。