Description

Use the IOSCAPU macro to access an above 16 megabyte unit control block (UCB) with a 24-bit address. IOSCAPU creates a view into the actual above 16 megabyte UCB in below 16 megabyte private storage, which is known as capturing the UCB. An above 16 megabyte UCB is automatically captured at allocation and released at deallocation. You can also use IOSCAPU to explicitly capture and release an above 16 megabyte UCB if necessary.

IOSCAPU enables you to perform the following functions:

The environment, programming requirements, restrictions, input register information, output register information, and performance implications generally apply to all the functions. Any exceptions are noted. The syntax, return and reason codes, abend codes, examples, and forms are described in a separate section for each function. See Capture an UCB function, Release a captured UCB function, and Translate captured to actual address function.

Similar to IOSCAPU with the CAPTOACT option, the IOSCAPF macro obtains the above 16 megabyte address of a captured UCB. IOSCAPF enables you to pass the captured UCB address in register 1 rather than in a parameter list but does not provide input parameter validation or recovery.

For information about accessing an above 16 megabyte UCB, see z/OS MVS Programming: Authorized Assembler Services Guide.

Environment

The requirements for the caller are:

Environmental factor Requirement
Minimum authorization:

CAPTUCB or UCAPTUCB option: problem state with PSW key 0-7, or supervisor state

CAPTOACT option with ASID: problem state with PSW key 0-7, or supervisor state

CAPTOACT option without ASID: problem state and any PSW key.

For any of the options with LINKAGE=BRANCH: supervisor state with PSW key 0 is required.

Dispatchable unit mode: Task or SRB
Cross memory mode:

CAPTUCB or UCAPTUCB option: PASN=HASN=SASN

CAPTOACT option: any PASN, any HASN, any SASN

AMODE: 24- or 31-bit
ASC mode: Primary or Access register (AR)
Interrupt status:

CAPTUCB or UCAPTUCB option with CAPTCOM=NO: enabled for I/O and external interrupts

CAPTUCB option with CAPTCOM=NEVER: enabled for I/O interrupts.

CAPTUCB or UCAPTUCB option with CAPTCOM=YES: enabled or disabled for I/O and external interrupts.

CAPTOACT option: enabled or disabled for I/O and external interrupts.

Locks:

CAPTUCB or UCAPTUCB option with CAPTCOM=NO: no locks held.

CAPTUCB option with CAPTCOM=NEVER: no locks held.

CAPTUCB or UCAPTUCB option with CAPTCOM=YES: the caller may hold locks, but is not required to hold any.

CAPTOACT option: the caller may hold locks, but is not required to hold any.

Control parameters: If the caller of IOSCAPU with the CAPTOACT option is disabled, the parameter list must be in nonpageable or disabled reference (DREF) storage. This situation is also true for a caller of IOSCAPU with the CAPTUCB or UCAPTUCB option and the CAPTCOM=YES parameter.

Programming requirements

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

Restrictions

Only use IOSCAPU CAPTOACT without ASID, to translate a captured UCB address that was captured in your primary address space.

Input register information

Before issuing the IOSCAPU macro, the caller does not have to place any information into any register unless using it in register notation for a particular parameter, or using it as a base register.

Output register information

When control returns to the caller, the GPRs contain:
Register
Contents
0
Reason code
1
Used as a work register by the system
2-13
Unchanged
14
Used as a work register by the system
15
Return code
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.