这是去上海的前一天写的,当时我是多么的兴奋,多么的对未来充满幻想,现在一切尽不在掌握之中,我的心情有点郁闷。。。
今天是去上海的前一天,我们去办理入职手续,同学们穿起正装还是人模狗样的嘛,哈哈,有点搞。。。
办理On Board手续之郁闷,一切尽在不言中。。。
继续练习JCL,虽说速度确实有点慢,可是我也尽力了,时间有限啊,我也不是那种只顾着学习的人,常去的BLOG还是要看,枪枪三人行也要看,还要关注一下WAR3,关注一下出了什么碟子,还要听音乐,一天的空闲时间就那么多,所以也就只有这点时间来学大机了。前几天练习了基本语法以及系统实用程序IEFBR14,以及IEBGENER的基本用法,凡是涉及到流内控制语句的就先放下了,不太看得懂,然后今天就轮到IEBCOPY了,不过先把前面的EFBR14,以及IEBGENER进行一个总结,但是首先应该注意的一点是凡是以IEB打头的数据集实用程序均不可用于VSAM数据集!
IEFBR14
IEFBR14 是一个不含控制语句的实用程序,它可以用来创建或删除磁盘数据集。下面
是它的应用实例:
例 . 数据集的删除
//DELETE JOB …
// EXEC PGM=IEFBR14
//DD1 DD DSN=data.set.name,DISP=(OLD,DELETE)
/*
需要注意的是,如果要删除的数据集已编目,用户不能在指定UNIT 或者VOL=SER 参
数。如果用户指定了以上参数,那么数据集虽然同样被删除,但不能被反编目。(其实我现在连这几个参数的实际意义,编目,反编目都理解得不大好,失败)。
IEBGENER 程序主要用于:
(1) 建立顺序数据集、分区数据集或扩展分区数据集成员的备份。这个拷贝可以是磁带到磁带、磁盘到磁盘或磁盘到磁带。注意:如果需要将备份数据集放在原数据集所在的卷,它们两者不能同名。
(2 )从顺序数据集产生分区数据集或扩展分区数据集。通过实用程序控制语句,将顺序数据集逻辑化分为若干个记录组并为其分配成员名,之后 IEBGENER程序把这些新建的成员放到指定的分区数据集或扩展分区数据集中。注意:对于含有跨区记录的数据集不能产生分区数据集或扩展分区数据集。
(3)为分区数据集添加新成员。IEBGENER 程序将输入的顺序数据作为一个成员加到指定的分区数据集或扩展分区数据集中。
(4 )产生一个编辑的顺序数据集、分区数据集或扩展分区数据集。通过使用实用程序控制语句,指定一个或一组记录或整个数据集的编辑信息。
(5) 处理含有双字节字符数据集。用 IEBGENER 可以拷贝、编辑、重新组块或打印含有双字节字符(DBCS)的数据,也可以将含有DBCS 数据的顺序数据集转换 成为分区数据集。
(6) 打印顺序数据集、分区数据集或扩展分区数据集的成员。
(7) 对数据集的逻辑记录进行重新组块或改变其长度。
(8) 为顺序输出数据集拷贝用户标号。
(9) 为用户例程提供编辑设施及出口,该例程用于处理标号、受控输入数据及永久性输入输出错误。
下面是IEBGENER 的作业控制语句列表:
语 句 |
说 明 |
JOB |
作业初始 |
EXEC |
指定程序名PGM=IEBGENER |
SYSPRINT DD |
指定系统输出数据集 |
SYSUT1 DD |
定义输入数据集 |
SYSUT2 DD |
定义输出数据集 |
SYSIN DD |
定义控制数据集,控制语句可以是GENERATE、EXITS、LABELS、MEMBER、RECORD
|
控制语句说明:
GENERATE:指明成员名和别名数、记录标识符、文字及控制数据集中的编辑信息。
EXITS:指明用户出口例程。
LABELS:特指用户标号处理。
MEMBER:指定新建分区数据集或扩展分区数据集的成员名或成员别名。
RECORD:定义将处理的记录组并提供编辑信息。
例 1.//PRINT JOB …
//STEP1 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=A
//SYSIN DD DUMMY
//SYSUT1 DD DSN=INPUT,UNIT=3380,DISP=SHR,
// DCB=(RECFM=F,LRECL=80,BLKSIZE=80),VOL=SER=111112
//SYSUT2 DD SYSOUT=A,DCB= DCB=(RECFM=F,LRECL=80,BLKSIZE=80)
上面是一个打印顺序数据集的例子。由于该作业不需要公用程序的控制语句,因此SYSIN DD 语句定义了空数据集DUMMY,SYSUT1 定义了输入顺序数据集INPUT,SYSUT2
定义了输出数据集的输出设备,其中DCB 参数用于改变数据输出格式。
下面正式开始
IEBCOPY:
IEBCOPY系统实用程序的功能是拷贝,压缩和合并分区数据集以及扩展分区数据集,变更分区数据集或者扩展分区数据集的成员,为选择的成员更换新名,对加载模块进行拷贝和重新组块。
下面是IEBCOPY 的作业控制语句列表:
语 句 |
说 明 |
JOB |
作业初始 |
EXEC |
定义程序名PGM=IEBCOPY |
SYSPRINT DD |
定义由IEBCOPY 产生的系统输出信息 |
SYSUT1 DD |
定义输入的分区数据集或扩展分区数据集 |
SYSUT2 DD |
定义输出的分区数据集或扩展分区数据集 |
SYSUT3 DD |
定义一个溢出数据集,该语句在没有足够的虚拟空间存放输入的分区数据集或扩展分区数据集目录入口时使用 |
SYSUT4 DD |
定义一个溢出数据集,该语句在没有足够的虚拟空间存放输出的分区数据集或扩展分区数据集目录入口时使用 |
SYSIN DD |
定义控制语句,可在这里定义的语句有:COPY 、ALTERMOD 、COPYMOD、SELECT、EXECLUDE |
下面对控制语句进行说明:
COPY:启动一个或多个拷贝、写在或加载操作。其格式为;
label COPY OUTDD=ddname
,INDD=({ddname | (ddname,R)},…)
,LIST={YES|NO}
操作数说明:
“OUTDD=ddname”:指定输出的分区数据集名,这里的ddname 必须是本作业步中的一个DD 语句名。
“INDD=({ddname | (ddname,R)},…)”:指定输入分区数据集或扩展分区数据集,对于卸载操作只能指定一个ddname,这里的R 表示从输入的数据集中选择所有的成员进行相应的操作,此时不需设置 SELECT 语句。
“LIST={YES|NO}”:指出是否将拷贝的成员名列在SYSPRINT 数据集中,取值为YES
时将成员名列表。
需要注意的是:
(1)如果为拷贝操作,输入数据集和输出数据集必须是分区数据集、扩展分区数据集或卸载模块结果的顺序数据集;
(2)如果是加载操作(什么是加载操作啊?),输入数据集必须是分区数据集或顺序数据集,而输出数据集则必须是分区数据集;
(3)如果是卸载操作,输入数据集必须是分区数据集、扩展分区数据集或顺序分区数据集,输出数据集可以驻留在直接存取卷上,也可以驻留在磁带卷上。当驻留在磁带卷上时,它的组织结构必须是顺序数据集,且要指定省略目录或缩影值得
SPACE 参数:
ALTERMOD:指明加载模块变更的开始,其格式为:
label ALTERMOD OUTDD=ddname,LIST={YES|NO}
操作数说明:
“OUTDD=ddname”:指定要变更的数据集;