CSLRMPRS: process step

By issuing the CSLRMPRS request, a client can perform a step in an IMSplex-wide process that can consist of zero, one, or more steps.

This request is supported in assembler language.

CSLRMPRS syntax

CSLRMPRS DSECT syntax

Use the DSECT function of a CSLRMPRS request to include equate (EQU) statements in your program for the length of the CSLRMPRS parameter list and the process step request options.

Read syntax diagramSkip visual syntax diagramCSLRMPRS FUNC=DSECT

CSLRMPRS PROCESS syntax

Use the PROCESS function of a CSLRMPRS request to perform a step in an IMSplex-wide process.

Figure 0.
Read syntax diagramSkip visual syntax diagramCSLRMPRSFUNC=PROCESSPARM= parmPRCNAME= processnamePRCTOKEN= processtokenPRCTYPE= processtypeSTEPNAME= processstepnameLIST= listLISTLEN= listlengthCDATA= clientdataCDATALEN= clientdatalengthOUTPUT= outputaddressOUTLEN= outputlengthUOWTOKEN= uowtokenTIMEOUT= 300TIMEOUT= timeoutvalueOPTWORD1= processstepoptionsRETNAME= returnnameRETTOKEN= returntokenECB= ecbRETCODE= returncodeRSNCODE= reasoncodeSCITOKEN= scitoken

CSLRMPRS parameters

CDATA=symbol
CDATA=(r2-r12)
(Optional) - Specifies a variable length area that contains client data to send to clients participating in the IMSplex-wide process step. The client data has meaning to clients, not to RM.
CDATALEN=symbol
CDATALEN=(r2-r12)
(Optional) - Specifies a 4-byte input field that contains the client data length. If this parameter is specified, CDATA= must also be specified.
ECB=symbol
ECB=(r2-r12)
(Optional) - Specifies the address of a z/OS® ECB used for asynchronous requests. When the request is complete, the ECB specified is posted. If an ECB is not specified, the task is suspended until the request is complete. If an ECB is specified, the invoker of the request must issue a WAIT (or equivalent) after receiving control from CSLRM PRS before using or examining any data returned by this request (including the RETCODE and RSNCODE fields).
LIST=symbol
LIST=(r2-r12)
(Required) - Specifies the variable length input list that contains the list of clients to which to send the process step.

The process step list contains a list header and one or more list entries. The list header contains the list header length, the parameter list version, the list entry length, the list entry count, and a user data area. The list header user data area is passed back to the requestor in the list header of the process step output. Each list entry contains the client name and an optional user data area. The user data area is passed back to the requestor in a list entry in the process step output. The list entries must reside in contiguous storage.

The CSLRPRSL macro maps the process step list.

LISTLEN=symbol
LISTLEN=(r2-r12)
(Required) - Specifies a 4-byte input field that contains the process step list length.
OPTWORD1=symbol
OPTWORD1=(r2-r12)
(Optional) - Specifies a 4-byte field containing the process step options. CSLRMPRS FUNC=DSECT maps the process step options.
X'80000000'
Force process step after error. Take over a process step in progress, if a process step is already in progress for an IMSplex member that is not active. Initiate a process and perform a process step if no process is known to be in progress due to an error such as resource structure failure.
OUTLEN=symbol
OUTLEN=(r2-r12)
(Required) - Specifies a 4-byte field to receive the length of the output buffer returned by the CSLRMPRS request. After being returned by request, this word contains the length of the buffer pointed to by the OUTPUT= parameter. If no output is built, the output buffer length is zero. This can occur if an error is detected before any output can be built.

It is the caller's responsibility to release this storage by issuing the CSLSCBFR FUNC=RELEASE request when it is through with the storage.

OUTPUT=outputaddress
OUTPUT=(r2-r12)
(Required) - Specifies a 4-byte field to receive the address of the variable length output buffer returned by the CSLRMPRS request. The output buffer contains the client-defined data from each participating client and indicates the results of the process step. The output buffer length is returned in the OUTLEN= field.

If no output is built, the output buffer address is zero. This can occur if an error is detected before any output can be built.

The CSLRPRSO macro maps the output buffer that is returned. The output buffer header contains an eyecatcher, the output buffer length, the CSLRPRSO version, the header length (offset to start of the process list entries), the list entry minimum size, the process list entry count, a user data area, and the CSLRPRSO create time stamp. The user data area contains the user data passed in the input process step list header.

Each output buffer entry represents the results from a client that participated in a process step. Each entry contains the following:

  • Entry length
  • Client name
  • User data - the user data passed in the input process step list
  • Process step response length
  • Process step response
  • Completion code (CSLRRR) - possible completion codes are:
X'00000000'
Client processes step successfully.
X'00000044'
Client did not respond before the process step timed out.
X'00000048'
The client was not sent the process step request because the client is not registered to RM.

This buffer is not preallocated by the caller. After the request returns it, this word contains the address of a buffer containing information from the IMSplex members participating in the process. It is the caller's responsibility to release this storage by issuing the CSLSCBFR FUNC=RELEASE request when it is through with the storage.

PARM=symbol
PARM=(r2-r12)
(Required) - Specifies the CSLRMPRS parameter list. The length of the parameter list must be equal to the parameter list length EQU value defined by RPRS_PARMLN.
PRCNAME=symbol
PRCNAME=(r2-r12)
(Required) - Specifies an 8-byte field containing the process name. The process name is client defined and has no meaning to RM. RM uses the process name and type to ensure that only one instance of a process, with a particular process type, is in progress at one time.
PRCTOKEN=symbol
PRCTOKEN=(r2-r12)
(Required) - Specifies a 16-byte field that contains the process token that uniquely identifies the process. This token was returned on a successful CSLRMPRI FUNC=INITIATE request.

If the IMSplex is defined with a resource structure, the process token is zero.

PRCTYPE=symbol
PRCTYPE=(r2-r12)
(Required) - Specifies a 1-byte client-defined process type. Only one process of a particular type can be in progress at any one time. The process type can be 1 through 255.
RETCODE=symbol
RETCODE=(r2-r12)
(Required) - Specifies a 4-byte field to receive the return code on output. SCI return codes are defined in CSLSRR. SCI return codes are defined in CSLSRR. Possible return codes are described in the following table.
RETNAME=symbol
RETNAME=(r2-r12)
(Optional) - Specifies an 8-byte field to receive the RM name returned to the caller. This is the CSL member name of the target RM address space to which SCI sent the request.
RETNAME=symbol
RETNAME=(r2-r12)
(Optional) - Specifies an 8-byte field to receive the RM name returned to the caller. This is the CSL member name of the target RM address space to which SCI sent the request.
RSNCODE=symbol
RSNCODE=(r2-r12)
(Required) - Specifies a 4-byte field to receive the reason code on output. RM reason codes are defined in CSLRRR. SCI reason codes are defined in CSLSRR. Possible reason codes are described in the following table.
SCITOKEN=symbol
SCITOKEN=(r2-r12)
(Required) - Specifies a 16-byte field containing the SCI token. This token uniquely identifies this connection to SCI. The SCI token was returned by a successful CSLSCREG FUNC=REGISTER request.
STEPNAME=symbol
STEPNAME=(r2-r12)
(Required) - Specifies an 4-byte field containing the process step name. The process step name is client-defined and has no meaning to RM. Each process step must have a different name.
TIMEOUT=timeoutvalue
TIMEOUT=symbol
TIMEOUT=(r2-r12)
(Optional) - Specifies a 4-byte field containing the process step timeout value in seconds. If the timeout value is reached during the processing of the step, before all of the participants have responded to the process step, RM terminates the process step and returns the available responses. If the specified timeout value is too small, an incomplete response is returned. The TIMEOUT value ensures a response is returned even if a client processing the step is unable to respond.

The default timeout value is 5 minutes (300 seconds). Specify a negative one (-1) value if no timeout is required for the request.

The TIMEOUT value is the shortest possible time value that can cause the process step to time out. RM internally sets a timer to pop every 5 seconds. When the RM timer pops, RM checks to see if any process step timeout value has expired. When the process step timeout value is less than the RM timer value, the actual length of step processing can be longer than the user specified TIMEOUT value.

UOWTOKEN=symbol
UOWTOKEN=(r2-r12)
(Required) - Specifies a 16-byte field containing the unit of work token. The UOW token uniquely identifies an instance of this process and ties all of the process steps together. The UOW token must match the UOW token specified on the CSLRMPRI FUNC=INITIATE request. The UOW token is client-defined and has no meaning to RM.

CSLRMPRS return and reason codes

The following table lists the return and reason codes that can be returned on a CSLRMPRS request. Also included is the meaning of a reason code (that is, what possibly caused it).

Table 1. CSLRMPRS return and reason codes
Return code Reason code Meaning
X'00000000' X'00000000' The request completed successfully.
X'03000008' X'00002000' The client is not registered.
  X'00002110' The list version in the list header (PRSL_PVER) is zero, which is invalid. The list version must be set in the list header to the maximum list version (PRSL_PVERMAX).
  X'00002114' The list header length cannot be zero or greater than the list length that was passed in. The list header length (PRSL_HDRLEN) must be set in the list header to the list header length.
  X'00002140' The client data length cannot be zero or greater than 256.
  X'00002208' The process type is invalid.
  X'0000220C' The process step options are invalid.
  X'00002300' The process token is invalid.
  X'00002310' The UOW token is invalid.
X'0300000C' X'00003000' The process step succeeded for at least one client, but not all. Check the completion code in each list entry in the OUTPUT buffer for individual errors.
  X'00003004' The request failed for all clients. Check the completion code in each list entry in the OUTPUT buffer for individual errors.
X'03000010' X'00004000' The CQS address space is unavailable. Retry the request to attempt routing the request to another RM with an available CQS.
  X'00004100' The requested version is not supported. The client compiled with a version of CSLRMPRS that is not supported by RM. All RMs must be migrated to a new release before IMS is migrated to a new release that uses a new CSLRMPRS function.
  X'00004104' The version of the list is not supported. The client created the process step list at a version that is not supported by RM. All RMs must be migrated to a new release before the client is migrated to a new release that uses a new CSLRMPRS function.
  X'00004108' The SCI address space is unavailable. SCI was available to send the CSLRMPRS request to RM. RM tried coordinating the process step by sending SCI messages to the active clients. The SCI request to send a message to SCI failed for one or more active clients that did not have an SCI active on the system. Some of the clients might have successfully processed the step.
  X'00004124' A process is not in progress. The process step is rejected.
  X'00004128' A process step is already in progress. The process step is rejected. If a process step is already in progress because an error occurred while a previous process step was in progress, and the owner of that process step is still active, the next process step must be specified by the owner of the process step with the FORCE option.
X'03000014' X'00005000' Storage allocation for the output buffer failed. The process step might or might not have succeeded.
  X'00005114' The process block allocation failed.
  X'00005118' The process step response block allocation failed.
  X'00005200' The CQS request resulted in an unexpected error.
  X'00005204' The CQS request failed because RM incorrectly built the request input.
  X'00005208' The resource structure is not available.
  X'00005210' RM is unable to add the process block to hash table.
  X'00005214' RM is unable to find the process block in hash table.
  X'00005218' RM is unable to scan the process block in hash table.
  X'00005300' An SCI error was encountered. SCI was available to send the CSLRMPRS request to RM. RM tried coordinating the process step by sending SCI messages to the active clients. The SCI request to send a message to SCI failed with an error for one or more active clients. Some of the clients might have successfully processed the step.