December 15


When the RPGLE %EOF BIF is not the End of File

By NickLitten

December 15, 2008

RPG, bif, EOF, ILE, programming, RPGLE, standards

I love the %EOF code – it just makes me feel less like a Stegasaurus when coding with an indicator.

I was a little disturbed by the fact that %EOF{(file_name)} was the standard but sometimes you can get away with dropping the file_name and sometimes you cant.

This snippet clears it up:

So basically – just use %EOF(filename) folks 😉

%EOF returns ‘1’ if the most recent read operation or write to a subfile ended in an end of file or beginning of file condition; otherwise, it returns ‘0’.

The operations that set %EOF

  • READ (Read a Record)
  • READC (Read Next Changed Record)
  • READE (Read Equal Key)
  • READP (Read Prior Record)
  • READPE (Read Prior Equal)
  • WRITE (Create New Records) (subfile only)

The following operations, if successful, set %EOF(filename) off. If the operation is not successful, %EOF(filename) is not changed. %EOF with no parameter is not changed by these operations

  • CHAIN (Random Retrieval from a File)
  • OPEN (Open File for Processing)
  • SETGT (Set Greater Than)
  • SETLL (Set Lower Limit)

When a full-procedural file is specified, this function returns ‘1’ if the previous operation in the list above, for the specified file, resulted in an end of file or beginning of file condition. For primary and secondary files, %EOF is available only if the file name is specified. It is set to ‘1’ if the most recent input operation during *GETIN processing resulted in an end of file or beginning of file condition. Otherwise, it returns ‘0’.This function is allowed for input, update, and record-address files; and for display files allowing WRITE to subfile records.

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Join the IBM i Community for FREE Presentations, Lessons, Hints and Tips