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