The UEPCLPS exit-specific parameter

The UEPCLPS exit-specific parameter is included in both exit XTSEREQ and exit XTSEREQC. It is the address of the command-level parameter structure.

The command-level parameter structure contains 8 addresses, TS_ADDR0 through TS_ADDR7. It is defined in the DSECT TS_ADDR_LIST, which you should copy into your exit program by including the statement COPY DFHTSUED.

The command-level parameter list is made up as follows.

Note: The relationship between arguments, keywords, data types, and input/output types is summarized for the temporary storage commands in the following tables:
Table 1. The relationship between arguments, keywords, data types, and input/output types for the temporary storage commands
Command See
WRITEQ TS Table 1
READQ TS Table 2
DELETEQ TS Table 3
TS_ADDR0
is the address of a 9-byte area called the EID, which is made up as follows:
  • TS_GROUP
  • TS_FUNCT
  • TS_BITS1
  • TS_BITS2
  • TS_EIDOPT5
  • TS_EIDOPT6
  • TS_EIDOPT7
  • TS_EIDOPT8
TS_GROUP
Always X'0A', indicating that this is a temporary storage request.
TS_FUNCT
One byte that defines the type of request:
X'02'
WRITEQ
X'04'
READQ
X'06'
DELETEQ
TS_BITS1
Existence bits that define which arguments were specified. To obtain the argument associated with a keyword, you need to use the appropriate address from the command-level parameter structure. Before using this address, you must check the associated existence bit. If the existence bit is set off, the argument was not specified in the request and the address should not be used.
X'80'
Set if the request contains an argument for the QUEUE or QNAME keyword. If set, TS_ADDR1 is meaningful.
X'40'
Set if the request contains an argument for any of the FROM, INTO, or SET keywords. If set, TS_ADDR2 is meaningful.
X'20'
Set if the request contains an argument for the LENGTH keyword. If set, TS_ADDR3 is meaningful.
X'10'
Set if the request contains an argument for the NUMITEMS keyword. If set, TS_ADDR4 is meaningful.
X'08'
Set if the request contains an argument for the NUMITEMS or ITEM keyword. If set, TS_ADDR5 is meaningful.
X'02'
Set if the request contains an argument for the SYSID keyword. If set, TS_ADDR7 is meaningful.
TS_BITS2
Two bytes not used by temporary storage.
TS_EIDOPT5
Indicates whether certain keywords were specified on the request.
X'80'
QNAME was specified (otherwise QUEUE). You can modify this bit in your user exit if you want.
TS_EIDOPT6
One byte not used by temporary storage.
TS_EIDOPT7
Indicates whether certain functions and/or keywords were specified on the request.
X'10'
WRITEQ NOSUSPEND specified.
X'80'
WRITEQ MAIN or READQ ITEM specified.
X'04'
WRITEQ REWRITE or READQ NUMITEMS specified.
TS_EIDOPT8
Indicates whether certain keywords were specified on the request.
X'80'
ITEM was specified (otherwise NUMITEMS).
TS_ADDR1
is the address of area containing 8-byte name from QUEUE. or 16-byte name from QNAME. To determine which of these is applied, see the TS_BITS2 field.
TS_ADDR2
is the address of one of the following:
  • A 4-byte address from SET (if the request is READQ and TS_EIDOPT5 indicates that this is SET).
  • Data from INTO (if the request is READQ and TS_EIDOPT5 indicates that this is not SET).
  • Data from FROM (if the request is WRITEQ).
TS_ADDR3
is the address of the halfword value of LENGTH (if the request is READQ or WRITEQ).
Warning: For requests that specify INTO, do not change the value of LENGTH to a value greater than that specified by the application. To do so causes a storage overlay in the application.
TS_ADDR4
is the address of the halfword value of NUMITEMS (if the request is READQ).
TS_ADDR5
is the address of one of the following:
  • The halfword value of NUMITEMS (if the request is WRITEQ)
  • The halfword value of ITEM (if the request is READQ or WRITEQ).
TS_ADDR6
is the address of a value intended for CICS® internal use only. It must not be used.
TS_ADDR7
is the address of an area containing the value of SYSID.