再上一篇:3.3 DD 语句的关键字参数
上一篇:3.3.1 UNIT
主页
下一篇:3.3.3 SPACE
再下一篇:3.3.4 DSNAME
文章列表

3.3.2 VOLUME

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

通过 VOLUME 参数可以指定所引用的数据集所在的卷或卷组,也可以用来指定新建数 据集所在的卷或卷组。在使用这个参数时,用户可以指定一个特定的卷、一组卷、具有特定 序列号的卷或另外一个数据集所使用的卷。对于一个跨越多个卷的数据集来说,这个参数还 可以用来指定首先被处理的卷。对于一个新建的数据集来说,可以通过不指定 VOLUME 参 数或在 VOLUME 参数中不指定 SER 和 REF 子参数的方法在任何一个卷或卷组上创建该数 据集,我们称这种方法为非特定卷。
1.格式
{VOLUME} = ([PRIVATE] [,RETAIN] [,卷顺序号] [,卷数])
{VOL } [, ] [, ]
[SER=序列号 ] [SER=(序列号[,序列号]...) ]
[,] [REF=数据集名 ] [REF=*.DD 语句名 ]
[REF=*.作业步名.DD语句名 ] [REF=*.作业步名.过程作业步名. DD 语句名]
2.说明

PRIVATE: 申请一个私有的卷。这里的私有卷是指:

1.除非使用 VOLUME=SER 子参数明确地请求这个卷,否则系统不会在这个卷上

分配输出数据集。

2.对于一个磁带卷来说,除非指定了RETAIN 子参数或在DISP 参数中指定PASS, 否则这个磁带卷将会在数据集关闭后被卸载。

3.对于一个可卸载的直接访问卷来说,这个卷将在数据集关闭后被卸载。

RETAIN:

对于一个私有的磁带卷来说,指定 RETAIN 子参数表示在数据集关闭后或在作业 步结束后,这个卷不会被卸载;对于一个公共的磁带卷来说,如果这个卷在作业中被卸
载,它将保留在相应的设备上。
卷顺序号:
用来在一个多卷的数据集确定开始处理的卷。卷顺序号为 1~255 的十进制数,第一 个卷的顺序号为 1,卷的顺序号必须小于等于数据集所占用的实际卷数,否在作业将会 失败。如果不指定卷顺序号,则系统从 1 开始处理。
对于一个新数据集系统将忽略所指定的卷顺序号。 卷数:
用来确定一个输出数据集所申请的卷的最大数量。卷数为 1~255 的一个十进制数, 在一个作业步中所有的 DD 语句中的卷数总和不能超过 4095。

SER=序列号

SER=(序列号[,序列号]...)

通过卷的序列号用来确定数据集占用或将占用那些卷。一个卷的序列号为 1~6 个字 符可以包含字母、数字和$、#、@等特殊字符。不足 6 位的序列号将被空格填满。
在一条 DD 语句中最多可以指定 255 个卷序列号。不要在一个 SER 子参数中指定 重复的序列号,无论是磁带卷还是磁盘卷,每个卷都应该有唯一的卷序列号。
不要将序列号指定为 SCRTCH、PRIVAT 或 Lnnnnn (L 后有五个数字),这些名字已 经被用在请求操作员装载卷的消息中;不要将序列号指定为 MIGRAT,这个名字被

DFHSM(Data Facility Hierarchical Storage Manager)用来做数据集的移植。

REF=数据集名

REF=*.DD 语句名

REF=*.作业步名.DD 语句名

REF=*.作业步名.过程作业步名.DD 语句名 用来表示系统将从其它的数据集或前面的 DD 语句中获得卷序列号的信息。
3.实例
例 1

//DD1 DD DSNAME=DATA3,UNIT=3340,DISP=OLD,

// VOLUME=(PRIVATE,SER=548863)

在这个 DD 语句中指定了一个已存在的数据集,这个数据集位于一个直接访问的卷上,
卷的序列号为 548863。由于指定了 PRIVATE,系统将不会将这个卷分配给另外一个申请非 特定卷的数据集,在当前作业结束时系统将会释放这个卷。
例 2

//DD2 DD DSNAME=QUET,DISP=(MOD,KEEP),UNIT=(3400-5,2),

// VOLUME=( , , ,4,SER=(96341,96342))

这条 DD 语句中指定了一个已存在的数据集,这个数据集跨越两个卷,卷的序列号分别
为 96341 和96342。如果需要,可以在 VOLUME 参数中指定 4 个卷,当需要更多的空间时, 系统会分配第三和第四个卷。
例 3

//DD3 DD DSNAME=QOUT,UNIT=3400-5

这个 DD 语句中定义了一个在作业步中创建并在同一作业步中被删除的数据集。通过不
指定 VOLUME 参数表明在卷的分配上采用非特定卷的方式。 例 4

//DD4 DD DSNAME=NEWDASD,DISP=(,CATLG,DELETE),UNIT=3350,

// VOLUME=SER=335006,SPACE=(CYL,(10,5))

创建了一个新的数据集,这个数据集位于序列号为 335006 的卷上,这个卷是位于特定
的 3350 设备上的永久卷。 例 5

//OUTDD DD DSNAME=TEST.TWO,DISP=(NEW,CATLG),

// VOLUME=( , , , 3,SER=(333001,333002,333003)),

// SPACE=(TRK,(9,10)),UNIT=(3330,P)

//NEXT DD DSNAME=TEST.TWO,DISP=(OLD,DELETE)

在 DD 语句 OUTDD 中创建了一个多卷数据集并且对这个数据集进行编目,当然如果这
个数据集不需要这么多卷的话,可以使用较少的卷。在 DD 语句 NEXT 中删除了这个数据 集。
如果用户在多个卷上对数据集进行编目而实际上数据集仅使用了减少的卷的话,那么当 系统删除这个数据集时下列信息将会被加入到作业日志中。

IEF285I TEST.TWO DELETED IEF285I VOL SER NOS=333001,333003.

IEF283I TEST.TWO NOT DELETED IEF283I VOL SER NOS=333002 1.

IEF283I TEST.TWO UNCATALOGED IEF283I VOL SER NOS=333001,333002,333003.

但如果数据集使用了所有分配给它的卷的话,当系统删除这个数据集时作业日志中将会
包含下列信息。

IEF285I

TEST.TWO

DELETED

IEF285I

VOL SER NOS=333001,333002,333003.

例 6

//STEP1 EXEC PGM=....

//DD1 DD DSN=OLD.SMS.DATASET,DISP=SHR

//DD2 DD DSN=FIRST,DISP=(NEW,CATLG,DELETE),VOL=REF=*.DD1

//STEP2 EXEC PGM=...

//DD3 DD DSN=SECOND,DISP=(NEW,CATLG,DELETE),VOL=REF=*.STEP1.DD1

在作业步 STEP1 中的 DD 语句 DD1 标志了一个 SMS 数据集 OLD.SMS.DATASET,在
作业步STEP1 中的DD 语句DD2 和STEP2 中的DD 语句DD3 分别创建了一个SMS 数据集, 数据集的属性引用在 DD1 中标志的数据集的属性。