BPX1LDX (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 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