You are on page 1of 10

*===================================================== * PROGRAM - XXXXXX * PURPOSE - List members in a file * * PROGRAM DESCRIPTION * * * * * INPUT PARAMETERS * * * * * * INDICATOR USAGE * * *===================================================== * * Program

Info * d PgmInfo d @PgmName d @Parms d @MsgID d @JobName d @UserId d @JobNumber * SDS 1 37 40 244 254 264 10 39 0 46 253 263 269 0 n/a Description ----------ApiLibrary ApiFile Type Size ---- ---Char 10 Char 10 How Used -------input input This program will list all members in a file

* constants * d Q d Up d Low * * Field Definitions. * d AllMembers d ApiFile d ApiLibrary d ApiMember d bOvr d FileLib d Format d MemberName d nBufLen d ObjectLib d OutData d ReceiverLen d SpaceVal d SpaceAuth d SpaceText d SpaceRepl d SpaceAttr d UseScreen d UserSpaceOut * * QUSRMBRD API return Struture * ============================ s s s s s s s s s s s s s s s s s s s 20 10a 10 10 10 1a 20a 8a 10 10i 0 10 30 10i 0 inz(100) 1 10 50 10 10 n inz(*BLANKS) inz('*CHANGE') inz(*BLANKS) inz('*YES') inz(*BLANKS) inz('0') inz('*ALL') c c c const('''') const('ABCDEFGHIJKLMNOPQRSTUVWXYZ') const('abcdefghijklmnopqrstuvwxyz')

d Mbrd0100 d nBytesRtn d nBytesAval d DBXLIB d DBXFIL d MbrName d FileAttr d SrcType d dtCrtDate d dtLstChg d MbrText d bIsSource d RmtFile d LglPhyFile d ODPSharing d filler2 d RecCount d DltRecCnt d DataSpaceSz d AccpthSz d NbrBasedOnMbr *

ds 10i 0 10i 0 10a 10a 10a 10a 10a 13a 13a 50a 1a 1a 1a 1a 2a 10i 0 10i 0 10i 0 10i 0 10i 0

inz

* Create userspace datastructure * d stuff d StartPosit d StartLen d SpaceLen d ReceiveLen d MessageKey DS 10i 0 10i 0 10i 0 10i 0 10i 0

d MsgDtaLen d MsgQueNbr *

10i 0 10i 0

* Date structure for retriving userspace info * d InputDs d UserSpace d SpaceName d SpaceLib d InpFileLib d InpFFilNam d InpFFilLib d InpRcdFmt * * Data structure for the retrieve user space command * d GENDS d Filler3 d OffsetHdr d SizeHeader d OffsetList d Filler4 d NbrInList d SizeEntry * * Datastructure for retrieving elements from userspace * d HeaderDs d OutFileNam d OutLibName DS 1 11 10 20 DS 116 10i 0 10i 0 10i 0 4 10i 0 10i 0 DS 1 1 11 29 29 39 49 20 10 20 48 38 48 58

d OutType d OutFormat d RecordLen * * List the members * d ListDs d LmMember d LmType d LmCreationDt d LmCreationTm d LmLastChgDt d LmLastChgTm d LmDescription * DS

21 31 41

25 40 44i 0

10 10 7 6 7 6 50

* Retrive object description * d RtvObjInfo d RoBytRtn d RoBytAvl d RoObjNam d RoObjLib d RoObjTypRt d RoObjLibRt d RoObjASP d RoObjOwn d RoObjDmn d RoObjCrtDts d RoObjCrtTim d RoObjChgDts DS 10i 0 10i 0 10a 10a 10a 10a 10i 0 10a 2a 07a 06a 07a

d RoObjChgTim d RoExtAtr d RoTxtDsc d RoSrcF d RoSrcLib d RoSrcMbr * * API Error Data Structure * d Errords d BytesPrv d BytesAvl d MessageId d ERR### d MessageDta * ds 1 5 9 16 17

06a 10a 50a 10a 10a 10a

4I 0 inz(%size(errords)) 8I 0 inz(0) 15 16 256

*===================================================== * MAIN LINE *===================================================== * * Now List the members of this source file to a userspace * c * c c c * * Read back the members * eval eval exsr MemberName = '*ALL' Format = 'MBRL0200' $QUSLMBR exsr $QUSCRTUS

c c *

eval eval

StartPosit = 1 StartLen = 140

* First call to get data offsets(start) * c c c c c c * * Then call to get number of entries * c c * c c c c c c * c c * * Do for number of members * c do NbrInList eval eval StartPosit = OffsetList + 1 StartLen = SizeEntry call(e) parm parm parm parm parm 'QUSRTVUS' UserSpaceOut StartPosit StartLen HeaderDs ErrorDs eval eval StartPosit = OffsetHdr + 1 StartLen = SizeHeader call(e) parm parm parm parm parm 'QUSRTVUS' UserSpaceOut StartPosit StartLen GENDS ErrorDs

c c c c c c * c c c c c c * c c * c OutData

call(e) parm parm parm parm parm

'QUSRTVUS' UserSpaceOut StartPosit StartLen ListDs ErrorDs

eval exsr eval

ApiMember = LmMember $QUSRMBRD OutData = %trim(LmMember) + '-' + %char(RecCount) +' Deleted: '+ %char(DltRecCnt)

dsply

reply

eval enddo

StartPosit = StartPosit + SizeEntry

eval

*inlr = *on

*===================================================== * $QUSRMBRD - API Retreive Member Description *===================================================== c * c c * c c c c call(e) parm parm parm 'QUSRMBRD' MbrD0100 nBufLen Format eval eval nBufLen = %size(MbrD0100) Format = 'MBRD0200' $QUSRMBRD begsr

c c c * c

parm parm parm

FileLib ApiMember bOvr

endsr *======================================================================== * $QUSCRTUS - API to create user space *========================================================================

c *

$QUSCRTUS

begsr

* Create a user space named ListMember in QTEMP. * c c c * * Create the user space * c c c c c c c c c * c endsr *======================================================================== call(e) parm parm parm parm parm parm parm parm 4096 'QUSCRTUS' UserSpace UserSpaceOut SpaceAttr SpaceLen SpaceVal SpaceAuth SpaceText SpaceRepl ErrorDs Eval BytesPrv = 116 SpaceName SpaceLib

movel(p) 'MEMBERS' movel(p) 'QTEMP'

* $QUSLMBR - API List all members in a file *======================================================================== c * c * c c c c c c c * c endsr *===================================================== * Initialization *===================================================== c * c c c * c * c endsr eval FileLib = ApiFile + ApiLibrary *entry plist parm parm ApiFile ApiLibrary *inzsr begsr call(e) parm parm parm parm parm parm 'QUSLMBR' UserSpaceOut Format FileLib AllMembers bOvr ErrorDs eval nBufLen = %size(MbrD0100) $QUSLMBR begsr

You might also like