× 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.



John, you need to be careful using the %EOF BIF with the CHAIN operation
code. From the RPG Reference Manual:-

"The following operations, if successful, set %EOF(fielname) off. If the
operation is not successful, %EOF(filename) is not changed."

There is no problem with the code sample if it is the only place in the
program that the file is referenced - but the status of %EOF(filename) after
a failed CHAIN is dependent on what it was before the CHAIN.

HTH

Paul Tuohy

----- Original Message -----
From: "John Brandt Sr." <pgmr@xxxxxxxxxxxxxxx>
To: "'RPG programming on the AS400 / iSeries'" <rpg400-l@xxxxxxxxxxxx>
Sent: Friday, March 26, 2004 5:12 PM
Subject: RE: Loop code


> I don't see anywhere that there are any holes in my code.
>
> Not sure what you are implying here. The Chain opcode isn't
> conditional on having been executed in a prior instruction.
> Are you implying that the line
> C     myklist       chain     myfile
> is "if I feel like it, and I haven't chained before, chain. Otherwise,
just
> skip this one?"
> The Chain will set the %eof condition when it is executed.
> If the chain fails, the DOW(hile) will not execute, as it shouldn't.
>
> It works very well on my system and the systems of thousands of my
clients.
>
> John Brandt
> iStudio400.com
>
> -----Original Message-----
> From: M. Lazarus [mailto:mlazarus@xxxxxxxx]
> Sent: Friday, March 26, 2004 10:31 AM
> To: RPG programming on the AS400 / iSeries
> Subject: Loop code
>
>
> John,
>
>   There are 2 holes in your code:
>
> 1)  If the CHAIN fails the loop will still execute, probably displaying
> incorrect data.  CHAIN sets the %Found() flag.
>
> 2)  If you will be executing this code more than once within the program
> the loop will probably NOT execute.  This is because the %EOF() condition
> will likely have already been set by the previous execution of this loop.
>
>   Changing the CHAIN to a SETLL/READE combo should fix the problem.
>
>   -mark
>
> At 3/26/04 11:12 AM, you wrote:
> >While his code would write a duplicate record at the bottom of the
subfile,
> >and your code may be efficient, my suggestion would be:
> >
> >C     myklist       chain     myfile
> >C                   dow       NOT %eof(myfile)
> >C                   eval      rrn = rrn + 1
> >C                   write     mysubfile
> >C     myklist       reade     myfile
> >C                   enddo
> >
> >JMHO
> >John Brandt
> >iStudio400.com
> >
> >-----Original Message-----
> >From: Marvin Radding [mailto:MRadding@xxxxxxxxxxxx]
> >Sent: Friday, March 26, 2004 9:58 AM
> >To: rpg400-l@xxxxxxxxxxxx
> >Subject: RE: RPG400-L Digest, Vol 3, Issue 231
> >
> >
> >
> >While there is nothing wrong with your code, I think this way is more
> >effiecient.
> >
> >C     myklist       setll     myfile
> >C
> >C                   dou       %eof(myfile)
> >C
> >C     myklist       reade     myfile
> >C                   if        %eof(myfile)
> >C                   iter
> >C                   endif
> >C
> >C                   eval      rrn = rrn + 1
> >C                   write     mysubfile
> >C
> >C                   enddo
> >
> >Marvin Radding
> >
> >
> >message: 1
> >date: Thu, 25 Mar 2004 14:32:35 -0800 (PST)
> >from: simafrog <SimaFrog@xxxxxxxxxx>
> >subject: SETLL ONE SLIGHT PROBLEM
> >
> >Actually I don't think I can do this here anyway. One problem remaining
> >is that the reade of the Detail file is causing one extra record to be
> >added to the work file, the last one of the batch is duplicated. Here is
> >the code:
> >  C           BLD       BEGSR
> >  C*
> >  C           OHKEY     SETLLORDHEDR             40
> >  C*
> >  C           *IN40     DOWEQ*OFF
> >  C*
> >
> >  C           OHKEY     READEORDHEDR                 40
> >  C           *IN40     IFEQ '0'
> >  C*
> >  C           C*
> >  C           ODKEY     SETLLORDDTL                   50
> >  C           *IN50     DOUEQ*ON
> >  C           ODKEY     READEORDDTL                   50
> >  C                     WRITEORDSWRKF
> >  C                     END
> >  C                     END
> >  C                     END
> >  C*
> >  C                     ENDSR



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

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.