|
your two sample are not the same : the first one make no read before testin the %eof and it is a dow. perhaps you can simulate the settl : 01 FOR COUNT=1 TO %Elem(keyARRAY); 02 key4file=keyARRAY(COUNT); 03 Setll key4file KEYEDFILE; 07 reade key4file KEYEDFILE; 05 dow NOT %Eof(); 06 register(); 07 reade key4file KEYEDFILE; 08 ENDDO; 09 endIf; 10 endFor; ----- Original Message ----- From: <Igor.Beslic@xxxxxxxxxxxx> To: <rpg400-l@xxxxxxxxxxxx> Sent: Thursday, August 18, 2005 4:17 PM 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 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.