× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



>From the manual
*** Quote *ON ***
%EOF{(file_name)}

%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:
        o "READ (Read a Record)" on page 663
        o "READC (Read Next Changed Record)" on page 665
        o "READE (Read Equal Key)" on page 667
        o "READP (Read Prior Record)" on page 670
        o "READPE (Read Prior Equal)" on page 672
        o "WRITE (Create New Records)" on page 732 (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.

        o "CHAIN (Random Retrieval from a File)" on page 534
        o "OPEN (Open File for Processing)" on page 651
        o "SETGT (Set Greater Than)" on page 693
        o "SETLL (Set Lower Limit)" on page 697
*** Quote *OFF ***

Note the part that says " If the operation is not successful, %EOF(filename) is 
not changed. %EOF with no parameter is not changed by these operations."

If at any time %EOF was set, the failure of your chain will not change the 
value of this flag if there is no filename supplied.  Could this be the problem 
you are having?

Marvin


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On 
Behalf Of Peter.Colpaert@xxxxxxxxxx
Sent: Thursday, August 18, 2005 7:26 AM
To: RPG programming on the AS400 / iSeries
Subject: Re: How to properly use %EOF() bif?

Igor,

I never use %eof after a Chain.

More specifically, I never use Chain to start a loop, always setll + 
read/reade.

Just my opinion of course, others may contradict me.  But I've never 
encountered problems like the one you describe, so I guess my way of 
coding seems to work.

HTH,

Peter Colpaert
Application Developer
Massive - Kontich, Belgium
-----
Yoda of Borg are we.  Futile is resistance, assimilated will you be.
-----




Igor.Beslic@xxxxxxxxxxxx
Sent by: rpg400-l-bounces@xxxxxxxxxxxx
18/08/2005 16:17
Please respond to RPG programming on the AS400 / iSeries

 
        To:     rpg400-l@xxxxxxxxxxxx
        cc: 
        Subject:        How to properly use %EOF() bif?


Hello!

Recently I've stucked with problem i resolved but still I'm asking for 
explanation. HOW %EOF() bif works? I read that resulting inds are set off 
before performing operations which affect them so I believed that file 
status BIFs (%FOUND, %EOF, %EQUAL..) work similary.


I had program that read keys from array and for every key chained to file 
and read all records with current key. LOOP A describes simplified 
process. 

LOOP A

01 FOR COUNT=1 TO %Elem(keyARRAY);
02 key4file=keyARRAY(COUNT);
03 chain key4file KEYEDFILE;
04 if %Found();
05   dow NOT %Eof();
06      register();
07      reade key4file KEYEDFILE;
08   ENDDO; 
09  endIf;
10 endFor;

The problem is that loop was good just for the first iteration. On second 
iteration, when program successfuly chained to new record with new key, 
%EOF() bif in line 05 returned result that refered to last READE operation 

but not CHAIN. I used this approach because I thought that CHAIN is some 
combination of SETLL+READ but obviosly I was wrong.

I altered LOOP with SETLL and READ operations as in LOOP B example and now 

program process all records with keys in keyARRAY:
LOOP B

01 FOR COUNT=1 TO %Elem(keyARRAY);
02  key4file=keyARRAY(COUNT);
03  setll key4file KEYEDFILE;
04  if %Equal();
05    read KEYEDFILE;
06    dow NOT %Eof();
07         register();
08         reade key4file KEYEDFILE;
09    ENDDO;
10  endif;
11 endFor;

Now I'm asking is it restricted to perform only read{E,P} operations 
before using %EOF or %BOF built in functions??

Best regards,
Igor Bešlić, dipl. ing. rač. 
VOLKSBANK d.d.
OJ Informatika
Zelinska 2, 10000 Zagreb
tel: +385 1 6326422



As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.