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

IBM i

Dec 15

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:

%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 are:

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.

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.

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

Follow

About the Author

IBM i Software Developer, Digital Dad, AS400 Anarchist, RPG Modernizer, Alpha Nerd and Passionate Eater of Cheese and Biscuits. Nick Litten Dot Com is a mixture of blog posts that can be sometimes serious, frequently playful and probably down-right pointless all in the space of a day. Enjoy your stay, feel free to comment and in the words of the most interesting man in the world: Stay thirsty my friend.