如何轻松地处理空文件逻辑

时间:2019-07-19 07:28:52

标签: mainframe jcl easytrieve

我正在研究eazytrieve,需要比较两个文件并识别匹配和不匹配的记录。最初,一个文件将为空,而另一个文件将具有一些记录。

我的eazytrieve正在处理两个有记录的文件,但是当其中一个文件为空时却无法工作 请在下面找到我的代码:

JOB INPUT NULL                                                    
GET FILEA                                                      
GET FLIEB                                                      
     DISPLAY 'START FILE COMPARE'                                 
DO WHILE NOT EOF FILEA                                         
   DO WHILE NOT EOF FLIEB                                    

      IF EOF FILEA                                             
         DISPLAY 'RECORD PRESENT IN FILEB ONLY'           
         PERFORM NONMATCH-DATA                                    
         GET FILEB                                             
      ELSE                                                        
         IF FILEA-KEY < FILEB-KEY                               
            DISPLAY 'RECORD PRESENT IN FILEA ONLY'            
            IF NOT EOF FILEA                                   
               GET FILEA                                       
            END-IF                                                
         ELSE                                                     
            IF FILEA-KEY EQ FILEB-KEY                           
               PUT ERRFILE FROM FILEB                         
               GET FILEA                                       
               GET FILEB                                       
             ELSE                                                     
                IF FILEA-KEY > FILEB-KEY                            
                   DISPLAY 'RECORD IS PRESENT IN FILEB ONLY'  
                   PERFORM NONMATCH-DATA                              
                   GET FILEB                                       
                END-IF                                                
             END-IF                                                   
          END-IF                                                      
       END-IF                                                         
    END-DO                                                            
 END-DO                                                               

 STOP.                                                                
  NONMATCH-DATA. PROC
            MOVE FILEB-SNAME           TO  NONMAT-SNAME        
            MOVE FILEB-FNAME           TO  NONMAT-FNAME        
            MOVE FILEB-DOB             TO  NONMAT-DOB    
            PUT OUTFILE
  END-PROC                                     

当FILE A和FILE B都包含一些记录时,Eazytrieve起作用。当文件A为空并且FILEB有一些记录时,则预期结果是OUTFILE应该包含FILEB中的所有记录

0 个答案:

没有答案