Instruction Syntax
| Op Code (Hex) |
Operand 1 |
Operand 2 |
| 0526 |
Receiver |
Selection template |
Operand 1: Space pointer. Operand 2: Character scalar.
| Bound Program Access |
Built-in number for MATINAT is 466.
MATINAT (
receiver : address
selection_template : address
)
|
Description:
This instruction materializes the attributes of the non-bound program instruction that are selected in operand 2 and places them in the receiver indicated by operand 1.
Operand 2 is a 16-byte selection template. Only the first 16 bytes are used. Any excess bytes are ignored. Operand 2 has the following format:
| Offset |
|
| Dec |
Hex |
Field Name |
Data Type and Length |
| 0 |
0 |
Selection template |
Char(16) |
| 0 |
0 |
|
|
| 2 |
2 |
|
|
| 6 |
6 |
|
|
16
|
10
|
--- End ---
|
|
|
The invocation number is a specific identifier for the target invocation, in the thread, that is to be materialized. This program must be observable or the program not observable (hex 1E01) exception is signaled. The instruction number specifies the instruction in the specified program invocation that is to be materialized.
Operand 1 addresses a 16-byte aligned template where the materialized data is placed. The format of the data is as follows:
| Offset |
|
| Dec |
Hex |
Field Name |
Data Type and Length |
| 0 |
0 |
Materialization size specification |
Char(8) |
| 0 |
0 |
- Number of bytes provided by the user
|
|
| 4 |
4 |
- Number of bytes available to be materialized
|
|
| 8 |
8 |
Object identification |
Char(32) |
| 8 |
8 |
|
|
| 9 |
9 |
|
|
| 10 |
A |
|
|
| 40 |
28 |
Offset to instruction attributes |
Bin(4) |
| 44 |
2C |
Reserved (binary 0) |
Char(8) |
| 52 |
34 |
Instruction attributes |
Char(*) |
| 52 |
34 |
|
|
52
|
34
|
-
Instruction version
- Hex 0000 =
- 2-byte operand references
- Hex 0001 =
- 3-byte operand references
|
|
| 52 |
34 |
|
|
| 54 |
36 |
- Instruction length as input to Create Program
|
|
| 56 |
38 |
- Offset to instruction form specified as input to Create Program
|
|
| 60 |
3C |
|
|
| 64 |
40 |
- Number of instruction operands
|
|
| 66 |
42 |
- Operand attributes offsets
|
|
| 66 |
42 |
-
- An offset is materialized for each of the operands of the instruction specifying the offset to the attributes for the operand
|
|
| * |
* |
- Instruction form specified as input to Create Program
|
|
| * |
* |
-
- Instruction operation code
|
|
| * |
* |
-
- Optional extender field and operand fields
|
|
*
|
*
|
|
|
*
|
*
|
-
Operand type
- 1 =
- Data object
- 2 =
- Constant data object
- 3 =
- Instruction number reference
- 4 =
- Argument list
- 5 =
- Exception description
- 6 =
- Null operand
- 7 =
- Space pointer machine object
|
|
*
|
*
|
|
|
*
|
*
|
--- End ---
|
|
|
| Offset |
|
| Dec |
Hex |
Field Name |
Data Type and Length |
0
|
0
|
Data object
For a data object, the following operand attributes are materialized.
|
Char(32)
|
| 0 |
0 |
|
|
| 2 |
2 |
- Data object specific attributes
|
|
2
|
2
|
-
Element type
- Hex 00 =
- Binary
- Hex 01 =
- Floating-point
- Hex 02 =
- Zoned decimal
- Hex 03 =
- Packed decimal
- Hex 04 =
- Character
- Hex 08 =
- Pointer
|
|
| 3 |
3 |
|
|
| |
|
|
|
3
|
3
|
|
|
| 3 |
3 |
|
|
3
|
3
|
|
|
| 3 |
3 |
|
|
5
|
5
|
-
Array size
- If scalar, then value of 0.
- If array, then number of elements.
|
|
| 9 |
9 |
|
|
| 15 |
F |
- Data object addressability
|
|
15
|
F
|
-
Addressability indicator
- Hex 00 =
- Addressability was not established
- Hex 01 =
- Addressability was established
|
|
| 16 |
10 |
-
- Space pointer to the object if addressability could be established
|
|
32
|
20
|
--- End ---
|
|
|
| Offset |
|
| Dec |
Hex |
Field Name |
Data Type and Length |
0
|
0
|
Constant data object
For a constant data object, the following operand attributes are materialized (immediate operands as constants, signed immediates as binary, and unsigned immediates as character).
|
Char(*)
|
| 0 |
0 |
|
|
| 2 |
2 |
- Constant specific attributes
|
|
2
|
2
|
-
Element type
- Hex 00 =
- Binary
- Hex 01 =
- Floating-point
- Hex 02 =
- Zoned decimal
- Hex 03 =
- Packed decimal
- Hex 04 =
- Character
|
|
| 3 |
3 |
|
|
| |
|
-
-
- If binary, or character, or floating-point:
|
|
3
|
3
|
|
|
| 3 |
3 |
|
|
| 3 |
3 |
|
|
| 5 |
5 |
|
|
| 9 |
9 |
|
|
| 16 |
10 |
|
|
*
|
*
|
--- End ---
|
|
|
| Offset |
|
| Dec |
Hex |
Field Name |
Data Type and Length |
0
|
0
|
Instruction references
For instruction references, either through instruction definition lists or immediate operands, the following operand attributes are materialized.
|
Char(*)
|
| 0 |
0 |
|
|
2
|
2
|
|
|
| 4 |
4 |
|
|
16
|
10
|
|
|
*
|
*
|
--- End ---
|
|
|
| Offset |
|
| Dec |
Hex |
Field Name |
Data Type and Length |
0
|
0
|
Argument list
For an argument list, the following operand attributes are materialized.
|
Char(*)
|
| 0 |
0 |
|
|
| 2 |
2 |
- Argument list specific attributes
|
|
| 2 |
2 |
-
- Actual number of list entries
|
|
| 4 |
4 |
-
- Maximum number of list entries
|
|
| 6 |
6 |
|
|
| 16 |
10 |
- Addressability to list entries
|
|
16
|
10
|
|
|
*
|
*
|
--- End ---
|
|
|
| Offset |
|
| Dec |
Hex |
Field Name |
Data Type and Length |
0
|
0
|
Exception description
For an exception description, the following operand attributes are materialized.
|
Char(48)
|
| 0 |
0 |
|
|
| 2 |
2 |
|
|
| 12 |
C |
|
|
12
|
C
|
|
|
| 12 |
C |
|
|
| 14 |
E |
|
|
| 16 |
10 |
|
|
48
|
30
|
--- End ---
|
|
|
| Offset |
|
| Dec |
Hex |
Field Name |
Data Type and Length |
0
|
0
|
Space pointer machine object
For a space pointer machine object, the following operand attributes are materialized.
|
Char(32)
|
| 0 |
0 |
|
|
| 2 |
2 |
|
|
| 15 |
F |
|
|
15
|
F
|
-
Pointer value indicator
- Hex 00 =
- Addressability value is not valid
- Hex 01 =
- Addressability value is valid
|
|
| 16 |
10 |
-
- Space pointer data object containing the space pointer machine object value if addressability value is valid
|
|
32
|
20
|
--- End ---
|
|
|
The first 4 bytes of the materialization identify the total number of bytes provided by the user for use by the instruction. This value is supplied as input to the instruction and is not modified by the instruction. A value of less than 8 causes the materialization length invalid (hex 3803) exception to be signaled.
The second 4 bytes of the materialization identify the total number of bytes available to be materialized. The instruction materializes as many bytes as can be contained in the area specified as the receiver. If the byte area identified by the receiver is greater than that required to contain the information requested, then excess bytes are unchanged.
The materialization available for an instruction depends on the execution status of the program that the instruction is in. If the program has not executed to the point of the instruction, little or no meaningful information about the instruction can be materialized. If the program executes the instruction multiple times, the materialization will vary with each execution.
No exceptions are signaled in the event that the receiver contains insufficient area for the materialization, other than the materialization length invalid (hex 3803) exception described previously.
This instruction is valid only when the program instruction to be materialized is from a non-bound program. If the invocation indicated by operand 2 is for any other invocation type, then an instruction not valid for invocation type (hex 2C1C) exception is signaled.
Exceptions
- 06 Addressing
- 0601 Space Addressing Violation
- 0602 Boundary Alignment
- 0603 Range
- 08 Argument/Parameter
- 0801 Parameter Reference Violation
- 10 Damage Encountered
- 1004 System Object Damage State
- 1044 Partial System Object Damage
- 1C Machine-Dependent
- 1C03 Machine Storage Limit Exceeded
- 1E Machine Observation
- 1E01 Program Not Observable
- 20 Machine Support
- 2002 Machine Check
- 2003 Function Check
- 22 Object Access
- 2201 Object Not Found
- 2202 Object Destroyed
- 2203 Object Suspended
- 2208 Object Compressed
- 220B Object Not Available
- 24 Pointer Specification
- 2401 Pointer Does Not Exist
- 2402 Pointer Type Invalid
- 2C Program Execution
- 2C1C Instruction Not Valid for Invocation Type
- 2E Resource Control Limit
- 2E01 User Profile Storage Limit Exceeded
- 32 Scalar Specification
- 3201 Scalar Type Invalid
- 3202 Scalar Attributes Invalid
- 3203 Scalar Value Invalid
- 36 Space Management
- 3601 Space Extension/Truncation
- 38 Template Specification
- 3801 Template Value Invalid
- 3803 Materialization Length Invalid
- 44 Protection Violation
- 4401 Object Domain or Hardware Storage Protection Violation
- 4402 Literal Values Cannot Be Changed