Materialize Instruction Attributes (MATINAT)

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
  • 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
      Hex 0000 =
      2-byte operand references
      Hex 0001 =
      3-byte operand references

    • Bits 0-3
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
    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.
  • Char(*)
*
*
    • 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

    • Bin(2)
*
*
    • Operand specific attributes
      See descriptions below for detailed formats.  Nothing is provided for null operands.
    • Char(*)
*
*
--- 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
  • Operand type = 1
  • Bin(2)
2 2
  • Data object specific attributes
  • Char(7)
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

    • Char(1)
3 3
    • Element length
    • Char(2)
   
      • If binary, or character, or floating-point:

 
3
3
      • Length

        If zoned decimal or packed decimal:


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

        If pointer:


      • Bits 8-15
3 3
      • Length = 16
      • Bits 0-15
5
5
    • Array size
      If scalar, then value of 0.
      If array, then number of elements.

    • Bin(4)
9 9
  • Reserved (binary 0)
  • Char(6)
15 F
  • Data object addressability
  • Char(17)
15
F
    • Addressability indicator
      Hex 00 =
      Addressability was not established
      Hex 01 =
      Addressability was established

    • Char(1)
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
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
  • Operand type = 2
  • Bin(2)
2 2
  • Constant specific attributes
  • Char(7)
2
2
    • Element type
      Hex 00 =
      Binary
      Hex 01 =
      Floating-point
      Hex 02 =
      Zoned decimal
      Hex 03 =
      Packed decimal
      Hex 04 =
      Character

    • Char(1)
3 3
    • Element length
    • Char(2)
   
      • If binary, or character, or floating-point:
 
3
3
      • Length

        If zoned decimal or packed decimal:


      • Bits 0-15
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
For instruction references, either through instruction definition lists or immediate operands, the following operand attributes are materialized.
Char(*)
0 0
  • Operand type = 3
  • Bin(2)
2
2
  • Number of instruction reference elements
    1 = Single instruction reference
    >1 = Instruction definition list

  • Bin(2)
4 4
  • Reserved (binary 0)
  • Char(12)
16
10
  • Reference list
    The instruction number of each instruction reference is materialized in the order in which they are defined.
  • Char(*)
*
*
--- 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
  • 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
      A value of all zeros is materialized if addressability could not be established.
    • [*] Space pointer
*
*
--- 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
  • Operand type = 5
  • Bin(2)
2 2
  • Reserved (binary 0)
  • Char(10)
12 C
  • Control flags
  • Char(2)
12
C
    • Exception handling action
      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

    • Bits 0-2
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
For a space pointer machine object, the following operand attributes are materialized.
Char(32)
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
      Hex 00 =
      Addressability value is not valid
      Hex 01 =
      Addressability value is valid

    • Char(1)
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

  • None

Lock Enforcement

  • None

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