XCTLX - Execute form

Two parameter lists are available in the XCTLX macro: a control parameter list and an optional user parameter list. The control parameter list can be either inline or remote (that is, in an area you specifically obtained); the user parameter list must be remote.

Syntax

The execute form of the XCTLX macro is written as follows:

Syntax Description
   
   name name: Symbol. Begin name in column 1.
   
One or more blanks must precede XCTLX.
   

XCTLX

 
   
One or more blanks must follow XCTLX.
   

   (reg1),
   (reg1,reg2),

reg1 and reg2: Decimal digits or RX-type addresses, and in the order 2 through 12.
   
   EP=entry name, entry name: Symbol.
   EPLOC=entry name addr, entry name addr: RX-type address or register (2) - (12).
   DE=list entry addr, list entry addr: RX-type address, or register (2) - (12).
   
   ,DCB=dcb addr, dcb addr: RX-type address, or register (2) - (12).
   
   ,PARAM=(parm), parm: RX-type address, or register (2) - (12).
   ,PARAM=(parm),VL=1, parm is one or more addresses, separated by commas. For example, PARAM=(parm,parm,parm)
   
   ,LSEARCH=NO, Default: LSEARCH=NO
   ,LSEARCH=YES,  
   
   ,PLIST4=YES Default: None.
   ,PLIST4=NO  
   
   ,PLIST8=YES Default: None.
   ,PLIST8=NO  
   
   ,PLIST8ARALETS=NO Default: PLIST8ARALETS=NO
   ,PLIST8ARALETS=YES Note: PLIST8ARALETS is valid only with XCTLX.
   
,MF=(E,user area) user area: RX-type address, or register (1) or (2) - (12).
,SF=(E,ctrl area) ctrl area: RX-type address, or register (2) - (12) or (15).
,MF=(E,user area),SF=(E,ctrl  
    area)  
   

Parameters

The parameters are explained under the standard form of the XCTL macro, with the following exceptions:

PARAM=(parm)
PARAM=(parm),VL=1
Specifies an address or addresses to be passed to the target module. XCTLX expands each address inline to a fullword boundary and builds a parameter list with the addresses in the order specified, placed at the location designated by MF=(E,user area). When the target module receives control, GPR1 contains the address of the location designated by 'user area'. When PARAM is not specified, XCTLX passes GPR1 and AR1 unchanged to the target module.
When an AR mode caller uses either:
  • a parameter list with 4 bytes per entry; or
  • a parameter list with 8 bytes per entry and specifies PLIST8ARALETS=YES,
the addresses passed to the subtask are in the first part of the parameter list and their associated ALETs are in the second part. For a non-AR mode caller, or for an AR mode caller using a parameter list with 8 bytes per entry without PLIST8ARALETS=YES, ALETs are not passed in the parameter list. When ALETs are passed in the parameter list, the ALETs occupy consecutive 4-byte fields, whether the parameter list is 4 or 8 bytes per entry. See the description of the PLIST4 and PLIST8 keywords below for more information about controlling the bytes-per-entry in the parameter list. See the description of the PLIST8ARALETS keyword below for more information about ALETs and 8-bytes-per-entry parameter lists. See User parameters for an example of passing a parameter list in AR mode.
When using a 4-bytes-per-entry parameter list, specify VL=1 when you pass a variable number of parameters. VL=1 results in setting the high-order bit of the last address to 1. The 1 in the high-order bit identifies the last address parameter (which is not the last word in the list when the ALETs are also saved). When using an 8-bytes-per-entry parameter list, VL=1 is not valid.
Note: If you specify only one address for PARAM= and you are not using register notation, you do not need to enter the parentheses.
LSEARCH=NO
LSEARCH=YES
Specifies whether (YES) or not (NO) you want the search limited to the job pack area and to the first library in the normal search sequence.
Note: If you code LSEARCH in either the list or execute form of the macro, you must code it in both.
,PLIST4=YES
,PLIST4=NO
 
,PLIST8=YES
,PLIST8=NO
Defines the size of the parameter list entries for a parameter list to be built by XCTLX based on the PARAM keyword.
PLIST4 and PLIST8 cannot be specified together. If neither is specified, the default is:
  • If running AMODE 64, PLIST8=YES
  • If not running AMODE 64, PLIST4=YES

If running AMODE 64 and PLIST4=YES is specified, the system builds a 4-bytes-per-entry parameter list just as it would if the program were running AMODE 24 or AMODE 31 and did not specify PLIST4 or PLIST8.

If running AMODE 24 or AMODE 31 and PLIST8 is specified, the system builds an 8-bytes-per-entry parameter list just as it would if the program were running AMODE 64 and did not specify PLIST4 or PLIST8.

,PLIST8ARALETS=NO
,PLIST8ARALETS=YES
If there is to be an 8-byte-per-entry parameter list and the invoker is in AR mode, indicates if the parameter list is also to contain the ALETs associated with the addresses. Otherwise, this parameter is ignored.
,PLIST8ARALETS=NO
Indicates that the 8-byte-per-entry parameter list is to consist of just the 8-byte addresses.
,PLIST8ARALETS=YES
Indicates that the 8-byte-per-entry parameter list is to consist of the following two parts:
  • All the 8-byte addresses,
  • All the associated ALETs in consecutive 4-byte fields.
,MF=(E,user area)
,SF=(E,ctrl area)
,MF=(E,user area),SF=(E,ctrl area)
Specifies the execute form of the XCTL macro.

Use MF=(E,user area) to specify the address of data you want the target module to receive in register 1. If you specify PARAM, MF=(E,user area) is required and identifies the remote location where you want XCTLX to build the parameter list.

Use SF=(E,ctrl area) to point to a remote control parameter list. If you do not specify SF, XCTLX builds the control parameter list inline.