flds:jcl实验——iebgener的使用 2024-04-22 12:44:31 0 0 实验目的 练习使用jcl 学习iebgener的使用 实验要求 熟悉运用jcl, 阅读utilities 中关于iebgener的用法,编写jcl验证 实验过程 实例一: 源程序 ****** ***************************** Top of Data ***************************** 000100 //UR644CP1 JOB ,MARTIN,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID 000200 //**此步执行将in-stream复制入分区数据集的成员中*********************** 000300 //CP2FILE EXEC PGM=IEBGENER 000400 //SYSUT1 DD * 000500 MARTIN 200992403 19901031 000600 FEDORA 200882463 19891209 000700 VENCET 203311214 19898791 000800 /* 000900 //SYSUT2 DD DSN=UR644.JCL.OUTPUT(CP1#OUT),DISP=(NEW,CATLG,DELETE), 001000 // SPACE=(TRK,(1,1,1)),RECFM=FB,LRECL=80,UNIT=SYSDA,VOL=SER=URVOL4 001100 //SYSPRINT DD SYSOUT=* 001200 //SYSIN DD DUMMY 001300 //**此步实现将分区数据集中成员复制到输出队列中************************ 001400 //CP2STM EXEC PGM=IEBGENER 001500 //SYSUT1 DD DSN=UR644.JCL.OUTPUT(CP1#OUT),DISP=SHR 001600 //SYSUT2 DD SYSOUT=* 001700 //SYSPRINT DD SYSOUT=* 001800 //SYSIN DD DUMMY 001900 //********此步实现分区数据集之间成员的复制*************************** 002000 //CPFL2FL EXEC PGM=IEBGENER 002100 //SYSUT1 DD DSN=UR644.JCL.OUTPUT(CP1#OUT),DISP=SHR 002200 //SYSUT2 DD DSN=UR644.JCL.OUTPUT(CP2#OUT),DISP=(OLD,CATLG,DELETE), 002300 // LRECL=80,SPACE=(TRK,(1,1,1)) 002400 //SYSPRINT DD SYSOUT=* 002500 //SYSIN DD DUMMY ****** **************************** Bottom of Data **************************** 输出 第一作业部: ****** ***************************** Top of Data ************************ 000500 MARTIN 200992403 19901031 000600 FEDORA 200882463 19891209 000700 VENCET 203311214 19898791 ****** **************************** Bottom of Data *********************** 第二作业部:队列中的内容 ********************************* TOP OF DATA ************************** MARTIN 200992403 19901031 00050001 FEDORA 200882463 19891209 00060001 VENCET 203311214 19898791 00070001 ******************************** BOTTOM OF DATA ************************ 第三作业部: ****** ***************************** Top of Data ************************* 000500 MARTIN 200992403 19901031 000600 FEDORA 200882463 19891209 000700 VENCET 203311214 19898791 ****** **************************** Bottom of Data *********************** 分析 主要是DD语句的使用 l 第一步CP2FILE 实现从内部数据流将内容复制到数据集中,未指定控制参数 在此处遇到的错误 l 第二步 CP2STM 实现将内部数据流输出,未指定控制参数 l 第三步 CPFL2FL 实现数据集之间内容的复制,未指定控制参数 遇到错误: u 在定义SYSUT2中space is not specified.加上space参数定义就好了 u 在运行时,定义SYSUT2的DD语句失败,是因为文件已存在。删掉已有文件就行了 u 在对已经存在的数据集中添加成员时,disp定义为(new,catlg,delete),由于此数据集系统中本来就有,所以导致错误,改为(old,catlg,delete),正常了 实例二 源程序: 000100 //UR644CP2 JOB ,MARTIN,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID 000200 //*此步实现将数据进行分组,并换了各列的顺序**************************** 000300 //CHROWS EXEC PGM=IEBGENER 000400 //SYSUT1 DD DSN=UR644.JCL.OUTPUT(CP1#OUT),DISP=SHR 000500 //SYSUT2 DD DSN=UR644.JCL.OUTPUT,DISP=(OLD,CATLG,DELETE), 000600 // SPACE=(TRK,(1,1,1)) 000700 //SYSPRINT DD SYSOUT=* 000800 //SYSIN DD * 000900 GENERATE MAXNAME=3,MAXGPS=3,MAXFLDS=5 001000 MEMBER NAME=CP3#OUT 001100 GROUP1 RECORD IDENT=(6,'MARTIN',1),FIELD=(6,1,,11),FIELD=(9,8,,1), 001110 FIELD=(8,18,,18) 换第一列与第二列,将第一行记录导出 001200 MEMBER NAME=CP4#OUT 001300 GROUP2 RECORD IDENT=(6,'FEDORA',1) 将第二行导出 001400 MEMBER NAME=CP5#OUT 001500 GROUP3 RECORD IDENT=(6,'VENCET',1),FIELD=(7,1,,20),FIELD=(19,8,,1) 001600 // 将第一列与二三列互换,将第三列导出 ****** **************************** Bottom of Data **************************** 输出 分区数据集多了三个成员 原文件: 分析 主要是SYSIN中参数的使用方法将分区数据集中的成员数据当作输入,生成三个分区数据集的成员 l 将输入数据中从第一列开始出现6字符MARTIN那一行之前的数据包括这一行拿出来,将第一列与第二列对调,存入分区数据集的cp3#out 成员中 l 将输入数据中剩余部分从第一列开始出现6字符FEDORA那一行之前的数据包括这一行拿出来,存入分区数据集的cp4#out成员中 l 将输入数据中剩余部分从第一列开始出现6字符的VENCET那一行之前的数据包括这一行拿出来,将第一列与后两列的内容对调,出入分区数据集的cp5#out成员中 遇到错误 重复运行时,系统中已存在要创建的数据集导致运行失败,运行前删除同名文件即可 Generate语句中maxname,maxflds,maxgps定义过多,导致处理多个record或者是member语句时运行失败,将个数定位各语句执行的次数即可。 实验总结 l Iebgener Iebgener用于复制顺序数据集和分区数据集成员或创建数据集 具体功能: 复制顺序文件 u 可以用来重命名文件 u 当用于处理分区数据集的成员时,此程序不提供针对目录块的操作 从顺序数据集中构造分区数据集 l 当记录中有续行时,此功能不可用 l 生成分区数据集中新的成员 l 构造新的分区数据集 对记录进行编辑 l 更改记录的顺序 l 记录码制转换 l 将记录中特定内容,根据指定的参数进行替换 l 如果记录格式不为fb,此功能不可用 可以重新定义记录长度 l 只有输入数据集和输出数据集都是定长时,此功能才可用 输入/输出 SYSUT1 定义输入的数据集 顺序数据集或分区数据集的成员 记录格式不限,输入数据的记录格式必须可见,当为定长时,记录长度必须指定,格式默认为u,默认长度为80 SYSUT2 定义输出的数据集 顺序数据集或分区数据集的成员 SYSPRINT 定义存放消息输出的数据集 顺序数据集,可以是输出设备,或是磁盘上, 记录块的记录长度必须是121的整数倍 SYSIN 定义控制语句 当无编辑操作,输出为顺序时,可以为DUMMY,一般为内部数据流中,也可在磁盘中分区数据集的成员中。 记录块长度必须是80的整数倍 Sysin中涉及到的参数: Generate Maxname 定义生成的member的数量 必须大于Member出现次数 Maxflds 定义记录中有几个段用来编辑 必须等于field出现的次数, Maxgps 定义数据分成多少个组 等于或大于group标识出现的次数 Member Name 定义新成员的名字和别名 别和现有成员名重名 Record Ident 定义数据的分割行的特征 标志长,标志数据,输出列起始位置 field 定义对数据列的编辑操作 数据长,起始位置,转换,输出列起始位置 Exits Ioerror 定义用户的出错处理 转载于:https://www.cnblogs.com/martin-dlut/archive/2012/03/14/2395393.html 收藏(0)