Use this system macro to obtain a storage block from the pool of working
storage that is accessed at the same address in any address space.
Format
- label
- A symbolic name can be assigned to the macro statement.
- BLOCK=Ri
- This parameter is used to return the block address. The register
specified is loaded with the storage block address on return from the service
routine. The block is allocated below 16 MB. The block address
is correct in 24-or 31-bit mode and in any address space. Any general
purpose register, with the exception of stack register R13, can be used for
this parameter.
- FORMAT=Rj
- This parameter is used to specify the format flag to be placed in the
block. The register specified contains the block format flag in the
rightmost (low-order) byte. Any general purpose register, with the
exception of stack register R13, can be used for this parameter.
- TYPE=Rk
- This parameter specifies the storage block type requested. The
register specified in this input parameter contains the logical storage block
type equate value in the low-order (rightmost) byte. The block equate
is restricted to blocks that can be placed on an ECB core block reference word
(L0, L1, L2, or L4). Any general purpose register, with the exception
of stack register R13, can be used for this parameter.
- ECB
- This parameter indicates which address will be saved in the common block
control table.
- YES
- Indicates the SVA of the ECB (CE2SVA) is to be saved in the CCTECB field
of the common control tree table (IDSCCT)
- NO
- Indicates that the address of the caller (in R14) should be saved in the
CCTECB field.
- SAVREG
- The specified volatile registers will be saved by the macro in
the stack area or in the registers specified by the WKREG parameter. Up
to 3 registers can be specified. Those registers are R0, R1, R2.
If this keyword is omitted, none of the 3 registers will be saved. You
should not save a volatile register if you expect it to contain an output
parameter. The register will be overwritten with its original contents,
since the reload is the last thing performed by the macro.
- WKREG
- The specified symbolic register names are free to be used by the macro to
save the volatile registers coded on the SAVREG parameter.
Up to 3 registers can be specified, but the standard linkage registers R13
through R2 cannot be used here. This parameter is used in conjunction
with the SAVREG parameter to generate efficient code and enhance the
performance of the macro. The number of registers specified by WKREG
should be less than or equal to the number of registers specified by
SAVREG. If this parameter is omitted or not used to its maximum
capacity, code optimization is sacrificed.
Entry Requirements
- Entry can be in either EVM or SVM addressing mode.
- The program calling this macro must be running in privileged mode with a
zero protection key storage.
- R13 is assumed to contain the stack pointer.
- R9 is assumed to contain the ECB pointer.
Return Conditions
- Control is returned to the NSI.
- The register specified in the BLOCK parameter contains the storage block
address.
- The storage block returned has the format flag set to the value specified
by the FORMAT parameter.
- The register specified in the FORMAT parameter contains the logical block
type and the logical size of the storage block in a format suitable for
storing in a core block reference word.
- The condition code is not saved.
Programming Considerations
The most efficient use of this macro can be accomplished by using the WKREG
parameter with the SAVREG parameter.
Examples
None.