首页 > 解决方案 > 具有多个输入文件的 IEBGENER

问题描述

我是大型机的新手。我有一份工作,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个文件吗?

标签: mainframejclutilities

解决方案


简短的回答是肯定的。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。


推荐阅读