On Sat, 1 Dec 2001, Richard Reeve wrote:

> All,
>      I am having a problem with an array in RPG
> (caused mainly by my ignorance where RPG is concerned
> since I am a COBOL kind of guy!).  What I am trying to
> do is to read a file and load an array that will have
> 2 elements - a legacy hold code (2 positions) and a
> MHS hold code (2 positions).  I then want to do a
> lookup on this array by MHS hold code and find the
> corresponding legacy hold code (later in the program).
>      Could someone be kind enough to coach me through
> this?  I will be forever greatful.
> Rich

Here's the way that I'd do something like that...

     FHOLDCODES IF   E           K DISK

     D MHS             S              2A   DIM(500)
     D LEG             S              2A   DIM(500)
     D ArraySize       S             10I 0
     D Index           S             10I 0
     D Result          S              2A
     D code            S              2A

      ** Sample of loading the arrays from a file
      **  This assumes that you want to load the whole file, and
      **  that the two fields in the file are "mhs_from_file" and
      **  "legacy_from_file".
      **  You'll have to adjust it to fit the details of your app.

     c     *start        setll     HOLDCODES
     c                   read      HOLDCODES

     c                   dow       not %eof(HOLDCODES)
     c                   eval      ArraySize = ArraySize + 1
     c                   eval      MHS(ArraySize) = mhs_from_file
     c                   eval      LEG(ArraySize) = legacy_from_file
     c                   read      HOLDCODES
     c                   enddo

      **  Here is a sample of doing a lookup:
      **     The output of this will be that "Index" will be set to the
      **     position in the array of the matching code, and indicator
      **     10 will be on when the lookup succeeds, or off otherwise.
      **     Note that the "10" is in the "Eq" position.  This means we
      **      are only looking up items in MHS that are the same as
      **      the contents of the "code" variable.
     C                   eval      Index = 1
     c     code          lookup    MHS(Index)                             10

     c                   if        *in10 = *Off
     C*  ... no matching code found ...
     c                   else
     c                   eval      result = LEG(Index)
     c                   endif

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