Question

For the present, we need to limit the output on these temp work files. Reason is that these are huge master files, and take forever to run. And if we don't make the file *NOMAX then there has to be someone to answer the message for more extensions, and it holds the job queue. For the moment, we want to show that the data is being selected correctly. But I added these count fields but it's not stopping the program.

FARCMASAC  IF   E             DISK                                  
 * Order Header file - Keyed by Company and entity number           
FOEORH4    IF   E           K DISK                                  
 * Output file - Customers who hav no orders  - TRCMASAC PF         
FTRCMA1    UF A E           K DISK                                  
 * Customer Keycode BI file                                         
FZRCST1    IF   E           K DISK                                  
 * Output file - Customers who have no Keycode  - VRCSTKBI PF       
FVRCST1    UF A E           K DISK                                  
 * Address  Master file - ADRESSAD PF                               
FADRES1    IF   E           K DISK                                  
 * Output file - Address  - ZDRESSAD PF                             
FZDRES1    UF A E           K DISK                                  

 *----------------------------------------------------------------- 
 * Calculation Specification                                        
 *----------------------------------------------------------------- 
 * Step 1                                                           
C                   READ      ARCMASAC                              
C                   DOW       NOT %EOF                      
 *                                                          
 * Check the record does not exist in order header file     
C                   EXSR      CHKORH_SR                     
 * Read the next record                                     
C                   READ      ARCMASAC                      
c     counta        ifge      9990                          
C                   EVAL      *INLR = *ON                   
c                   leave                                   
c                   endif                                   
c     countz        ifge      9990                          
C                   EVAL      *INLR = *ON                   
c                   leave                                   
c                   endif                                   
C                   ENDDO                                   

 * Step 2 and 3                                             
C     *LOVAL        SETLL     TRCMA1                        
C                   READ(N)   TRCMA1                        
C                   DOW       NOT %EOF                      

C                   EXSR      CHKCUS_SR                              
 *                                                                   
 * Check the record does not exist in address file                   
C                   EXSR      CHKADR_SR                              
 *                                                                   
 * Read the next record                                              
C                   READ(N)   TRCMA1                                 
C                   ENDDO                                            

 *-----------------------------------------------------------------  
 * End of the Program                                                
 *-----------------------------------------------------------------  
C                   EVAL      *INLR = *ON                            

 *-----------------------------------------------------------------  
 * Check the order header entity                                     
 *-----------------------------------------------------------------  
C     CHKORH_SR     BEGSR                                            
C     ORHKEY        CHAIN     OEORH4                                    
 * If the order entity is notfound, write the rec into TRCMASAC file    
C                   IF        NOT %FOUND(OEORH4)                        
C                   WRITE     TRCMASRR                                  
C                   ENDIF                                               
 *                                                                      
C                   ENDSR                                               
 *-----------------------------------------------------------------     
 * Check the customer keycode entity                                    
 *-----------------------------------------------------------------     
C     CHKCUS_SR     BEGSR                                               
 *                                                                      
C     ORHKEY        CHAIN     ZRCST1                                    
 * If the order entity is found, write the rec into VRCSTKBI file       
C                   IF        %FOUND(ZRCST1)                            
C                   WRITE     VRCSTKRR                                  
c                   add       1             countz            500       
C                   ENDIF                                               
C                   ENDSR                                                

 *-----------------------------------------------------------------      
 * Check the address entity for records of never ordered                 
 *-----------------------------------------------------------------      
C     CHKADR_SR     BEGSR                                                
 *                                                                       
C     ACENT#        CHAIN     ADRES1                                     
 * If the order entity is found, write the rec into ZDRESSRR file        
C                   IF        %FOUND(ADRES1)                             
C                   WRITE     ZDRESSRR                                   
c                   add       1             counta            500        
C                   ENDIF                                                
 *                                                                       
C                   ENDSR                                                

 *-----------------------------------------------------------------      
 * Program Initialization Subroutine                                     
 *-----------------------------------------------------------------      
C     *INZSR        BEGSR                                                
Was it helpful?

Solution

You're checking the values of counta and countz in the first DO loop - however you aren't incrementing them until the second DO loop.

Move your:

c     counta        ifge      9990                          
C                   EVAL      *INLR = *ON                   
c                   leave                                   
c                   endif                                   
c     countz        ifge      9990                          
C                   EVAL      *INLR = *ON                   
c                   leave                                   
c                   endif

code into the second DO loop.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top