The following is an example specifying the Lod_Directed
option. For an example of BPX1LDX/BPX4LDX without the Lod_Directed
option flag specified, see
BPX1LOD (loadHFS) example, substituting
BPX1LDX/BPX4LDX for BPX1LOD/BPX4LOD. The program ictasma located
at
ict/bin is loaded into storage and then branched to. Then
the CSVDYLPA service is called to provide serviceability information
to the system. The loaded module can then be branched to. When the
load module is no longer needed, the serviceability information should
be deleted and the module's storage released. For the callable service,
see
loadhfs extended (BPX1LDX, BPX4LDX) — Direct the loading of an executable into storage. AMODE 64 callers use
BPX4LDX (loadHFS extended) example.
MVC BUFLENA,=F'13'
MVC BUFFERA(16),=C'/ict/bin/ictasma'
MVC OPTIONS,=AL4(LOD_DIRECTED) Directed loadhfs to common
OI OPTIONS+3,X'F1' Subpool 241
MVC LIBPTHLN,=A(0)
SPACE ,
CALL BPX1LDX, Load program +
(BUFLENA, Input: Pathname length +
BUFFERA, Input: Pathname +
OPTIONS, Input: Options +
LIBPTHLN, Input: Library Path Length +
LIBPATH, Input: Library Path +
RTNPARM@, Return value: -1 or direct load ret parms +
RETCODE, Return code +
RSNCODE), Reason code +
MF=(E,PLIST) ------------------------------------------
SPACE ,
L R15,RTNPARM@ Load return value
C R15,=F'-1' Test for -1 return
BE PSEUDO Branch on error
L R5,RTNPARM@
MVC LOCALPARMS(24),0(R5) Local copy of returned parameters
*
* Provide serviceability information to system
*
LA R4,LOCALPARMS
USING DIRECTEDLOADRETURNEDPARMS,R4
L R5,DIRECTEDLOADMODULEENTRYPT
L R6,DIRECTEDLOADMODULESTART
L R7,DIRECTEDLOADMODULELENGTH
XC LPMEA(LPMEA_LEN),LPMEA
ST R5,LPMEAENTRYPOINTADDR
ST R6,LPMEALOADPOINTADDR
ST R7,LPMEAMODLEN
MVC LPMEANAME,=C'ICTASMA '
CSVDYLPA REQUEST=ADD, +
BYADDR=YES, +
MODINFOTYPE=MEMBERLIST, +
MODINFO=LPMEA, +
NUMMOD=1, +
REQUESTOR=REQID, +
RETCODE=RETCODE, +
RSNCODE=RSNCODE, +
MF=(E,DYLPAL) Provide serviceability information
L R15,RETCODE Load return code
LTR R15,R15
BNZ PSEUDO
MVC LOCALDELTOKEN(8),LPMEADELETETOKEN
SPACE ,
.
.
.
*
* Call directed loadhfs target module
*
L R15,DIRECTEDLOADMODULEENTRYPT
BALR R14,R15 Branch to loaded program
SPACE ,
.
.
.
*
* When done with directed load hfs module
* remove serviceability information and
* release module storage
*
XC LPMED(LPMED_LEN),LPMED
MVC LPMEDNAME,=C'ICTASMA '
MVC LPMEDDELETETOKEN(8),LOCALDELTOKEN
CSVDYLPA REQUEST=DELETE, +
TYPE=BYTOKEN, +
MODINFO=LPMED, +
NUMMOD=1, +
RETCODE=RETCODE, +
RSNCODE=RSNCODE, +
MF=(E,DYLPAL) Remove serviceability information
L R15,RETCODE Load return code
LTR R15,R15
BNZ PSEUDO
SPACE ,
MODESET MODE=SUP
L R7,DIRECTEDLOADMODULELENGTH
STORAGE RELEASE, +
LENGTH=(R7), +
ADDR=DIRECTEDLOADMODULESTART, +
SP=241 Free module
MODESET MODE=PROB
DROP R4