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.
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.