Ibm midrange 在AS400 RPG中限制输出工作文件

Ibm midrange 在AS400 RPG中限制输出工作文件,ibm-midrange,rpgle,Ibm Midrange,Rpgle,目前,我们需要限制这些临时工作文件的输出。原因是,这些都是巨大的主文件,需要永远运行。如果我们不使用文件*NOMAX,那么就必须有人来回答更多扩展名的消息,并且它会保留作业队列。目前,我们希望显示数据的选择是正确的。但我添加了这些计数字段,但它并没有停止程序 FARCMASAC IF E DISK * Order Header file - Keyed by Company and entity

目前,我们需要限制这些临时工作文件的输出。原因是,这些都是巨大的主文件,需要永远运行。如果我们不使用文件*NOMAX,那么就必须有人来回答更多扩展名的消息,并且它会保留作业队列。目前,我们希望显示数据的选择是正确的。但我添加了这些计数字段,但它并没有停止程序

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                                                

在第一个
DO
循环中,您正在检查
counta
countz
的值,但是直到第二个
DO
循环,您才增加它们

移动您的:

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

编码到第二个
DO
循环中。

您正在检查第一个
DO
循环中
counta
countz
的值-但是直到第二个
DO
循环,您才增加它们

移动您的:

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

编码到第二个
DO
循环。

此程序结束后是否需要工作文件?这里的实际目标是什么?如果不熟悉数据,我们最好的答案就是猜测。请通过限定%EOF来消除歧义,例如DOW NOT%EOF(ARCMASAC)。我推测这个程序还有(可能更多)的地方,我怀疑一些必要的调试部分被省略了。请考虑张贴整个来源(或足以消除这些问题)…请,请,请不要发布固定格式的代码,就好像它是自由格式的一样。使用堆栈溢出的代码函数,以便正确显示代码。双击“是”,在程序完成后需要工作文件。此程序结束后是否需要工作文件?这里的实际目标是什么?如果不熟悉数据,我们最好的答案就是猜测。请通过限定%EOF来消除歧义,例如DOW NOT%EOF(ARCMASAC)。我推测这个程序还有(可能更多)的地方,我怀疑一些必要的调试部分被省略了。请考虑张贴整个来源(或足以消除这些问题)…请,请,请不要发布固定格式的代码,就好像它是自由格式的一样。使用堆栈溢出的代码函数,以便正确显示代码。在程序完成后,再次检查是否需要工作文件。