IOSDCXR — Obtain address of the device class extension segment

Description

Use the IOSDCXR macro to obtain the address of the unit control block (UCB) device class extension segment. For example, the DASD device class extension segment is mapped by the IECDDCE macro and the tape device class extension segment is mapped by the IECUCBCX macro.

Note: If you supply a captured UCB as input, you receive the address of the captured UCB device class extension segment except under either of the following conditions:
  • The unit information module (UIM) indicates that the device class extension segment can reside above 16 megabytes independent of the rest of the UCB.
  • The UIM indicates that a single device class extension segment can be shared by multiple UCBs.
In these cases, you receive the address of the actual, not captured, UCB device class extension segment.

Other macros provide addresses to other UCB segments. For example, UCBLOOK, IOSCMXA, and IOSCMXR provide the address of the UCB common extension segment. For guidance about obtaining UCB information, see z/OS MVS Programming: Authorized Assembler Services Guide.

Environment

The requirements for the caller are:

Environmental factor Requirement
Minimum authorization: Problem state and any PSW key.
Dispatchable unit mode: Task or SRB
Cross memory mode: PASN=HASN=SASN
AMODE: 24- or 31-bit
ASC mode: Primary
Interrupt status: Enabled or disabled for I/O and external interrupts.
Locks: No locks held.
Control parameters: None.

Programming requirements

The caller must pass a valid captured or actual UCB address.

The caller must pin the UCB or otherwise guarantee that the UCB will not be dynamically deleted.

The caller must supply recovery to handle any unexpected errors, such as abends.

Restrictions

If you input a captured UCB address, the UCB must be captured in the primary address space.

Input register information

Before issuing the IOSDCXR macro, the caller must ensure that the following general purpose registers (GPRs) contain the specified information:
Register
Contents
1
Address of UCB common segment

Before issuing the IOSDCXR macro, the caller does not have to place any information into any access register (AR).

Output register information

When control returns to the caller, the GPRs contain:
Register
Contents
0
Used as a work register by the system.
1
Address of the UCB device class extension segment if the UCB has a device class extension segment. Zero if the UCB does not have a device class extension segment.
2-13
Unchanged
14-15
Used as work registers by the system.
When control returns to the caller, the ARs contain:
Register
Contents
0-15
Unchanged

Some callers depend on register contents remaining the same before and after issuing a service. If the system changes the contents of registers on which the caller depends, the caller must save them before issuing the service, and restore them after the system returns control.

Performance implications

None.

Syntax

The standard form of the IOSDCXR macro is written as follows:

Syntax Description
   
   name name: symbol. Begin name in column 1.
   
One or more blanks must precede IOSDCXR.
   
IOSDCXR  
   
One or more blanks must follow IOSDCXR.
   
MF=(S) Default: S
   

Parameters

The parameters are explained as follows:

MF=(S)
Specifies the standard form of the macro. This parameter is optional.

ABEND codes

None.

Return and reason codes

None.