5

それぞれの長さが 5200 バイトの 2 つの入力ファイルがあります。両方のファイルを比較するために 7 バイトのキーが使用されます。一致する場合は、「一致する」ファイルに書き込む必要がありますが、一致するファイルに書き込むときに、 からのいくつかのフィールドinfile1と からの他のすべてのフィールドが必要infile2です。

一致しない場合は、no matchファイルに書き込みます。

でそれを行うことは可能sortですか?COBOLプログラムを使用して簡単に実行できることは知っていますが、.NETで知りたいだけですSORT/ICETOOL/Easytrieve Plus (EZTPA00)

4

5 に答える 5

0

私は約2年前にJCLを使用していたので、コードを書くことはできませんが、ここにアイデアがあります。

  1. 2つのステップがあります
  2. 最初のステップには、一致するレコードを一致するファイルに書き込むことができるICETOOlがあります。
  3. 次に、SORT / ICETOOlを使用するか、ファイル操作だけで、不一致のファイルを書き込むことができます。

もう一度、コードなしの解決策についてお詫びしますが、2年以上連絡が取れません

于 2009-04-27T06:42:13.753 に答える
0
//STEP01   EXEC SORT90MB                        
//SORTJNF1 DD DSN=INPUTFILE1,   
//            DISP=SHR                          
//SORTJNF2 DD DSN=INPUTFILE2,   
//            DISP=SHR                          
//SORTOUT  DD DSN=MISMATCH_OUTPUT_FILE, 
//            DISP=(,CATLG,DELETE),             
//            UNIT=TAPE,                        
//            DCB=(RECFM=FB,BLKSIZE=0),         
//            DSORG=PS                          
//SYSOUT   DD SYSOUT=*                          
//SYSIN    DD *                                 
  JOINKEYS FILE=F1,FIELDS=(1,79,A)              
  JOINKEYS FILE=F2,FIELDS=(1,79,A)              
  JOIN UNPAIRED,F1,ONLY                         
  SORT FIELDS=COPY                              
/*                                              
于 2012-08-31T08:50:00.697 に答える
0

Eztrieve では非常に簡単です。以下はコードの例です。

//STEP01   EXEC PGM=EZTPA00                                        
//FILEA    DD DSN=FILEA,DISP=SHR   
//FILEB    DD DSN=FILEB,DISP=SHR
//FILEC    DD DSN=FILEC.DIF,    
//            DISP=(NEW,CATLG,DELETE),                             
//            SPACE=(CYL,(100,50),RLSE),                           
//            UNIT=PRMDA,                                          
//            DCB=(RECFM=FB,LRECL=5200,BLKSIZE=0)                  
//SYSOUT   DD SYSOUT=*                                             
//SRTMSG   DD SYSOUT=*                                             
//SYSPRINT DD SYSOUT=*                                             
//SYSIN    DD *                                                    
 FILE FILEA                                                        
   FA-KEY       1   7 A                                         
   FA-REC1      8  10 A
   FA-REC2     18   5 A

 FILE FILEB                                                        
   FB-KEY       1   7 A                                         
   FB-REC1      8  10 A                                         
   FB-REC2     18   5 A                                         

 FILE FILEC                                                        

 FILE FILED                                                        
   FD-KEY       1   7 A                                         
   FD-REC1      8  10 A                                         
   FD-REC2     18   5 A                                         


 JOB INPUT (FILEA KEY FA-KEY FILEB KEY FB-KEY)                     
   IF MATCHED            
      FD-KEY   =  FB-KEY                                      
      FD-REC1  =  FA-REC1
      FD-REC2  =  FB-REC2
      PUT FILED
   ELSE
      IF FILEA
         PUT FILEC FROM FILEA                                         
      ELSE
         PUT FILEC FROM FILEB
      END-IF                                         
   END-IF                                                          
/*                       
于 2010-01-21T13:30:50.737 に答える
0

この質問はかなり前に投稿されましたが、他の人に役立つかもしれないので答えたいと思います。これはJOINKEYS、SINGLE ステップで簡単に実行できます。擬似コードは次のとおりです。

  • コードJOINKEYS PAIRED(implicit)を作成し、ファイルを再フォーマットして両方のレコードを取得します。どちらのファイルからも一致しない場合は、特殊文字を追加/接頭辞として言う'$'
  • の IFTHEN を介して比較します'$'。存在する場合、ペアのレコードがありません。ペアになっていないファイルに書き込まれ、ペアのファイルに残ります。

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2011-05-01T08:11:01.787 に答える