Materialize Instruction Attributes (MATINAT)


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
Invocation number
Bin(2)
2 2
Instruction number
Bin(4)
6 6
Reserved (binary 0)
Char(10)
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
Bin(4)
4 4
Number of bytes available to be materialized
Bin(4)
8 8
Object identification
Char(32)
8 8
Program type
Char(1)
9 9
Program subtype
Char(1)
10 A
Program name
Char(30)
40 28
Offset to instruction attributes
Bin(4)
44 2C
Reserved (binary 0)
Char(8)
52 34
Instruction attributes
Char(*)
52 34
Instruction type
Char(2)
52 34
Instruction version
Bits 0-3



Hex 0000 = 2-byte operand references
Hex 0001 = 3-byte operand references


52 34
Reserved (binary 0)
Bits 4-15
54 36
Instruction length as input to Create Program
Bin(2)
56 38
Offset to instruction form specified as input to Create Program
Bin(4)
60 3C
Reserved (binary 0)
Char(4)
64 40
Number of instruction operands
Bin(2)
66 42
Operand attributes offsets
Char(*)
66 42
An offset is materialized for each of the operands of the instruction specifying the offset to the attributes for the operand
[*] Bin(4)
* *
Instruction form specified as input to Create Program
Char(*)
* *
Instruction operation code
Char(2)
* *
Optional extender field and operand fields
Char(*)
* *
Operand attributes
Char(*)



A set of attributes following this format is materialized for each of the operands of the instruction. Compound operand references result in materialization of only one set of attributes for the operand which describe the substring or array element as is appropriate. See the specific format described below for each operand type.


* *
Operand type
Bin(2)



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


* *
Operand specific attributes
Char(*)



See descriptions below for detailed formats. Nothing is provided for null operands.


* *
--- End ---


Offset
Dec Hex
Field Name
Data Type and Length
0 0
Data object
Char(32)



For a data object, the following operand attributes are materialized.


0 0
Operand type = 1
Bin(2)
2 2
Data object specific attributes
Char(7)
2 2
Element type
Char(1)



Hex 00 = Binary
Hex 01 = Floating-point
Hex 02 = Zoned decimal
Hex 03 = Packed decimal
Hex 04 = Character
Hex 08 = Pointer


3 3
Element length
Char(2)









If binary, or character, or floating-point:



3 3
Length
Bits 0-15



If zoned decimal or packed decimal:



3 3
Fractional digits
Bits 0-7
3 3
Total digits
Bits 8-15



If pointer:



3 3
Length = 16
Bits 0-15
5 5
Array size
Bin(4)



If scalar, then value of 0.
If array, then number of elements.



9 9
Reserved (binary 0)
Char(6)
15 F
Data object addressability
Char(17)
15 F
Addressability indicator
Char(1)



Hex 00 = Addressability was not established
Hex 01 = Addressability was established


16 10
Space pointer to the object if addressability could be established
Space pointer
32 20
--- End ---


Offset
Dec Hex
Field Name
Data Type and Length
0 0
Constant data object
Char(*)



For a constant data object, the following operand attributes are materialized (immediate operands as constants, signed immediates as binary, and unsigned immediates as character).


0 0
Operand type = 2
Bin(2)
2 2
Constant specific attributes
Char(7)
2 2
Element type
Char(1)



Hex 00 = Binary
Hex 01 = Floating-point
Hex 02 = Zoned decimal
Hex 03 = Packed decimal
Hex 04 = Character


3 3
Element length
Char(2)









If binary, or character, or floating-point:


3 3
Length
Bits 0-15



If zoned decimal or packed decimal:



3 3
Fractional digits
Bits 0-7
3 3
Total digits
Bits 8-15
5 5
Reserved (binary 0)
Bin(4)
9 9
Reserved (binary 0)
Char(7)
16 10
Constant value
Char(*)
* *
--- End ---


Offset
Dec Hex
Field Name
Data Type and Length
0 0
Instruction references
Char(*)



For instruction references, either through instruction definition lists or immediate operands, the following operand attributes are materialized.


0 0
Operand type = 3
Bin(2)
2 2
Number of instruction reference elements
Bin(2)



1 = Single instruction reference
>1 = Instruction definition list



4 4
Reserved (binary 0)
Char(12)
16 10
Reference list
Char(*)



The instruction number of each instruction reference is materialized in the order in which they are defined.


* *
--- End ---


Offset
Dec Hex
Field Name
Data Type and Length
0 0
Argument list
Char(*)



For an argument list, the following operand attributes are materialized.


0 0
Operand type = 4
Bin(2)
2 2
Argument list specific attributes
Char(4)
2 2
Actual number of list entries
Bin(2)
4 4
Maximum number of list entries
Bin(2)
6 6
Reserved (binary 0)
Char(10)
16 10
Addressability to list entries
Char(*)
16 10
Space pointer to each list entry for the number of actual list entries
[*] Space pointer



A value of all zeros is materialized if addressability could not be established.


* *
--- End ---


Offset
Dec Hex
Field Name
Data Type and Length
0 0
Exception description
Char(48)



For an exception description, the following operand attributes are materialized.


0 0
Operand type = 5
Bin(2)
2 2
Reserved (binary 0)
Char(10)
12 C
Control flags
Char(2)
12 C
Exception handling action
Bits 0-2



000 = Ignore occurrence of exception and continue processing
001 = Disabled exception description
010 = Continue search for an exception description by resignaling the exception to the immediately preceding invocation
100 = Defer handling
101 = Pass control to the specified exception handler


12 C
Reserved (binary 0)
Bits 3-15
14 E
Compare value length
Bin(2)
16 10
Compare value
Char(32)
48 30
--- End ---


Offset
Dec Hex
Field Name
Data Type and Length
0 0
Space pointer machine object
Char(32)



For a space pointer machine object, the following operand attributes are materialized.


0 0
Operand type = 7
Bin(2)
2 2
Reserved (binary 0)
Char(13)
15 F
Pointer addressability
Char(17)
15 F
Pointer value indicator
Char(1)



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
Space pointer
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.

Authorization Required

Lock Enforcement

Exceptions

06 Addressing

08 Argument/Parameter

10 Damage Encountered

1C Machine-Dependent

1E Machine Observation

20 Machine Support

22 Object Access

24 Pointer Specification

2C Program Execution

2E Resource Control Limit

32 Scalar Specification

36 Space Management

38 Template Specification

44 Protection Violation