Use IARCP64 to request 64-bit cell pool services.
The requirements for the caller are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | For IARCP64 REQUEST=BUILD,
use of the COMMON=YES, TYPE=DREF, TYPE=FIXED, OWNINGTASK=RCT, MEMLIMIT=NO,
or MOTKN parameter or the Key00ToF0 parameter with a value other than X'90',
require any of the following:
|
Dispatchable unit mode: | Task or SRB |
Cross memory mode: | Any PASN, any HASN, any SASN |
AMODE: | 64-bit |
ASC mode: | Primary or access register (AR) |
Interrupt status: | For the BUILD and DELETE
requests, enabled. For the GET and FREE
requests:
|
Locks: | For the BUILD and DELETE requests, no locks may
be held. For the GET request, the following locks must be held
by the caller or must be obtainable by IARCP64:
For the FREE request, the caller might hold locks but is not required to hold any. |
Control parameters: | Control parameters must be in the primary address space. |
Specify SYSSTATE AMODE64=YES prior to invoking this macro.
None.
Before issuing the IARCP64 macro, the caller does not have to place any information into any general purpose register (GPR) or access register (AR) unless using it in register notation for a particular parameter, or using it as a base register.
When control returns to the caller, the 64-bit GPRs contain:
Some callers depend on register contents remaining the same before and after issuing a service. If the system changes the contents of registers on which the caller depends, the caller must save them before issuing the service, and restore them after the system returns control.
None.
The standard form of the IARCP64 macro is written as follows:
Syntax | Description |
---|---|
name | name: symbol. Begin name in column 1. |
␣ | One or more blanks must precede IARCP64. |
IARCP64 | |
␣ | One or more blanks must follow IARCP64. |
REQUEST=BUILD | |
REQUEST=GET | |
REQUEST=FREE | |
REQUEST=DELETE | |
,HEADER=header | header: RS-type address or address in register (2) - (12) |
,CELLSIZE=cellsize | cellsize: RS-type address or address in register (2) - (12) |
,OUTPUT_CPID=output_cpid | output_cpid: RS-type address or address in register (2) - (12) |
,COMMON=NO | |
,COMMON=YES | |
,OWNINGTASK=CURRENT | |
,OWNINGTASK=MOTHER | |
,OWNINGTASK=IPT | |
,OWNINGTASK=JOBSTEP | |
,OWNINGTASK=CMRO | |
,OWNINGTASK=RCT | |
,MEMLIMIT=YES | Default: MEMLIMIT=YES |
,MEMLIMIT=NO | |
,MOTKN=motkn | motkn: RS-type address or address in register (2) - (12) |
,MOTKN=NO_MOTKN | Default: MOTKN=NO_MOTKN |
,DUMP=LIKERGN | |
,DUMP=LIKELSQA | |
,DUMP=LIKECSA | |
,DUMP=LIKESQA | |
,DUMP=NO | |
,DUMPPRIO=dumpprio | dumpprio: RS-type address or address in register (2) - (12) |
,OWNER=HOME | |
,OWNER=PRIMARY | |
,OWNER=SECONDARY | |
,OWNER=SYSTEM | |
,OWNER=BYASID | |
,OWNINGASID=owningasid | owningasid: RS-type address or address in register (2) - (12) |
,FPROT=YES | |
,FPROT=NO | |
,TYPE=PAGEABLE | |
,TYPE=DREF | |
,TYPE=FIXED | |
,CALLERKEY=YES | |
,CALLERKEY=NO | |
,KEY00TOF0=key00tof0 | key00tof0: RS-type address or address in register (2) - (12) |
,TRAILER=COND | |
,TRAILER=YES | |
,TRAILER=NO | |
,FAILMODE=RC | |
,FAILMODE=ABEND | |
,LOCALSYSAREA=NO | Default: LOCALSYSAREA=NO |
,LOCALSYSAREA=YES | |
,INPUT_CPID=input_cpid | input_cpid: RS-type address or address in register (2) - (12) |
,CELLADDR=celladdr | celladdr: RS-type address or address in register (2) - (12) |
,EXPAND=YES | |
,EXPAND=NO | |
,TRACE=YES | |
,TRACE=NO | |
,CELLNAME=cellname | cellname: RS-type address or address in register (2) - (12) |
,CELLADDR=celladdr | celladdr: RS-type address or address in register (2) - (12) |
,REGS=SAVE | |
,REGS=USE | |
,INPUT_CPID=input_cpid | input_cpid: RS-type address or address in register (2) - (12) |
,RETCODE=retcode | retcode: RS-type address or register (2) - (12), (GPR15), (REG15), or (R15). |
,RSNCODE=rsncode | rsncode: RS-type address or register (2) - (12), (GPR0), (GPR00), (REG0), (REG00), or (R0). |
,PLISTVER=IMPLIED_VERSION | Default: PLISTVER=IMPLIED_VERSION |
,PLISTVER=MAX | |
,PLISTVER=0 | |
,MF=S | Default: MF=S |
,MF=(L,list addr) | list addr: RS-type address or register (1) - (12) |
,MF=(L,list addr,attr) | |
,MF=(L,list addr,0D) | |
,MF=(E,list addr) | |
,MF=(E,list addr,COMPLETE) |
|
The parameters are explained as follows:
The following parameters are valid when you specify REQUEST=BUILD:
To code: Specify the RS-type address, or address in register (2)-(12), of a 24-character field.
To code: Specify the RS-type address, or address in register (2)-(12), of a fullword field, or specify a literal decimal value.
To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.
To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.
To code: Specify the RS-type address, or address in register (2)-(12), of an one-byte field.
To code: Specify the RS-type address, or address in register (2)-(12), of a halfword field.
To code: Specify the RS-type address, or address in register (2)-(12), of an one-byte field.
The following parameters are valid when you specify REQUEST=GET:
To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.
To code: Specify the RS-type address, or address in register (2)-(12), of an eight-byte pointer field.
The following parameters are valid when you specify REQUEST=FREE:
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
To code: Specify the RS-type address, or address in register (2)-(12), of an eight-byte pointer field.
The following parameters are valid when you specify REQUEST=DELETE:
To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.
The following parameters are optional:
To code: Specify the RS-type address of a fullword field, or register (2)-(12), (GPR15), (REG15), or (R15).
To code: Specify the RS-type address of a fullword field, or register (2)-(12), (GPR0), (GPR00), (REG0), (REG00), or (R0).
If you can tolerate the size change, specify PLISTVER=MAX on the list form of the macro. Specifying MAX ensures that the list-form parameter list is always long enough to hold all the parameters you might specify on the execute form, when both are assembled with the same level of the system. In this way, MAX ensures that the parameter list does not overwrite nearby storage.
Use MF=S to specify the standard form of the macro, which builds an inline parameter list and generates the macro invocation to transfer control to the service. MF=S is the default.
Use MF=L to specify the list form of the macro. Use the list form together with the execute form of the macro for applications that require reentrant code. The list form defines an area of storage that the execute form uses to store the parameters. Only the PLISTVER parameter may be coded with the list form of the macro.
Use MF=E to specify the execute form of the macro. Use the execute form together with the list form of the macro for applications that require reentrant code. The execute form of the macro stores the parameters into the storage area defined by the list form, and generates the macro invocation to transfer control to the service.
The IARCP64 caller might receive abend code X'DC4'. For detailed abend code information, see z/OS MVS System Codes.
Macro IAXSERVC provides equated symbols for the return and reason codes.
The following table identifies the hexadecimal return and reason codes and the equated symbol associated with each reason code.
Hexadecimal Return Code | Hexadecimal Reason Code | Equate Symbol Meaning and Action |
---|---|---|
00 | None | Equate Symbol: IARCP64Rc_OK Meaning: IARCP64 request successful. Action: None required.
|
04 | None | Equate Symbol: IARCP64Rc_Warn Meaning: Warning Action: Refer to the action provided with the specific reason code. |
04 | xx0400xx | Equate Symbol: IARCP64RsnGetOutOfCells Meaning: The request to the IARCP64 GET service specified EXPAND=NO and the current extent is out of cells. Action: Either change the request to specify EXPAND=YES or write logic to deal with no cell being available. |
08 | None | Equate Symbol: IARCP64Rc_Fail Meaning: Service failed due to running out of resources. Action: Refer to the action provided with the specific reason code. |
08 | xx0401xx | Equate Symbol: IARCP64RsnMemlimitExhausted Meaning: The request to either the IARCP64 BUILD, IARCP64 GET when the pool is being expanded or the IARST64 GET when a new extent is required was not able to obtain private storage due to the address space MEMLIMIT. Action: Either raise the MEMLIMIT of the address space or determine if private storage is being consumed excessively somewhere. |
08 | xx0402xx | Equate Symbol: IARCP64Rsn64BitCommonExhausted Meaning: The request to either the IARCP64 BUILD, IARCP64 GET when the pool is being expanded or the IARST64 GET when a new extent is required was not able to obtain common storage due to there being insufficient 64 bit common storage to satisfy the request. Action: For common storage, either raise the system limit on common (HVCOMMON) or determine if common storage is being consumed excessively somewhere. |
The coding sample follows:
IARCP64 REQUEST=BUILD,HEADER=theHeader,
CELLSIZE=theCellsize,OUTPUT_CPID=theCPID,
COMMON=NO,OWNINGTASK=CURRENT,DUMP=LIKERGN,
FPROT=NO,TYPE=PAGEABLE,
CALLERKEY=NO,KEY00TOF0=theKEY,
TRAILER=YES,FAILMODE=RC,
RETCODE=LRETCODE,RSNCODE=LRSNCODE,
MF=(E,IARCP64L)
( Place code to check return/reason codes here.)
theHEADER DC CL24 Header for pool
theCellsize DC F'32' 32-byte cells
Key00ToF0 DC X'30' Key 3 (bits 0-3 of the byte)
IAXSERVC Return/Reason code information
DYNAREA DSECT
LRETCODE DS F
LRSNCODE DS F
theCPID DS D
IARCP64 MF=(L,IARCP64L)
The coding sample follows:
IARCP64 REQUEST=GET,INPUT_CPID=theCPID,
CELLADDR=theCellAddr,
EXPAND=NO,
FAILMODE=RC,
REGS=SAVE,
RETCODE=LRETCODE,RSNCODE=LRSNCODE,
(Place code to check return/reason codes here.)
IAXSERVC Return/Reason code information
DYNAREA DSECT
LRETCODE DS F
LRSNCODE DS F
theCPID DS D
theCellAddr DS D
The coding sample follows:
IARCP64 REQUEST=FREE,
CELLADDR=theCellAddr,
REGS=SAVE
IAXSERVC Return/Reason code information
DYNAREA DSECT
theCPID DS D
theCellAddr DS D
The coding sample follows:
IARCP64 REQUEST=DELETE,INPUT_CPID=theCPID,
MF=(E,IARCP64L)
IAXSERVC Return/Reason code information
DYNAREA DSECT
theCPID DS D
IARCP64 MF=(L,IARCP64L)