Op Code (Hex) | Operand 1 | Operand 2 | ||
---|---|---|---|---|
0512 | Receiver | Pointer |
Operand 2: System pointer, space pointer data object, data pointer, instruction pointer, invocation pointer, procedure pointer, label pointer, suspend pointer, or synchronization pointer.
Bound program access |
---|
|
Note |
---|
When materializing a procedure pointer, it is recommended that you use the 8-byte activation and activation group marks at the end of the procedure pointer description template. 4-byte marks can wrap and produce unexpected results. |
The materialized form of the pointer object referenced by operand 2 is placed in operand 1.
If the operand 2 pointer is a system pointer or data pointer and unresolved, the pointer is resolved before the materialization occurs.
This instruction will tolerate a damaged object referenced by operand 2 when operand 2 is a resolved pointer. The instruction will not tolerate a damaged context(s) or damaged programs when resolving pointers. Also, as a result of damage or abnormal machine termination, this instruction can indicate that an object is addressed by a context, when in fact the context will not show this as an addressed object.
A space pointer machine object cannot be specified for operand 2.
The receiver is a space pointer to a materialization template. This template must be aligned on a 16-byte boundary to materialize these types of pointers: invocation, procedure, label, and suspend. Otherwise, the boundary alignment (hex 0602) exception is signaled.
The format of the materialization pointed to by operand 1 is:
Offset | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||||||||||||||||||||||
0 | 0 |
| Materialization size specification |
| Char(8) | ||||||||||||||||||||||||||||
0 | 0 |
| Number of bytes provided for materialization |
| Bin(4) | ||||||||||||||||||||||||||||
4 | 4 |
| Number of bytes available for materialization |
| Bin(4) | ||||||||||||||||||||||||||||
8 | 8 |
| Pointer type |
| Char(1) | ||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||
9 | 9 |
| Pointer description |
| Char(*) | ||||||||||||||||||||||||||||
* | * |
| --- End --- |
|
|
Pointer description depends on the pointer type.
If unsupported pointer is indicated, then no other data is
returned for pointer description.
Otherwise
one of the following pointer type formats is used.
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
9 | 9 |
| System pointer description |
| Char(68) | ||||||||
|
|
|
The system pointer description identifies the object addressed by the
pointer and the context which the object specifies as its addressing
context.
| ||||||||||
9 | 9 |
| Context identification |
| Char(32) | ||||||||
9 | 9 |
| Context type |
| Char(1) | ||||||||
10 | A |
| Context subtype |
| Char(1) | ||||||||
11 | B |
| Context name |
| Char(30) | ||||||||
41 | 29 |
| Object identification |
| Char(32) | ||||||||
41 | 29 |
| Object type |
| Char(1) | ||||||||
42 | 2A |
| Object subtype |
| Char(1) | ||||||||
43 | 2B |
| Object name |
| Char(30) | ||||||||
73 | 49 |
| Pointer authorization |
| Char(2) | ||||||||
73 | 49 |
| Object control |
| Bit 0 | ||||||||
73 | 49 |
| Object management |
| Bit 1 | ||||||||
73 | 49 |
| Authorization pointer |
| Bit 2 | ||||||||
73 | 49 |
| Space authority |
| Bit 3 | ||||||||
73 | 49 |
| Retrieve |
| Bit 4 | ||||||||
73 | 49 |
| Insert |
| Bit 5 | ||||||||
73 | 49 |
| Delete |
| Bit 6 | ||||||||
73 | 49 |
| Update |
| Bit 7 | ||||||||
73 | 49 |
| Reserved (binary 0) |
| Bits 8-10 | ||||||||
73 | 49 |
| Execute |
| Bit 11 | ||||||||
73 | 49 |
| Reserved (binary 0) |
| Bits 12-15 | ||||||||
75 | 4B |
| Pointer target information |
| Char(2) | ||||||||
75 | 4B |
| Pointer target accessible from user state |
| Bit 0 | ||||||||
75 | 4B |
| Reserved (binary 0) |
| Bits 1-15 | ||||||||
77 | 4D |
| --- End --- |
|
|
The first 4 bytes of the materialization identify the total number of bytes provided 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 the excess bytes are unchanged. No exceptions (other than the materialization length exception) are signaled in the event that the receiver contains insufficient area for the materialization.
Note: | If the object addressed by the system pointer specifies that it is not addressed by a context or if the context is destroyed, the context identification field is hex 00. If the object is addressed by the machine context, a context type of hex 81 is returned. No verification is made that the specified context actually addresses the object. |
The following lists the object type codes for system object references:
Value | |
(Hex) | Object Type |
01 | Access group |
02 | Program |
03 | Module |
04 | Context |
06 | Byte string space |
07 | Journal space |
08 | User profile |
09 | Journal port |
0A | Queue |
0B | Data space |
0C | Data space index |
0D | Cursor |
0E | Index |
0F | Commit block |
10 | Logical unit description |
11 | Network description |
12 | Controller description |
13 | Dump space |
14 | Class of service description |
15 | Mode description |
16 | Network interface description |
17 | Connection list |
18 | Queue space |
19 | Space |
1A | Process control space |
1B | Authority list |
1C | Dictionary |
1D | Auxiliary server |
1E | Byte stream file |
21 | Composite object group |
23 | Transaction control structure |
Note: | Only the authority currently stored in the system pointer is materialized. |
If the pointer target accessible from user state field
has a value of binary 1,
then the system pointer addresses an object that is in user domain.
If the pointer target accessible from user state field
has a value of binary 0,
then the system pointer addresses an object that is not in user domain.
Offset | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||||||||||||||||||||||
9 | 9 | Data pointer description | Char(83) | ||||||||||||||||||||||||||||||
|
|
|
The data pointer description describes
the current scalar and array attributes
and identifies the space addressability
contained in the data pointer.
| ||||||||||||||||||||||||||||||
9 | 9 |
| Scalar and array attributes |
| Char(7) | ||||||||||||||||||||||||||||
9 | 9 |
| Scalar type |
| Char(1) | ||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||
10 | A |
| Scalar length |
| Char(2) | ||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||
|
|
|
If binary, character,
floating-point, Onlyns, Onlys,
Either, or Open:
| ||||||||||||||||||||||||||||||
10 | A |
| Length |
| Bits 0-15 | ||||||||||||||||||||||||||||
|
|
|
If zoned decimal or packed decimal:
| ||||||||||||||||||||||||||||||
10 | A |
| Fractional digits |
| Bits 0-7 | ||||||||||||||||||||||||||||
10 | A |
| Total digits |
| Bits 8-15 | ||||||||||||||||||||||||||||
12 | C |
| Reserved (binary 0) |
| Bin(4) | ||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||
16 | 10 | Data pointer space addressability | Char(76) | ||||||||||||||||||||||||||||||
16 | 10 |
| Context identification |
| Char(32) | ||||||||||||||||||||||||||||
16 | 10 |
| Context type |
| Char(1) | ||||||||||||||||||||||||||||
17 | 11 |
| Context subtype |
| Char(1) | ||||||||||||||||||||||||||||
18 | 12 |
| Context name |
| Char(30) | ||||||||||||||||||||||||||||
48 | 30 |
| Object identification |
| Char(32) | ||||||||||||||||||||||||||||
48 | 30 |
| Object type |
| Char(1) | ||||||||||||||||||||||||||||
49 | 31 |
| Object subtype |
| Char(1) | ||||||||||||||||||||||||||||
50 | 32 |
| Object name |
| Char(30) | ||||||||||||||||||||||||||||
80 | 50 |
| Offset into space |
| Bin(4) | ||||||||||||||||||||||||||||
84 | 54 | Extended offset into space | UBin(8) | ||||||||||||||||||||||||||||||
For Non-Bound programs, the following datatype should be used: | |||||||||||||||||||||||||||||||||
84 | 54 | Activation group mark (Non-Bound program) | Char(8) | ||||||||||||||||||||||||||||||
92 | 5C |
| --- End --- |
|
|
The object identification information supplied, for a data pointer that points to an implicit process space, is for the process control space object with which those spaces are associated. The object identification information supplied for a data pointer that points to teraspace is hex 00s.
Note: |
If
the object containing the space addressed by the data pointer is not
addressed by a context, the context identification
field is hex 00s. If the object
is addressed by the machine
context, a context type of hex 81 is returned.
Support for usage of a data pointer describing an Onlyns, Onlys, Either, or Open scalar value is limited. For more information, refer to the Copy Extended Characters Left Adjusted With Pad (CPYECLAP) and Set Data Pointer Attributes (SETDPAT) instructions. |
The offset into space field is set to a value of zero when the space pointer points to teraspace.
The extended offset into space field is set whether or not the space pointer points to teraspace.
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
9 | 9 |
| Space pointer description |
| Char(79) | ||||||||
|
|
|
The space pointer description describes
space addressability contained in the
space pointer.
| ||||||||||
9 | 9 |
| Context identification |
| Char(32) | ||||||||
9 | 9 |
| Context type |
| Char(1) | ||||||||
10 | A |
| Context subtype |
| Char(1) | ||||||||
11 | B |
| Context name |
| Char(30) | ||||||||
41 | 29 |
| Object identification |
| Char(32) | ||||||||
41 | 29 |
| Object type |
| Char(1) | ||||||||
42 | 2A |
| Object subtype |
| Char(1) | ||||||||
43 | 2B |
| Object name |
| Char(30) | ||||||||
73 | 49 |
| Offset into space |
| Bin(4) | ||||||||
77 | 4D |
| Pointer target information |
| Char(2) | ||||||||
77 | 4D | Pointer target equally accessible to user and system | Bit 0 | ||||||||||
77 | 4D |
| Pointer target is teraspace |
| Bit 1 | ||||||||
77 | 4D |
| Reserved (binary 0) |
| Bits 2-15 | ||||||||
79 | 4F |
| Reserved (binary 0) |
| Char(1) | ||||||||
80 | 50 |
| Extended offset into space |
| Char(8) | ||||||||
88 | 58 |
| --- End --- |
|
|
The object identification information supplied, for a space pointer that points to an implicit process space, is for the process control space object with which those spaces are associated. The object identification information supplied for a data pointer that points to teraspace is hex 00s.
Note: | If the object associated with the space addressed by the space pointer is not addressed by a context, the context identification field is hex 00. If the object is addressed by the machine context, a context type of hex 81 is returned. |
The offset into space field is set to a value of zero when the space pointer points to teraspace.
If the pointer target equally accessible to user and system field has a value of binary 1, then the space pointer addresses a space that is equally accessible to user and system thread execution states. This field has a value of binary 0 otherwise.
If the pointer target is teraspace field has a value of binary 1, then the space pointer addresses teraspace. This field has a value of binary 0 if the space pointer addresses any other space.
The extended offset into space field is set
whether or not the
space pointer points to teraspace.
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
9 | 9 |
| Instruction pointer description |
| Char(68) | ||||||||
|
|
|
The instruction pointer description describes
instruction addressability contained in the instruction
pointer.
| ||||||||||
9 | 9 |
| Context identification |
| Char(32) | ||||||||
9 | 9 |
| Context type |
| Char(1) | ||||||||
10 | A |
| Context subtype |
| Char(1) | ||||||||
11 | B |
| Context name |
| Char(30) | ||||||||
41 | 29 |
| Program identification |
| Char(32) | ||||||||
41 | 29 |
| Program type |
| Char(1) | ||||||||
42 | 2A |
| Program subtype |
| Char(1) | ||||||||
43 | 2B |
| Program name |
| Char(30) | ||||||||
73 | 49 |
| Instruction number |
| Bin(4) | ||||||||
77 | 4D |
| --- End --- |
|
|
If the program containing the instruction currently being addressed by
the instruction pointer is not addressed by a context, the context identification
field is hex 00.
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
9 | 9 |
| Invocation pointer description |
| Char(23) | ||||||||
|
|
|
The invocation pointer description describes invocation addressability
contained in the invocation pointer.
| ||||||||||
9 | 9 |
| Pointer status |
| Char(1) | ||||||||
9 | 9 |
| Invocation no longer exists |
| Bit 0 | ||||||||
9 | 9 |
| Pointer is from another thread |
| Bit 1 | ||||||||
9 | 9 |
| Reserved (binary 0) |
| Bits 2-7 | ||||||||
10 | A |
| Reserved (binary 0) |
| Char(6) | ||||||||
16 | 10 |
| Containing process |
| System pointer | ||||||||
32 | 20 |
| --- End --- |
|
|
Invocation no longer exists. If this field has a value of binary 1, then the invocation referenced by the pointer no longer exists.
Pointer is from another thread. If this field has a value of binary 1, then the invocation referenced by the pointer exists but belongs to a thread other than the current one.
Containing process.
A system pointer to the process control space object
which contains the thread to which the invocation belongs.
A null pointer value is returned if the
invocation no longer exists.
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
9 | 9 |
| Procedure pointer description |
| Char(71) | ||||||||
|
|
|
The procedure pointer description describes the activation and
procedure addressability contained in the procedure pointer.
| ||||||||||
9 | 9 |
| Pointer status |
| Char(1) | ||||||||
9 | 9 |
| Process object no longer exists |
| Bit 0 | ||||||||
9 | 9 |
| Pointer is from another process |
| Bit 1 | ||||||||
9 | 9 |
| Referenced program cannot be accessed |
| Bit 2 | ||||||||
9 | 9 |
| Containing process owns a shared activation group |
| Bit 3 | ||||||||
9 | 9 | Procedure reference is unresolved | Bit 4 | ||||||||||
9 | 9 | Reserved (binary 0) | Bits 5-7 | ||||||||||
10 | A |
| Reserved (binary 0) |
| Char(6) | ||||||||
16 | 10 |
| Module number |
| UBin(4) | ||||||||
20 | 14 |
| Procedure number |
| UBin(4) | ||||||||
24 | 18 |
| Activation mark |
| UBin(4) | ||||||||
28 | 1C |
| Activation group mark |
| UBin(4) | ||||||||
32 | 20 |
| Containing program |
| System pointer | ||||||||
48 | 30 |
| Containing process |
| System pointer | ||||||||
64 | 40 |
| Activation mark |
| UBin(8) | ||||||||
|
|
|
For Non-Bound programs, the following datatype should be used:
| ||||||||||
64 | 40 |
| Activation mark (Non-Bound program) |
| Char(8) | ||||||||
72 | 48 |
| Activation group mark |
| UBin(8) | ||||||||
|
|
|
For Non-Bound programs, the following datatype should be used:
| ||||||||||
72 | 48 |
| Activation group mark (Non-Bound program) |
| Char(8) | ||||||||
80 | 50 |
| --- End --- |
|
|
Process object no longer exists. If this field has a value of binary 1, then the process object referenced by the pointer (the activation) no longer exists. All of the remaining information is returned as binary 0s.
Pointer is from another process. If this field has a value of binary 1, then the process object referenced by the pointer belongs to a process other than the current one.
Referenced program cannot be accessed. If this field has a value of binary 1, then the program referenced by the pointer could not be accessed to extract the program-related information. This may be because the program is damaged, suspended, compressed, or destroyed. The containing program pointer, module number, and procedure number are returned as binary 0s.
Containing process owns a shared activation group. If this field has a value of binary 1, then the process object referenced by the pointer belongs to a process that owns a shared activation group.
Procedure reference is unresolved. If this field has a value of binary 1, then procedure addressability is unresolved. The process object (the activation) referenced by the pointer has not been fully activated. Invoking the procedure via the pointer will cause the process object (the activation) to become fully activated, thus resolving procedure addressability.
Module number. Index in the module list of the bound program for the module whose activation the pointer addresses.
Procedure number. Index in the procedure list of the module for the procedure addressed by the pointer.
Activation mark. The activation mark of the activation that contains the activated procedure. Zero if the program activation no longer exists. The value returned in the 4-byte activation mark may have wrapped.
Activation group mark. An activation group mark of the activation group that contains the activated procedure. Zero if the program activation no longer exists. The value returned in the 4-byte activation group mark may have wrapped.
Containing program. A system pointer to the program object that contains the procedure. Null if the program activation no longer exists.
Containing process.
A system pointer to the process control space object which contains the
procedure's activation group. A null pointer value is returned if the
process control space object no longer exists, or if it is no longer
possible to determine the containing process for a destroyed activation
group.
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
9 | 9 |
| Label pointer description |
| Char(*) | ||||||||
|
|
|
The label pointer description describes instruction addressability
contained in the label pointer.
| ||||||||||
9 | 9 |
| Pointer status |
| Char(1) | ||||||||
9 | 9 |
| Reserved (binary 0) |
| Bits 0-1 | ||||||||
9 | 9 |
| Referenced program is damaged, suspended, compressed or destroyed |
| Bit 2 | ||||||||
9 | 9 |
| Reserved (binary 0) |
| Bits 3-7 | ||||||||
10 | A |
| Reserved (binary 0) |
| Char(6) | ||||||||
16 | 10 |
| Module number |
| UBin(4) | ||||||||
20 | 14 |
| Procedure number |
| UBin(4) | ||||||||
24 | 18 |
| Number of statement IDs |
| UBin(4) | ||||||||
28 | 1C |
| Internal identifier |
| Char(4) | ||||||||
32 | 20 |
| Containing program |
| System pointer | ||||||||
48 | 30 |
| Statement ID |
| [*] UBin(4) | ||||||||
* | * |
| --- End --- |
|
|
Referenced program is damaged, suspended, compressed, or destroyed. If this field has a value of binary 1, then the program referenced by the pointer could not be accessed to extract the remaining information. The remainder of the template is binary 0s with the exception of the containing program pointer, which will be binary 0s if the program has been destroyed or so seriously damaged that its identity cannot be determined.
Module number. Index in the module list of the bound program for the module containing the label.
Procedure number. Index in the procedure list of the module for the procedure containing the label.
Number of statement IDs. Number of entries in the statement ID list. (Multiple statement IDs may be associated with a single location in the created program due to optimizations that combine similar code sequences.)
Internal identifier. A machine-dependent value which identifies the label relative to the internal structure of the program. For use by service personnel.
Containing program. A system pointer to the program object that contains the label.
Statement ID.
Each statement ID is a compiler-supplied unsigned Bin(4) number which
allows the compiler to identify the source statement associated with a
particular sequence of instructions.
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
9 | 9 |
| Suspend pointer description |
| Char(*) | ||||||||
|
|
|
The suspend pointer description describes instruction addressability
contained in the suspend pointer.
| ||||||||||
9 | 9 |
| Pointer status |
| Char(1) | ||||||||
9 | 9 |
| Reserved (binary 0) |
| Bit 0 | ||||||||
9 | 9 |
| Reserved (binary 0) |
| Bit 1 | ||||||||
9 | 9 |
| Referenced program is damaged, suspended, compressed or destroyed |
| Bit 2 | ||||||||
9 | 9 |
| Reserved (binary 0) |
| Bits 3-7 | ||||||||
10 | A |
| Reserved (binary 0) |
| Char(6) | ||||||||
16 | 10 |
| Module number |
| UBin(4) | ||||||||
20 | 14 |
| Procedure number |
| UBin(4) | ||||||||
24 | 18 |
| Number of statement IDs |
| UBin(4) | ||||||||
28 | 1C |
| Internal identifier |
| Char(4) | ||||||||
32 | 20 |
| Containing program |
| System pointer | ||||||||
48 | 30 |
| Statement ID |
| [*] UBin(4) | ||||||||
* | * |
| --- End --- |
|
|
Referenced program is damaged, suspended, compressed, or destroyed. If this field has a value of binary 1, then the program referenced by the pointer could not be accessed to extract the remaining information. The remainder of the template is binary 0s with the exception of the containing program pointer, which will be binary 0s if the program has been destroyed or so seriously damaged that its identity cannot be determined.
Module number. Index in the module list of the bound program for the module containing the suspend point.
Procedure number. Index in the procedure list of the module for the procedure containing the suspend point.
Number of statement IDs. Number of entries in the statement ID list. (Multiple statement IDs may be associated with a single location in the created program due to optimizations that combine similar code sequences.)
Internal identifier. A machine-dependent value which locates the suspend point relative to the internal structure of the program. For use by service personnel.
Containing program. A system pointer to the program object that contains the suspend point.
Statement ID. Each statement ID is a compiler-supplied unsigned Bin(4) number which allows the compiler to identify the source statement associated with a particular sequence of MI instructions.
Note: | For suspend pointers which address non-bound programs, module number and procedure number are returned as binary 0s, and the statement ID list is returned with one value which is the MI instruction number of the suspend point. |
Offset | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||||||||
9 | 9 |
| Synchronization pointer description |
| Char(4) | ||||||||||||||
|
|
|
The synchronization pointer description describes the object
addressability contained in the synchronization pointer.
| ||||||||||||||||
9 | 9 |
| Pointer status |
| Char(1) | ||||||||||||||
9 | 9 |
| Synchronization object no longer exists |
| Bit 0 | ||||||||||||||
9 | 9 |
| Reserved (binary 0) |
| Bits 1-7 | ||||||||||||||
10 | A |
| Synchronization object type |
| Char(2) | ||||||||||||||
|
|
|
| ||||||||||||||||
12 | C |
| Reserved (binary 0) |
| Char(1) | ||||||||||||||
13 | D |
| --- End --- |
|
|
Synchronization object no longer exists. If this field has a value of binary 1, then the synchronization object referenced by the pointer no longer exists. All of the remaining information is returned as binary 0s.
06 Addressing
08 Argument/Parameter
10 Damage Encountered
1C Machine-Dependent
20 Machine Support
22 Object Access
24 Pointer Specification
2E Resource Control Limit
32 Scalar Specification
36 Space Management
38 Template Specification
44 Protection Violation