CSLRMREG: register clients

You use the CSLRMREG request to register a client to RM and, optionally, to register the client's resource types and associated name types. The client being registered to RM must be authorized to issue a CSLRMREG request. However, you cannot register a client if an IMSplex-wide process is in progress.

You must register a client to RM before the client can issue any other RM requests. After the client is registered, it must participate in any IMSplex-wide processes that are performed. You must register the client to all RMs that are active in the IMSplex. If registration to an RM fails, you must deregister the client from any RMs to which the client had successfully registered. If an RM fails, register with it when it restarts.

You can register the same client multiple times. For example, you might need to specify the resource list for the client after the client is already registered. Optionally, register resource types to RM along with the client to define the resource types to RM and associate a name type with each resource type. You must register resource types before you can specify them in other requests. You cannot register the client if the resource type and name type associations do not match those already registered previously.

Resource-processing clients, such as the IMS control region, issue this request.

This request is supported in assembler language.

CSLRMREG syntax

CSLRMREG DSECT syntax

Use the DSECT function of a CSLRMREG request to include the following inputs and outputs in your program:

  • Equate (EQU) statements for the length of the CSLRMREG parameter list
  • The CSLRMREG return codes, reason codes, and completion codes
  • The CSLRREGL DSECT to map the input registration list
  • The CSLRREGO DSECT to map the register output
Read syntax diagramSkip visual syntax diagramCSLRMREG FUNC=DSECT

CSLRMREG REGISTER syntax

Use the CSLRMREG request to register a client to RM and, optionally, to register the client's resource types and associated name types to RM.

Read syntax diagramSkip visual syntax diagramCSLRMREG FUNC=REGISTER RMNAME= rmname OUTLEN= outputlength OUTPUT= output LIST= reglistLISTLEN= reglistlength ECB= ecb PARM= parm RETCODE= returncode RSNCODE= reasoncode SCITOKEN= scitoken

CSLRMREG parameters

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 CSLRMREG before using or examining any data returned by this request (including the RETCODE and RSNCODE fields).
LIST=symbol
LIST=(r2-r12)
(Optional) - Specifies the registration list built by the caller. Each list entry is a separate resource type registration. If a registration list is specified when no resource structure is defined, it is ignored.

The CSLRREGL macro maps the registration list entry. The list contains a header and one or more list entries. The list entries must reside in contiguous storage. Each registration list entry contains the following:

  • Resource type
  • Name type
LISTLEN=symbol
LISTLEN=(r2-r12)
(Optional) - Specifies the 4-byte registration list length. LISTLEN is required if LIST is specified.
OUTLEN=symbol
OUTLEN=(r2-r12)
(Required) - Specifies a 4-byte field to receive the length of the output returned by the CSLRMREG request. OUTLEN contains the length of the output pointed to by the OUTPUT= parameter.

The output length is zero if no output is built, for example, if an error is detected before any output can be built.

OUTPUT=output
OUTPUT=(r2-r12)
(Required) - Specifies a 4-byte field to receive the address of the variable length output returned by the CSLRMREG request. The output contains a header and zero, one, or more registration entries for registrations that were attempted. The output length is returned in the OUTLEN= field.

The output address is zero if no output was built, for example, if an error was detected before any output could be built.

The CSLRREGO macro maps the output that is returned. The output contains a header and zero, one, or more list entries. The output header contains the following:

  • Eyecatcher
  • Output length
  • CSLRREGO version
  • CSLRREGO header length (offset to start of entries)
  • CSLRREGO entry length
  • Registration list count
  • Time stamp
  • Registration status
  • Structure version

Each output entry represents a registration request that was attempted. Each entry contains the following:

  • Resource type
  • Name type
  • Completion code for the registration request. Completion codes are mapped by CSLRRR. Possible completion codes are:
X'00000000'
Register succeeded.
X'00000008'
Invalid resource type. The resource type cannot be zero.
X'0000000C'
Invalid name type. The name type cannot be zero, or the resource type is already defined with a different name type.
PARM=symbol
PARM=(r2-r12)
(Required) - Specifies the CSLRMREG parameter list. The length of the parameter list must be equal to the parameter list length EQU value defined by RREG_PARMLN.
RETCODE=symbol
RETCODE=(r2-r12)
(Required) - specifies a 4-byte field to receive the return code on output. RM return codes are defined in CSLRRR. SCI return codes are defined in CSLSRR. Possible return codes are described in the following table.
RMNAME=symbol
RMNAME=(r2-r12)
(Required) - Specifies an 8-byte RM name to which to send the registration 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.

CSLRMREG return and reason codes

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

Table 1. CSLRMREG return and reason codes
Return code Reason code Meaning
X'00000000' X'00000000' The request completed successfully.
X'03000004' X'00001100' The request completed successfully but the LIST is ignored. No resource structure is defined.
X'03000008' X'00002100' The registration-list length is invalid.
  X'00002108' The registration-list address is invalid.
  X'00002110' The list version in the list header (REGL_PVER) is zero, which is invalid. The list version must be set in the list header to the maximum list version (REGL_PVERMAX).
  X'00002114' The list header length cannot be zero or greater than the list length that was passed in. The list header length (REGL_HDRLEN) must be set in the list header to the list header length.
X'0300000C' X'00003000' The request is valid for at least one list entry, but not all. The registration for the valid list entries is not performed and the client registration is rejected. Check the completion code in each list entry in the OUTPUT buffer for individual errors.
  X'00003004' The request failed for all entries. Check the completion code in each list entry in the OUTPUT buffer for individual errors.
X'03000010' X'00004010' The client is not authorized.
  X'00004100' The requested version is not supported. The client compiled with a version of CSLRMREG 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 CSLRMREG function.
  X'00004104' The list version is not supported. The client created the registration 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 CSLRMREG function.
X'03000014' X'00005000' Storage allocation for the register output buffer failed.
  X'00005100' Storage allocation for CQSUPD buffer failed.
  X'00005200' CQS request resulted in an unexpected error.
  X'00005204' CQS request failed because RM incorrectly built request input.
  X'00005110' The client block allocation failed.