Ü  %EOF(filename)

·    This built-in function is used to detect end-of file, beginning of file, or subfile full conditions while performing a file operation similar to resulting indicator.

·    So, instead of checking any resulting indicator we simply use %EOF to check if the end of file is reached.

·    %EOF returns '1' if end-of file, beginning of file, or subfile full condition is found ; otherwise, it returns '0'.

·    READ, READC and READE return %EOF=*ON if the end of file is reached.

·    READP and READPE return %EOF=*ON if the beginning of file is reached.

·    WRITE operation returns %EOF=*ON if the WRITE operation to a subfile detail record returned a subfile-full condition.

·    If %EOF=*ON and we perform CHAIN operation, then CHAIN operation on successful search sets %EOF=*OFF.

·    OPEN, SETGT, SETLL on successful operations, sets %EOF=*OFF.

 

Example- I -%eof built-in function in rpgle

Checking EOF status of a file


0127.00 C*_______________FILL SUBFILE__________________
0128.00 C*_________________________________________________
0129.00 C*
0130.00 C     FILSFL1       BEGSR
0131.00 C                   EVAL      RRN=1
0132.00 C                   SETOFF                                       45
0133.00 C                   DOU       %EOF(MASTER) //The loop is executed until end of
0134.00 C                   READ(N)   REC1              file is reached
0135.00 C                   IF        %EOF(MASTER) //If end of file is reached then turn
0136.00 C                   EVAL      *IN45=%EOF(MASTER)    on the bottom indicator
0137.00 C                   LEAVESR
0138.00 C                   ENDIF
0139.00 C                   EVAL      S_ORG=%CHAR(ORG)
0140.00 C                   EVAL      S_ACC=ACC
0141.00 C                   EVAL      S_CCY=CCY
0142.00 C                   WRITE     EXPD_SFL
0143.00 C                   ADD       2             RRN
0144.00 C                   EVAL      LSTRRN=RRN
0145.00 C                   ENDDO
0146.00 C                   ENDSR

 

 

Example- II –%eof built-in function in rpgle

Checking successful CHAIN operation to set %EOF=*OFF

In the program below we are Checking successful CHAIN operation to set %EOF=*OFF

 


Columns . . . :    6  80        Edit                                AMITCC/QRPGLESRC
SEU==>                                                                      BIN_EOF
FMT FX FFilename++IPEASF.....L.....A.Device+.Keywords+++++++++++++++++++++++++++++
*************** Beginning of data ******************************************
0001.00 FACCOUNT   IF   E           K DISK
0002.00 C     KLST1         KLIST
0003.00 C                   KFLD                    ORG               3 0
0004.00 C                   KFLD                    ACC              12
0005.00 C                   KFLD                    CCY               3
0006.00 C     *HIVAL        SETLL     ACCOUNT
0007.00 C                   READ      ACCOUNT
0008.00 C                   IF        %EOF(ACCOUNT)
0009.00 C     'EOF'         DSPLY
0010.00 C                   EVAL      ORG=191
0011.00 C                   EVAL      ACC='A00000000002'
0012.00 C                   EVAL      CCY='EUR'
0013.00 C     KLST1         CHAIN     ACCOUNT
0014.00 C                   IF        %FOUND(ACCOUNT)
0015.00 C     'REC FOUND'   DSPLY
0016.00 C                   IF        NOT %EOF(ACCOUNT)
0017.00 C     'NOT EOF'     DSPLY
0018.00 C                   ENDIF
0019.00 C                   ENDIF
0019.00 C                   ENDIF
0020.00 C                   EVAL      ORG=191
0021.00 C                   EVAL      ACC='A00000000002'
0022.00 C                   EVAL      CCY='EUR'
0023.00 C     KLST1         CHAIN     ACCOUNT
0024.00 C                   IF        %FOUND(ACCOUNT)
0025.00 C     'REC FOUND'   DSPLY
0026.00 C                   IF        NOT %EOF(ACCOUNT)
0027.00 C     'NOT EOF'     DSPLY
0028.00 C                   ENDIF
0029.00 C                   ENDIF
0030.00 C                   ENDIF
0031.00 C                   SETON                                        LR
        ****************** End of data ***************************************

 

             

OUTPUT

 

DSPLY  EOF     

DSPLY  REC FOUND

DSPLY  NOT EOF 

 

 

 

 

 

Example- III –%eof built-in function in rpgle

%EOF with READP & SETLL operation

 


0065.00 C                   READP(N)  REC1
0066.00 C                   IF        %EOF
0067.00 C     *LOVAL        SETLL     REC1
0068.00 C                   ENDIF

 

 

 

Example- IV –%eof built-in function in rpgle

%EOF with READ operation


0131.00 C                   READ(N)   REC1
0132.00 C                   IF        %EOF(MASTER)
0133.00 C                   EVAL      *IN45=%EOF(MASTER)
0134.00 C                   LEAVESR
0135.00 C                   ENDIF

 

 

Example- V –%eof built-in function in rpgle

%EOF with READC operation


0035.00 C                   READC     EXPD_SFL
0036.00 C                   DOW       NOT %EOF()
0038.00 C                   SELECT
0039.00 C                   WHEN      S_OPT='1'
0040.00 C                   EXSR      ENTSR
0041.00 C                   EXSR      CLROPT
0056.00 C                   WHEN      S_OPT=' '
0057.00 C                   LEAVESR
0058.00 C                   OTHER
0059.00 C*                  EXSR      VALIDATE
0060.00 C*                  SETON                                        56
0061.00 C*                  EXSR      CLROPT
0062.00 C                   SETON                                        9192
0063.00 C                   ENDSL
0064.00 C                   READC     EXPD_SFL
0065.00 C                   ENDDO

 

 

Example- VI –%eof built-in function in rpgle

%EOF with READE operation


0138.00 C     FILLWND       BEGSR
0139.00 C                   EVAL      RRN1=0
0140.00 C     S_PNUM        SETLL     REC5
0141.00 C                   IF        %EQUAL()
0142.00 C                   DOU       %EOF(ACCSUBPF)
0143.00 C                   READE     REC5
0144.00 C                   IF        %FOUND()
0145.00 C                   EVAL      RRN1=RRN1+1
0146.00 C                   EVAL      A_ORG=ORG
0147.00 C                   EVAL      A_ACCNO=ACC
0148.00 C                   EVAL      A_CCY=CCY
0149.00 C                   EVAL      A_ACCMNG=ACCMNGR
0150.00 C                   EVAL      A_CNTRY=COUNTRY
0151.00 C                   WRITE     ACC_SFL
0152.00 C                   ENDIF
0153.00 C                   ENDDO
0154.00 C                   ENDIF
0155.00 C                   SETON                                        26
0156.00 C                   ENDSR

 





User Comments:





Copyright © Go4as400.com, 2013-2017. Copyright notice