具有多个输入文件的IEBGENER

时间:2018-10-23 06:58:36

标签: mainframe jcl utilities

我是大型机新手。 我有工作,在JCL中执行此步骤似乎有些混乱。

//*----------------------------------------------------------
//*       IEBGENER
//*----------------------------------------------------------
//GENER02  EXEC PGM=IEBGENER,COND=(8,LT)                     
//SYSPRINT DD   SYSOUT=I                                     
//SYSUT1   DD   DSN=&&FILE1,DISP=(OLD,DELETE)                
//         DD   DSN=&&FILE2,DISP=(OLD,DELETE)                
//         DD   DSN=&&FILE3,DISP=(OLD,DELETE)                
//SYSUT2   DD   DSN=&&OUT1,DISP=(NEW,PASS),              
//         SPACE=(TRK,(100,100),RLSE),UNIT=WORK,             
//         DCB=(LRECL=90,BLKSIZE=22950,RECFM=FB)             
//SYSIN    DD   *                                            
  GENERATE MAXLITS=100                                       
  RECORD FIELD=(20,'                    ',,1),               
         FIELD=(28,'                            ',,21),      
         FIELD=(16,'AB110000AB012561',,49),                  
         FIELD=(26,'                          ',,65)         
/*      

我知道IEBGENER是一个复制实用程序,但是具有3个输入文件和该参数,输出文件将是什么? 它会合并3个文件吗?

3 个答案:

答案 0 :(得分:4)

简短的回答是。 z / OS将DD语句中的所有DD卡连接到一个逻辑束中,然后一起处理它们。参见https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.ieab600/iea3b6_Syntax4.htm

更长的答案是,您正在从文件(z / OS术语中的数据集)的角度查看事物; z / OS的大部分结构都不是这种结构。 z / OS实用程序倾向于从某种面向数据的角度来看事物,通常称为记录或记录块。在上面的示例中,IEBGENER将查看通过SYSUT1给出的每个记录,进行一些处理(在此处记录:https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.idau100/u1132.htm),然后将输出写入SYSUT2。 IEBGENER甚至还没有真正意识到有多个输入数据集。它只是向操作系统询问SYSUT1中的下一条记录,然后z / OS将作出响应,然后IEBGENER告诉z / OS将输出记录写入SYSUT2。

答案 1 :(得分:1)

回答您的第二个问题,即输出的外观。这种编码方式看起来像是从输出中删除字段并在其位置放置空格。基本上是这样的:

输入记录

         1         2         3         4         5         6         7         8         9
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
This is my input data to IEBGENER so I can see what the output records will look like ....

输出记录
注意:_代表根据实用程序FIELD语句插入的空格。

         1         2         3         4         5         6         7         8         9
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
________________________________________________AB110000AB012561__________________________

有效地,IEBGENER作业不会复制任何数据,而是将一个文字放在输出数据集中。

您似乎还需要MAXFLDS = 4,否则您会收到一条消息:

IEB342I INVALID SPACE ALLOCATION

答案 2 :(得分:1)

如果您想在真正的大型机系统上进行练习,建议使用MVS 3.8 Turkey 4-系统。它从1980年的Free MVS 3.8开始,到1985年5月进行了系统修复,在带有用户开发程序的仿真器上运行,以替换某些受版权保护的软件,而其他丢失了。它在z / OS 2.3上可以完成的功能的99.99%,已更新了某些功能,并添加了其他功能。某些依赖更新功能的项目将无法运行。