CSLSCRQS: send request
By issuing the CSLSCRQS request, an IMSplex member can send a request to another member in the IMSplex. The target member can be specified by SCITOKEN, member name, or member type.
A request in an IMSplex can contain both input and output data (from the target member's perspective). This contrasts to a message that can only contain input data (again, from the target member's perspective). The data of a request is copied to the target member's address space. The function is processed, and the output is returned to the requestor's address space. If the request included an ECB, control is returned to the requesting module after the request has been processed by SCI. The requestor must then wait on the ECB.
The ECB is posted when the request processing has completed. The requestor then looks at the RETCODE and RSNCODE fields to determine the outcome of the request. If no ECB is included in the request, the RETCODE and RSNCODE fields can be used to determine the outcome of the request when the requesting module gets control back from SCI.
CSLSCRQS syntax
DSECT syntax
Use the DSECT function of a CSLSCRQS request to include equate (EQU) statements in your program for the CSLSCRQS parameter list length, the IMSplex types and the CSLSCRQS return and reason codes.
SEND REQUEST syntax
The syntax
for the CSLSCRQS FUNC=SEND request follows.
CSLSCRQS parameters
- ECB=symbol
- ECB=(r1-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 macro must issue a WAIT (or equivalent) after receiving control from CSLSCRQS, before using or examining any data returned by this macro (including the RETCODE and RSNCODE fields).
- FUNCTYPE=DEST
- FUNCTYPE=SENDER
- (Optional) - Specifies that the MBRFUNC and MBRSFUNC are defined by the DEST (destination) of this request or the SENDER of the request. This indicator is passed to the recipient of the request in the SCI Input exit parameter list.
- MBRFUNC= symbol
- MBRFUNC= (r1-r12)
- (Required) - Specifies a 4-byte member function code that is passed
to the destination of the request in the SCI Input exit parameter
list. This function code, along with the MBRSFUNC, identifies the
request that is being sent.
If MBRFUNC is a symbol, the symbol points to a four-byte area of storage that contains the function code.
- MBRPARM= symbol
- MBRPARM= (r1-r12)
- (Required) - Specifies the address of a pre-built parameter list.
This parameter list must be built by the requesting module and consists
of sets of triplets. Each triplet describes a single parameter in
the member parameter list and consists of:
- parameterlength
- Four-byte parameter that specifies the length of the member parameter.
- parameteraddress
- Four-byte parameter that specifies the address of the member parameter.
- datatype
- Four-byte parameter that specifies how this parameter is to be
handled by SCI. Equates are provided for each type (included with
CSLSCODE). These equates can be used to set the value of data type.
Possible values are:
- IN
- The parameter is an input parameter. It is copied to the destination address space with the request.
- OUT
- The parameter is an output parameter. It is copied back to the requesting address space when the request is completed by the server. The storage for the parameter must be allocated before the request is issued.
- IO
- The parameter is both an input and an output parameter. It is copied to the target address space with the request and it is copied back to the requesting address space when the request is complete.
- SCI
- The parameter is an SCI allocated output parameter. The storage for the parameter is allocated in the requestor's address space when the request is complete. The address of the storage will be returned in the parameter address field and the length will be returned in the parameter length field. The storage must be released by the requestor using the CSLSCBFR request. The eight bytes immediately in front of the address returned for an SCI-allocated output parameter are available for use by the requestor. These eight bytes are not cleared, and might contain residual data from a prior use of the buffer.
The two methods for passing parameters in a parameter list are by address and by value. Both of these methods can be used when passing parameters in a CSLSCRQS request. The triplet must be setup so that SCI will handle the parameter properly.
- By address
To pass a parameter by address, the address of the parameter must be passed in parameteraddress and the length of the parameter must be passed in parameterlength. SCI will get the parameter from parameteraddress for data type IN and IO and will store the parameter at parameteraddress for data type OUT and IO. The address at which the parameter is stored and its length is returned for data type SCI.
- By value
To pass a parameter by value, the parameter must be passed in parameteraddress and zero must be passed in parameterlength. When the length is zero, SCI will copy the value contained in parameteraddress to the destination for data type IN. All other data types must be passed by address since SCI requires an address to store any output parameters.
Member Parameter List: The user parameters specified here are presented to the program that receives the request in the member parameter list, the address of which is contained in the Input Exit Parm area field INXP_MBRPLPTR. Each parameter is represented by eight bytes, the first four bytes contain parameterlength and the second four bytes contain parameteraddress (if parameteraddress is an address, the second four bytes point to storage in the local address space, not the requesting address space). If the parameter's data type is SCI, the first four bytes will contain a length of four and the second word's value is unpredictable.
Null Parameters: In some cases a request processing module expects a set number of parameters with a defined order. If a request is to be sent that does not contain all the parameters, null parameters must be sent to ensure the data buffer contains everything that is expected. Null parameters can be sent by specifying zero for parameterlength and parameteraddress. The eights bytes that represent the parameter in the data buffer will contain zeros. This is true for any data type (IN, OUT, IO or SCI) or method of passing parameters (by address or by value).
- MBRPCNT=symbol
- MBRPCNT=(r1-r12)
- (Required) - Specifies a 4-byte field that contains the number of member parameters that are included in MBRPARM.
- MBRSFUNC=symbol
- MBRSFUNC=(r1-r12)=
- (Optional) - Specifies a 4-byte member subfunction code that is
passed to the destination of the request in the SCI input exit parameter
list. This subfunction code, along with the MBRFUNC, identifies the
request that is being sent.
If MBRSFUNC is a symbol, the symbol points to a 4-byte area of storage that contains the sub-function code.
- NAME=symbol
- NAME=(r1-r12)
- (Optional) - Specifies the address of an 8-byte member name of
the destination of this request. This name can be obtained from the
Notify exit (when the member joins the IMSplex) or by issuing a CSLSCQRY
request. Note: One of the routing parameters (NAME, TOKEN or TYPE) must be included.
- PARM=symbol
- PARM=(r1-r12)
- (Required) - Specifies the address of a parameter list used by the request to pass the parameters to SCI. The length of the storage must be at least equal to the value of SRQS_LN.
- RETCODE=symbol
- RETCODE=(r1-r12)
- (Required) - Specifies the address of a 4-byte field to receive the CSLSCRQS return code. SCI return codes are defined in CSLSRR. Possible return codes for CSLSCRQS are described in the following table.
- RETNAME=symbol
- RETNAME=(r1-r12)
- (Optional) - Specifies the address of an 8-byte field to receive the name of the SCI that processes the request.
- RETTOKEN=symbol
- RETTOKEN=(r1-r12)
- (Optional) - Specifies the address of a 16-byte field to receive the SCI token of the SCI that processes the request.
- RSNCODE=symbol
- RSNCODE=(r1-r12)
- (Required) - Specifies the address of a 4-byte field to receive the CSLSCRQS reason code. SCI reason codes are defined in CSLSRR. Possible reason codes for CSLSCRQS are described in the following table.
- SCITOKEN=symbol
- SCITOKEN=(r1-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.
- TOKEN=symbol
- TOKEN=(r1-r12)
- (Optional) - Specifies the address of the 16-byte SCI token of
the destination of this request. This token can be obtained either
from the Notify exit (when the member joins the IMSplex) or by issuing
a SLSCQRY message. Note: One of the routing parameters (NAME, TOKEN, TYPE) must be included.
- TYPE=symbol
- TYPE=(r1-r12)
- TYPE='AOP'
- TYPE='BATCH'
- TYPE='CQS'
- TYPE='DBRC'
- TYPE='IMS'
- TYPE='IMSCON'
- TYPE='ODBM'
- TYPE='OM'
- TYPE='OTHER'
- TYPE='RM'
- TYPE='SCI'
- Input parameter that specifies the IMSplex member type of the
IMSplex member to which this request should be routed. The IMSplex
member type routing can be further qualified by using the SUBTYPE
parameter. If TYPE is specified, SCI chooses the IMSplex member of
the requested type to which the request is sent.
If member type is specified as a literal, the literal must be enclosed in single quotes. If this parameter is passed as a symbol or register, the symbol or register must contain the member type code. The member type code can be obtained by using the CSLSTPIX macro.
Note: One of the routing parameters (NAME, TOKEN, TYPE) must be included.
CSLSCRQS return and reason codes
The following table lists the return and reason codes that can be returned on a CSLSCRQS macro request. Also included is the meaning of a reason code (that is, what possibly caused it).
| Return code | Reason code | Meaning |
|---|---|---|
| X'00000000' | X'00000000' | The request completed successfully. |
| X'01000008' | X'00002004' | The function passed to the SCI interface PC routine is invalid. |
| X'00002008' | The number of parameters passed was either less than or equal to zero, or greater than the maximum allowed. | |
| X'00002010' | An invalid type was passed. | |
| X'00002018' | This SCI token is invalid. | |
| X'00002024' | The PHDR length is invalid. | |
| X'00002028' | The routing data length is invalid. | |
| X'0000202C' | The request target member is not key 7. | |
| X'00002030' | The request target member is not authorized. | |
| X'00002034' | The length of the parameters is too large for a non-authorized caller. | |
| X'00002038' | The parameter list version is invalid. | |
| X’0000203C’ | CSLSCRQS was called in SRB mode for a synchronous request (no ECB= coded). | |
| X'01000010' | X'00004000' | SCI is not active on the local LPAR where this SCI request is being issued. |
| X'0000400C' | The destination IMSplex member is not active, or is not reachable due to the SCI not being active on the LPAR of the remote destination member. The requested member might have been specified by name, token, or type. | |
| X'0000401C' | The calling member is in the process of deregistering from SCI. | |
| X'00004020' | The request timed out. | |
| X'01000014' | X'00005000' | An SCI internal error occurred. |
| X'00005004' | An ESTAE add error occurred. | |
| X'00005024' | An SRB routine error occurred. | |
| X'00005028' | The routing type is invalid. | |
| X'0000502C' | The member could not be found due to an internal BPE hash table services error. | |
| X'00005030' | A buffer in the destination member's address space could not be obtained. | |
| X'00005034' | A key 7 buffer in the SCI address space could not be obtained for a copy of PHDR and parameters. | |
| X'00005038' | An IEAMSCHD error occurred; an SRB could not be scheduled to the target address space. | |
| X'0000503C' | MRT could not be expanded. | |
| X'00005044' | An SCI-allocated output buffer could not be obtained. | |
| X'0000504C' | A message SRB key 7 parameter area could not be obtained. | |
| X'0000507C' | An IXCMSGO error occurred. | |
| X'00005500' | An abend occurred during CSLSCRQS processing. | |
| X'00005504' | An abend occurred while the member parameters were copied to the target address space. |
