Use this general macro to validate a storage block address and determine
whether the block is in use.
Format
- CHECKIN
- Specifies the address space containing the address specified in the BLOCK
parameter. The CHECKIN parameter is required and one of these address
spaces must be specified.
- EVM
- When specified, the block address is checked for validity in the EVM and
is considered valid only if the address is within the ECB's virtual
memory (EVM).
- SVM
- When specified, the block address is checked for validity in the SVM and
is considered valid only if the address is within the system's virtual
memory (SVM).
- BLOCK=R1|Rm
- This parameter indicates the block to be validated. The register
specified contains the address of the storage block to be validated.
This address can be either an SVA or an EVA address, but will be validated
depending on the setting of the CHECKIN parameter.
The default assignment is R1.
- TYPE=R0|Rn
- The register specified in this parameter contains the storage block
type. The default assignment is R0. The following types are
supported:
- L0
- 128 byte block
- L1
- 381 byte block
- L2
- 1055 byte block
- L4
- 4095 byte block
- LECB (L3)
- Entry Control Block
- LSWB
- System Work Block
- LIOCB
- I/O Control Block
- 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
- The register specified in the TYPE parameter contains a valid block
type.
- The register specified in the BLOCK parameter contains the block
address.
Return Conditions
- Control is returned to the next sequential instruction (NSI).
- The contents of R14 and R15 are unknown.
- The TYPE register will contain the block type.
- Condition codes returned:
The condition code is set to "0", when the storage block address
provided is valid and the block is in use.
- Note:
- When IOBs are validated, there is no check to validate that the block is in
use.
The condition code is set to "1", when the storage block address
provided is not in use, but the address exists in the ECB's address
space.
The condition code is set to "2" in any of the following
situations:
- For physical (LIOCB, LSWB or LECB) types:
- The storage block address does not fall in the range of addresses for
blocks of the type specified in the TYPE parameter.
- The storage block address does not fall on a block boundary.
- For logical (L0, L1, L2, or L4) types:
- The storage block address can not be resolved in the ECB's address
space.
- The record type associated with the storage block address does not match
the record type specified in the TYPE parameter.
- Note:
- The condition code is set differently than in prior releases.
Previously a condition code of '1' was always returned when a block
was released. In the current release either condition code '1'
or condition code '2' will be returned after a block is
released. Condition code '2' is returned, because when virtual
storage management frees the storage backing the released block, the block
address for the ECB becomes invalid.
Programming Considerations
- This macro may be executed on any I-stream.
- This macro has a supervisor call (SVC) interface for use by E-type
programs.
- If this macro is called from the control program, the caller must be in
supervisor state.
Examples
None.