z/OS BDT Installation
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


BDTUX14—BDT User-Defined XOID Type Conversion

z/OS BDT Installation
SC14-7582-00

Type

Customization (optional).

General Description

This exit routine recognizes and processes user-defined XOID type codes (XOIDXTYP) when converting from internal to external format or external to internal format. Internal to external conversion occurs when the XOID is printed in readable form as part of a message. External to internal conversion occurs on the XOID specification in a MESSAGE (Z) command and other situations. See Initialization Flow and User Exit Routines for a list of modules that issue the BDTXMSG macro and the types of conversions BDTXXOID performs for those modules.

A conversion takes place whenever a BDT module issues the BDTXXOID macro to request the conversion of an XOID. The conversion occurs in a subroutine located in BDTGRXD, the module from which this user exit routine runs.

See Initialization Flow and User Exit Routines for a diagram of internal to external conversions of XOIDs.

For internal to external conversions, you can use this exit routine to check the XOIDXTYP field in the XOID (mapped by BDTDXOID). This field must fall between 128-255 for an internal to external conversion of the XOID type which describes the type of user issuing the message.

An internal to external conversion is necessary whenever BDT wants to display the XOID part of the message text. The system identification, user type, and ddname (for TSO users, the actual user identification) are placed in the message.

For external to internal conversions, the conversion takes place when all valid BSIDXTYP codes (external format) have been tested and the type is not recognized. An example of this occurs with the MESSAGE command. One user sends another user a message using the Z command. BDT must convert the externalized address of the message recipient into an internal format to route the message. If that user is of a type not defined to BDT but is a type that falls within the user range, the user exit routine can verify the type and convert the external XOID.

Register Conventions at Entry

BDTXCALL linkage is used to establish the interface to the user exit routine. Registers 2-14 are saved by ASAVE processing.
Register 0
Contains a reason code:
Reason 0
Indicates an internal to external conversion is necessary.
Reason 4
Indicates an external to internal conversion is necessary.
Register 1
Contains the address of a two-word parameter list:
Reason 0
For internal to external conversion:
Word 1
Address of the XOID data to be converted into an external representation
Word 2
Address of the external text area where the external representation of the XOID data for conversion is to be placed
Reason 4
For external to internal conversion:
Word 1
Address of the XOID data where the converted internal representation of the XOID is to be placed
Word 2
Address of the external form of the XOID to be converted into its internal XOID representation
Register 12
Contains the address of the BDT TVT.
Register 13
Contains the address of the register save area set up by ASAVE processing.
Register 14
Contains the address of the return point, which is saved in BDTGRSV.
Register 15
Entry point address into BDTUX14.

Register Conventions at Exit

Because BDTXCALL linkage is used to establish the interface to the BDTUX14 user exit routine, registers 2-14 of BDTGRXD are saved in BDTGRSV. You must store registers 12, 13, and 14 in an area you provide (either an area obtained by GETMAIN or one within your user exit routine) and those registers must be restored on return to BDTGRSV by register 14.
Register 14
Contains the address of the return point, which is saved in BDTGRSV.
Register 15
Used for returning a return code value set by the BDTUX14 user exit routine:
RC 0
Indicates the conversion was successful.
RC 4
Indicates the exit routine does not recognize the XOID as user defined.

Operation

BDTGRXD invokes BDTUX14 for two different situations. It is given control when the XOID, in its internal (unreadable) format, must be converted to readable format and placed into a message.

The exit routine receives control in this case if the XOIDXTYP is greater than or equal to XOIDUSER (128). The user exit routine runs with reason code 0 passed in register 0. The exit routine examines the type field of the XOID, determines the external text string that represents the internal XOID code, and moves the text string to the address passed for external XOID text. A return code of 4 informs BDTGRXD that the XOID is unrecognized and unconverted. The external XOID on the message is set to question marks.

This user exit routine also runs for external to internal conversion of user-defined XOIDXTYPs. If the external XOIDXTYP code is not recognized, BDTGRXD calls the user exit routine. If the exit routine recognizes the type, it then examines the external XOID text. It determines the internal representation of this text, then sets the type field in the passed XOIDXTYP. A return code of 4 indicates that the XOIDXTYP is unrecognized.

In either external to internal or internal to external conversions, if the conversion is successful, a return code of 0 is delivered to BDTGRXD.

Recovery the Exit Routine Must Establish: You should provide ESTAE protection for your user exit routine. If you do not provide an ESTAE, clean-up for the exit routine in the event of exit routine failure is provided by an ESTAE exit routine established for the transaction driver (BDTGRXD).

Environment

Point Where Exit Routine Receives Control: This exit routine receives control in BDTGRXD whenever XOIDXTYP falls within the user range (128-255), or whenever the external format of the XOIDXTYP code is not recognized.

Address Space in Which Exit Routine Runs: BDT address space.

Task under Which Exit Routine Runs: TCB for the routine that issues the BDTXXOID macro (see Initialization Flow and User Exit Routines for a list of the modules that issue the BDTXXOID macro).

PSW State: Supervisor.

Storage Protection Key: BDTKEY (key 8).

Data Areas

Mapping Macros
  • BDTDGSD to map the GSD (used for coding an ESTAE)
  • BDTDREG to map the registers
  • BDTDTVT to map the TVT
  • BDTDXOID to map the XOID
Executable Macros
  • BDTXASRV to invoke abend services during abend recovery processing

What If BDTUX14 Is Not Used?

No conversion is possible on user-defined types.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014