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.
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.
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. |
The caller must pin the UCB or otherwise guarantee that the UCB will not be dynamically deleted.
Only use IOSCAPU CAPTOACT without ASID, to translate a captured UCB address that was captured in your primary address space.
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.
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.
None.