IEBCOPY

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 ”:指定要变更的数据集;

   LIST={YES|NO} ”:指明是否将变更成员名列在 SYSPRINT  数据集中,取值为 YES

时,被变更的所有成员名列在 SYSPRINT 数据集中。

     COPYMOD :指明对拷贝和加载模块从新组块的操作,其格式为:

     label COPYMOD      OUTDD=ddname

                        ,INDD=({ddname | (ddname,R)},…)

                        ,MAXBLK={nnnn|nnK}

                        ,MINBLK={nnnn|nnk}

                           ,LIST={YES|NO}

     操作数说明:

     OUTDD=ddname ”:指定加载模块要拷贝到的分区数据集;

     INDD=({ddname | (ddname,R)}, ) ”:指定输入数据集名,该数据集是一个加载模块库,并在本作业的一个名为 ddname DD 语句中定义,这里的 R 表示从输入的数据集中选择所有的成员进行拷贝,并变更输出加载模块库中任何指定的成员名,此时不需设置 SELECT 语句;

     MAXBLK={nnnn|nnK} ”:指定输出分区数据集记录的最大块值,通常设置的值要小于缺省值,以便数据记录能和其它系统或程序兼容, nnnn 是一个十进制数, nnK 则表示 nn 千字节,其缺省值是输出数据集的块大小;

     MINBLK={nnnn|nnk} ”: 指定输出分区数据集记录的最小块值,缺省值为 1K

     LIST={YES|NO} ”:指明是否将变更成员名列在 SYSPRINT  数据集中,取值为 YES

时,被变更的所有成员名列在 SYSPRINT 数据集中。

     SELECT :确定输入数据集中要拷贝的成员名,其格式为:

     label  SELECT  MEMBER= {name1| name1 newname1,R | name1, ,R }|

           ,( name2 newname2 R | name2 ,, R } ,。。。)

     操作数说明:

     MEMBER= …”: name 确定拷贝的成员名; newname 确定拷贝输出的成员名,如果这个名字在输出分区数据集中已存在,则这个成员不被拷贝,除非同时设置 R 参数, newname ALTERMOD 不能同时使用。

     EXCLUDE :确定输入数据集中不被拷贝和不加载的成员,其格式为:

     label  EXCLUDE  MEMBER= name1 name2 ,…)

     下面是几个实例:

     1

     //COPY   JOB…

     //JOBSTEP   EXEC     PGM=IEBCOPY

     //SYSPRINT    SYSOUT=A

//SYSUT1   DD    DSN=DATASET5,UNIT=disk,VOL=SER=111113,

     //               DISP=SHR

     //SYSUT2   DD    DSN=DATASET4,UNIT=disk,VOL=SER=111112,

     //         DISP=(NEW,KEEP),SPACE=(TRK,(5,1,2))

 

     上面是一个拷贝整个数据集的例子。在该例中, SYSOUT1  DD 定义一个含有两个成员的分区数据集 DATASET5 SYSUT2 DD 定义一个新的分区数据集 DATASET4 ,并为它分配

5 个磁道,其中两个磁道分配给目录区。在这个例子中不需要 SYSIN DD 语句,它把数据集

DATASET5 的所有成员都拷贝到数据集 DATASET4 中。

     2

     //COPY   JOB   …

     //JOBSTEP   EXEC     PGM=IEBCOPY

     //SYSPRINT    DD   SYSOUT=*

     //OUT1        DD   DSN=DATESET1,UNIT=disk,VOL=SER=111112,

     //            DISP=(OLD,KEEP)

     //IN6        DD    DSN=DATASET6,UNIT=disk,VOL=SER=111115,

     //           DISP=OLD

     //IN5        DD    DSN=DATASET5,UNIT=disk,VOL=SER=111116,

     //           DISP=(OLD,KEEP)

     //SYSUT3     DD    UNIT=SYSDA,SPACE=(TRK,(1))

     //SYSUT4     DD    UNIT=SYSDA,SPACE=(TRK,(1))

     //SYSIN      DD   *

         COPYOPER       COPY    OUTDD=OUT1

              INDD=IN5,IN6

              SELECT     MEMBER=(B,,R),A)

     /*

     上面是一个拷贝、置换被选择的数据集成员的例子。在该例中:

     OUT1 DD 语句定义含有三个成员( A B F )的分区数据集 DATASET1

     IN6 DD 语句定义含有三个成员( B C F )的分区数据集 DATASET6

     IN5 DD 语句定义含有两个成员( A C )的分区数据集 DATASET5

     SYSUT3 SYSUT4 DD 语句定义临时溢出数据集,并为它们分配一个磁道;

     SYSIN DD 语句定义流内控制数据集,它包含一个 COPY 语句、一个 INDD 语句和一个 SELECT 语句。 OUTDD 参数指定 DATASET1 作为输出数据集, INDD 指定 DATASET5

为第一个处理的输入数据集,而 DATASET6  作为第二个处理的输入数据集,它的处理顺序

为:

1 )在 DATASET5 中查询所选择成员。

2 )首先查到成员 A ,但不拷贝到 DATASET1 中,因为 DATASET1 中已经含有成员 A 且没有设置 R 参数、。

3 )在 DATASET5 中未查到所需要的成员,继续在 DATASET6 中查找。

4 )找到成员 B 并拷贝到 DATASET1  中,虽然 DATASET1  中已经含有成员 B ,但在 这里设置了 R 参数。 SELECT 指定从输入数据集拷贝选择的成员到输入数据集。

 

     3

     //CONVERT     JOB   …

     //STEP1       EXEC     PGM=IEBCOPY

     //SYSPRINT    DD      SYSOUT=*

     //SYSUT1      DD      DSN=PDSSET,DISP=SHR,DSNTYPE=PDS

     //SYSUT2      DD      DSN=PDSSET,LINK=PDSSET,DSNTYPE=LIBRARY,

     //            DISP=(NEW,CATLG)

 

上面是一个分区数据集转换为扩展分区数据集的例子。在该例中, SYSUT1 DD 语句定义一个输入的分区数据集 PDSSET SYSUT2  DD 语句定义输出的扩展分区数据集 PDSE ,所有的扩展分区数据集都是由存储管理子系统( SMS )进行管理,其中 LINK 子参数为扩展分区数据集设置 DCB SPACE 特性, DSNTYPE 子参数指出新建数据集是扩展分区数据集而不是分区数据集。这里不需要 SYSIN DD 语句。

 

     4.

      //UNLOAD     JOB   …            

// EXEC PGM=IEBCOPY

//SYSPRINT DD SYSOUT=A

//SYSUT1    DD DSN=inpds,DISP=SHR

//SYSUT2    DD DSN=tape.dataset.name,UNIT=TAPE,

//  VOL=SER=tape#,LABEL=#,DISP=(NEW,PASS)

//SYSIN   DD DUMMY

/*

上面是将一个分区数据集转存为磁带上的顺序数据文件的例子。

 

5.

//UPLOAD JOB …

// EXEC PGM=IEBCOPY

//SYSPRINT DD SYSOUT=A

//SYSUT1    DD DSN=tape.dataset.name,DISP=(OLD,PASS),

//  UNIT=TAPE,VOL=SER=tape#,LABEL=#

//SYSUT2    DD   DSN=outpds,DISP=SHR

//SYSIN   DD   DUMMY

/*

上例是将一个转存为磁带上顺序文件的分区数据集按原有的 DCB 属性恢复到 DASD (假定该分区数据集已经存在)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值