BPX4LDX (loadHFS extended) example
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 31 callers use BPX1LDX (loadHFS extended) example.
MVC BUFLENA,=F'16'
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 BPX4LDX, Load program +
(BUFLENA, Input: Pathname length +
BUFFERA, Input: Pathname +
OPTIONS, Input: Options +
LIBPTHLN, Input: Library Path Length +
LIBPATH, Input: Library Path +
RTNPARM@, Output: directed load ret parm structure +
RETVAL, Return value: -1 or 0 +
RETCODE, Return code +
RSNCODE), Reason code +
MF=(E,PLIST) -----------------------------------------
SPACE ,
L R15,RETVAL Load return value
C R15,=F'-1' Test for -1 return
BE PSEUDO Branch on error
SPACE ,
LG R5,RTNPARM@
MVC LOCALPARMS(24),0(R5) Local copy of returned parameters
*
* Provide serviceability information to system
*
LA R4,LOCALPARMS
USING DIRECTEDLOADRETURNEDPARMS,R4
LGHI R7,-2
LG R5,DIRECTEDLOADMODULEENTRYPT64
NGR R5,R7 Clear entry point amode 64 flag
STG R5,DIRECTEDLOADMODULEENTRYPT64
LG R6,DIRECTEDLOADMODULESTART64
LG R7,DIRECTEDLOADMODULELENGTH64
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
*
LG R15,DIRECTEDLOADMODULEENTRYPT64
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