0

以下のサンプルコードを使用してシナリオを説明したいと思います。

JOINKEYS を使用して acct# によって 2 つのファイルを結合する必要がありますが、ファイル 1 では acct# は位置:33 に存在しますが、ファイル 2 では位置:1 または位置 2 のいずれかに acct# が存在し、位置:1 の char 'C' に依存します。つまり、char 'C' が position:1 に存在する場合、position:2 からの acct# を考慮する必要があります。そうでない場合は、position:1 からの acct# を考慮します。これらすべてを 1 つのステップで実行したいと考えています。

私の要件を明確にしたことを願っています。あなたのソリューションに感謝します。

//STEP010  EXEC PGM=SORT,                      
//             REGION=4096K                    
//SYSPRINT DD  SYSOUT=*                        
//SYSLIST  DD  SYSOUT=*                        
//SYSTOTAL DD  SYSOUT=*                        
//SYSOUT   DD  SYSOUT=*                        
//*                                            
//SORTIN   DD  DUMMY                           
//*                                            
//SORTJNF1 DD  *                               
1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|3785253347100
2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|3785253368600
8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|3725826154600
9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|3725817782600
1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|3785253347122  
/*                                            
//*                                            
//SORTJNF2 DD  *                               
C3785253347100                                 
C3785253368600                                 
3725826154600  
3725817782600  

//SORTOUT  DD  SYSOUT=*                        
//JNF2CNTL DD  *                               
  INCLUDE COND=(1,1,CH,EQ,C'C'),               
  INREC BUILD=(1,13)                           
/*                                             
//*                                            
//SYSIN    DD  *                               
  JOINKEYS FILES=F1,FIELDS=(33,13,A)           
  JOINKEYS FILES=F2,FIELDS=(01,13,A)           
  JOIN UNPAIRED,F1                             
  REFORMAT FIELDS=(F1:01,45,F2:01,13),FILL=C'$'
  SORT FIELDS=COPY                             
/*                                             
4

1 に答える 1

1

私はこれがあなたが望むものだと思います(インストリームのJNF2CNTLに注意してください):

//STEP010  EXEC PGM=SORT,                      
//             REGION=0M                    
//SYSPRINT DD  SYSOUT=*                        
//SYSLIST  DD  SYSOUT=*                        
//SYSTOTAL DD  SYSOUT=*                        
//SYSOUT   DD  SYSOUT=*                        
//*                                            
//SORTIN   DD  DUMMY                           
//*                                            
//SORTJNF1 DD  *                               
1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|3785253347100
2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|3785253368600
8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|3725826154600
9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|3725817782600
1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|3785253347122  
/*                                            
//*                                            
//SORTJNF2 DD  *                               
C3785253347100                                 
C3785253368600                                 
3725826154600  
3725817782600  
/*
//SORTOUT  DD  SYSOUT=*                        
//JNF2CNTL DD  *                               
  INREC IFTHEN=(WHEN=(1,1,CH,EQ,C'C'),FIELDS=(2,13))
        IFTHEN=(WHEN=NONE,FIELDS=(1,13))
/*                                                 
//*                                            
//SYSIN    DD  *                               
  JOINKEYS FILES=F1,FIELDS=(33,13,A)           
  JOINKEYS FILES=F2,FIELDS=(01,13,A)
  JOIN UNPAIRED,F1                             
  REFORMAT FIELDS=(F1:01,45,F2:01,13),FILL=C'$'
  SORT     FIELDS=COPY                             
/*
于 2011-06-30T23:18:09.883 に答える