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



The correct built in function to determine when READE does not get a hit is %eof. For example:

                  eval        kfline = 0
filekey15         setll  file15
                  if     %equal
filekey15         reade  file15
                  dow    not %eof
                  eval   kf_line = kf_line + 1
filekey15         reade  file15
                  enddo
                  endif

Mel Rothman
Mel Rothman, Inc.


Terry@xxxxxxxxxx wrote:






Not knowing what FILEKEY15 key lists consists of makes this a guess, but
assuming it's something like
FILEKEY15         klist
                  kfld              SomeKey
                  kfld              kf_line
and assuming the line number field name in the file is kf_line...

I'd suggest trying something like:

                  EVAL              kf_line - *HIVAL
filekey15         setgt  file15
SomeKey           readpe file15
                  if          %found(file15)
                  eval        kf_line = kf_line + 1
                  else
                  eval        kfline = 1
                  endif


Terry Richardson V(Document link: Bookmarks (6))ermont Information Processing, Inc. terry@xxxxxxxxxx


fkany@averittexpr ess.com Sent by: To rpg400-l-bounces@ RPG400-L@xxxxxxxxxxxx midrange.com cc Subject 11/20/2003 11:34 %EQUAL in a DOU loop AM Please respond to RPG programming on the AS400 / iSeries <rpg400-l@midrang e.com>






Hello,

The program seems to crash in the routine below.  I know that there aren't
any records with 999 lines of notes.  I'm thinking that maybe the program
keeps looping.
Am I missing something in the code below that would cause this routine to
keep looping?

The program crashes with this message, "Receiver value too small to hold
result.
The target for a numeric operation is too small to hold the result"

Thanks,

Frank

C                   EVAL      KF_LINE = 1
 *
 * Set File Pointer
C     FILEKEY15     SETLL     FILE15
 *
 * Notes Records Exist in File
C                   IF        %EQUAL(FILE15)
 *
 * Find New Line # for Note #
C                   DOU       NOT %EQUAL(FILE15)
C     FILEKEY15     SETLL     FILE15
 *
C                   IF        NOT %EQUAL(FILE15)
C                   LEAVE
C                   ENDIF
 *
C                   IF        %EQUAL(FILE15)
C                   EVAL      KF_LINE = KF_LINE + 1
C                   ENDIF
 *
C                   ENDDO




As an Amazon Associate we earn from qualifying purchases.

This thread ...

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.