|
Bob,
I think you're stating one level too many: he is passing a list of elements
that contain a list themselves. That is what I do as well:
This is the parameter:
PARM KWD(LIBLIST) TYPE(LIBLIST) MIN(1) MAX(25) +
PROMPT('Lijst bibliotheken')
LIBLIST: ELEM TYPE(*NAME) MIN(1) PROMPT('Bibliotheek')
ELEM TYPE(*CHAR) LEN(10) RSTD(*YES) DFT(*ANZ) +
VALUES(*ANZ *DCT *OBJ) PROMPT('Type +
bibliotheek')
ELEM TYPE(*NAME) DFT(*ALL) SNGVAL((*ALL)) MAX(10) +
PROMPT('Source files')
ELEM TYPE(*CHAR) LEN(10) RSTD(*YES) DFT(*ALL) +
VALUES(MNUCMD CLLE CLP RPG RPGLE SQLRPG +
SQLRPGLE MNU36 UNS RPG36) SNGVAL((*ALL)) +
MAX(10) PROMPT('Member types')
And this is how I process it:
Definitions:
D #ANZUTX PI
D LblPmx 1A OPTIONS(*VARSIZE)
The main list, containing an array of offsets to the element
D LblDts DS BASED(LblPtr)
D LibNbr 5U 0
D LibOfs 5U 0 DIM(10)
Element of the main list, containing two offsets to the sublists
D LibDts DS BASED(LibPtr)
D LibElm 5U 0
D LibNme 10A
D LibTyp 10A
D FslOfs 5U 0
D MslOfs 5U 0
First sublist (Fsl = File selection)
D FslDts DS BASED (FslPtr)
D FslElm 5U 0
D FslNme 10A DIM(10)
Second sublist (Msl = Member type selection)
D MslDts DS BASED (MslPtr)
D MslElm 5U 0
D MslNme 10A DIM(10)
D FilSlt S 10A DIM(10)
D MbrSlt S 10A DIM(10)
Part of the mainline that processes the elements in the (main) list:
C* Ophalen/verwerken gegevens bibliotheken
C EVAL LblPtr= %addr(LblPmx)
C FOR Lib=1 to LibNbr
C EVAL LibPtr= LblPtr
C + LibOfs(Lib)
C EXSR SR#LIB
C ENDFOR
C
Subroutine that processes an element of the main list
C SR#LIB BEGSR
C
C* Instellen selectiewaarden
C
C CLEAR FilSlt(*)
C CLEAR MbrSlt(*)
C
C EVAL FslPtr= LibPtr
C + FslOfs
C FOR Slt=1 to FslElm
C EVAL FilSlt(Slt)= FslNme(Slt)
C ENDFOR
C
C EVAL MslPtr= LibPtr
C + MslOfs
C FOR Slt=1 to MslElm
C EVAL MbrSlt(Slt)= MslNme(Slt)
C ENDFOR
C
C ENDSR
Joep Beckeringh
----- Original Message -----
From: "Bob Cozzi (RPGIV)" <cozzi@rpgiv.com>
To: <rpg400-l@midrange.com>
Sent: Thursday, December 13, 2001 1:40 AM
Subject: RE: Big complex parameter.
> This guy is passing a list within a list that has a list in it.
> He is not passing a simple ELEM list which has the 2-byte binary prefix
> and then the 3 elements. Note the 3rd element in his example, has
> MAX(300) in addition the ELEM parent has MAX(300) specified.
>
> Bob Cozzi
> cozzi@rpgiv.com
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.