i have a service program i use for user space processing that you can have
if you want it. it's a save file you can download from
http://www.tommyholden.com/downloads/usrspc.savf
Thanks,
Tommy Holden
From:
<Rick.Chevalier@xxxxxxxxxxxxxxx>
To:
<rpg400-l@xxxxxxxxxxxx>
Date:
04/08/2008 08:09 AM
Subject:
RE: retrieve service program list of procedures
Manuel,
FWIW, you can prototype the API's so you don't have to move in and out
of free-form.
// Actual prototype from one of my programs
dGetSpcPtr pr ExtPgm('QUSPTRUS')
d ##_usrspc 20
d ##_usrspc@ *
d NameToUse pr ExtPgm('APIName')
d APIUsrSpc 20a
d APILstFmt 8a
d Obj 20a
d APIErr 256a
Then in your code the calls become
GetSpcPtr(##_usrspc :##_usrspc@);
NameToUse(APIUsrSpc :APILstFmt :Obj :APIErr);
I have created a module that creates a user space and returns a pointer
to it. I'm pretty sure the code has been posted to the Midrange code
section. You might check the archives for a link. If you do much with
user spaces it comes in pretty handy. Don't forget that user spaces
aren't just for API's.
Rick
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Manuel Cerda
Sent: Tuesday, April 08, 2008 5:40 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: retrieve service program list of procedures
Thanks a lot for your help Rick and Adam, Now it works fine here's my
draft code for info ;
D APIUsrSpc S 20 Inz( 'MODL0100 MYDEV ' )
D PgmLAPI S 10 Inz( 'QBNLMODI' )
D PgmLFmt S 8 Inz( 'MODL0100' )
D pUserSpace S *
D genericHeader DS based(pUserSpace)
D headerOffset 117 120i 0
D headerSize 121 124i 0
D listOffset 125 128i 0
D listSize 129 132i 0
D numEntries 133 136i 0
D entrySize 137 140i 0
D DS based(pEntry)
D ApiSizeOfEntry 10i 0
D ApiModule 10a
D ApiModuleLib 10a
D ApiSymbolType 1a
D ApiReserved2 3a
D ApiOffSetExpSy 10i 0
D ApiLengthExpSy 10i 0
D ApiArgOptr 10a
D ApiProc s 128a based( papiproc )
D ApiProc2 s 128a Varying
/free
CrtUsrSpc( APIUsrSpc );
l APINam = PgmLAPI;
APILstFmt = PgmLFmt;
/END-FREE
C Call APINam
C Parm APIUsrSpc
C Parm APILstFmt
C Parm Obj
C Parm APIErr
* Get a pointer to the user space containing the list
C call 'QUSPTRUS'
C parm ApiUsrSpc
C parm pUserSpace
/free
pEntry = pUserSpace + listOffset;
For Index = 1 To NumEntries;
papiproc = pUserSpace + ApiOffsetexpsy;
ApiProc2 = *Blank;
apiproc2 = %Subst(apiproc : 1 : apilengthexpsy );
pEntry = pentry + ApiSizeOfEntry;
EndFor;
/end-free
Best regards,
Manuel
Privileged and Confidential. This e-mail, and any attachments there to,
is intended only for use by the addressee(s) named herein and may contain
privileged or confidential information. If you have received this e-mail
in error, please notify me immediately by a return e-mail and delete this
e-mail. You are hereby notified that any dissemination, distribution or
copying of this e-mail and/or any attachments thereto, is strictly
prohibited.
As an Amazon Associate we earn from qualifying purchases.