使用SORT从输入文件中提取数据到不提供预期数据的其他输出文件中

时间:2018-11-15 14:07:08

标签: mainframe dfsort

我正在使用SORT处理输入文件并提取与三个不同条件匹配的记录。标准在控制语句中列出。我正在寻找与文本GROUND OPERATIONSTECHNICAL OPERATIAIRPORT TRANSFERS匹配的字段。我希望将与每个条件匹配的输入中的记录写入相应的输出文件。输出文件的DD分别为SORTOF01SORTOF02SORTOF03

我可以在输入文件中看到符合我的条件的记录,但是执行时SORT完成,但是未选择任何记录。我缺少了一些东西,但我不知道它是什么。下面提供了SORT的JCL和控制语句。

//PROB3   EXEC PGM=SORT                                      
//SORTIN  DD DSN=XXX.T.KR0Z1N99.RU02.FTPGEN.THOTLNON,DISP=SHR
//SORTOF01 DD DSN=XXX.T.KR0Z1N99.RU02.FTPGEN.THOTLN01,       
//           DISP=(NEW,CATLG,DELETE),                        
//           LIKE=XXX.T.KR0Z1N99.RU02.FTPGEN.THOTLNON        
//SORTOF02 DD DSN=XXX.T.KR0Z1N99.RU02.FTPGEN.THOTLN02,       
//           DISP=(NEW,CATLG,DELETE),                        
//           LIKE=XXX.T.KR0Z1N99.RU02.FTPGEN.THOTLNON        
//SORTOF03 DD DSN=XXX.T.KR0Z1N99.RU02.FTPGEN.THOTLN03,       
//           DISP=(NEW,CATLG,DELETE),                        
//           LIKE=XXX.T.KR0Z1N99.RU02.FTPGEN.THOTLNON        
//SYSPRINT DD SYSOUT=*                                       
//SYSOUT   DD SYSOUT=*                                       
//SYSIN    DD *                                              
  SORT FIELDS=COPY                                           
  INCLUDE COND=(93,3,CH,EQ,C'YES')                           
  OUTFIL FILES=01,INCLUDE=(73,20,CH,EQ,C'GROUND OPERATIONS') 
  OUTFIL FILES=02,INCLUDE=(73,20,CH,EQ,C'TECHNICAL OPERATI') 
  OUTFIL FILES=03,INCLUDE=(73,20,CH,EQ,C'AIRPORT TRANSFERS') 

1 个答案:

答案 0 :(得分:2)

尝试将长度20更改为17,如下所示

//SYSIN    DD *                                              
  SORT FIELDS=COPY                                           
  INCLUDE COND=(93,3,CH,EQ,C'YES')                           
  OUTFIL FILES=01,INCLUDE=(73,17,CH,EQ,C'GROUND OPERATIONS') 
  OUTFIL FILES=02,INCLUDE=(73,17,CH,EQ,C'TECHNICAL OPERATI') 
  OUTFIL FILES=03,INCLUDE=(73,17,CH,EQ,C'AIRPORT TRANSFERS') 

将20个字节与17个字节进行比较可能是错误的


排序时遇到问题,始终检查记录格式,如果RECFM VB ,则需要add 4移至所有位置