Op Code (Hex) | Operand 1 | Operand 2 | Operand 3 | |
---|---|---|---|---|
MATACTAT 0213 | Receiver | Activation mark | Attribute selection |
Operand 1: Space pointer.
Operand 2 for MATACTAT2: Char(8) scalar.
Operand 2 for MATACTAT : Unsigned binary(4) scalar.
Operand 3: Character(1) scalar.
Bound program access |
---|
|
The following information is subject to change from release to release. Use it with caution and be prepared to adjust for changes with each new release.
Note |
---|
It is recommended that you use the MATACTAT2 instruction which supports 8-byte activation marks and that you use the 8-byte activation and activation group marks at the end of the Basic Activation Attributes template. 4-byte marks can wrap and produce unexpected results. |
This instruction will materialize the information selected by operand 3 for the program activation specified by operand 2 and return the information in the template supplied by operand 1.
The operand 3 selection operand is provided to deal with the variable-length nature of some of the returned information. All "length-of-list" type information can be gathered by selecting the first option described below.
Operand 3 can have the following values:
MATACTAT2 returns a list of 8-byte activation marks. MATACTAT returns a list of 4-byte activation marks.
Any value for operand 3 other than those listed will cause a scalar value invalid (hex 3203) exception.
Operand 2 is different for the MATACTAT and MATACTAT2 instructions.
Operand 2 supplies the 8-byte activation mark of the activation for which information is to be returned.
Operand 2 supplies the 4-byte activation mark of the activation for which information is to be returned.
The activation mark uniquely identifies an activation within a process. A value of zero is interpreted to be a request for information about the activation of the invoking program.
The materialization
template identified by operand 1 must be 16-byte
aligned in the space.
This materialization template has the following format:
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
0 | 0 |
| Template size specification |
| Char(16) | ||||||||
0 | 0 |
| Number of bytes provided for materialization |
| Bin(4) | ||||||||
4 | 4 |
| Number of bytes available for materialization |
| Bin(4) | ||||||||
8 | 8 |
| Reserved (binary 0) |
| Char(8) | ||||||||
16 | 10 |
| Returned information |
| Char(*) | ||||||||
* | * |
| --- End --- |
|
|
The number of bytes provided indicates the size of the materialization template. This includes the length of the template header (16 bytes) plus the number of bytes provided for returned information. If a value of 8 is specified, then no data will actually be materialized and the number of bytes required to materialize the requested data will be returned in number of bytes available. Note that a value greater than 8, but less than 16 will result in no data being materialized, since bytes 9-16 are reserved. If the number of bytes provided is less than 8, then a materialization length invalid (hex 3803) exception is signaled.
The number of bytes available is set by the instruction to indicate the actual number of bytes available to be returned. The number of bytes available also includes the length of the template header (16 bytes). In no case does the instruction return more bytes of information than those available.
The format of returned information is described in the following paragraphs.
The following information is returned
when operand 3 is hex 00.
Offset | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||||||||||||||||
16 | 10 |
| Program |
| System pointer | ||||||||||||||||||||||
32 | 20 |
| Activation mark |
| UBin(4) | ||||||||||||||||||||||
36 | 24 |
| Activation group mark |
| UBin(4) | ||||||||||||||||||||||
40 | 28 |
| Invocation count |
| UBin(4) | ||||||||||||||||||||||
44 | 2C |
| Static frame count |
| UBin(4) | ||||||||||||||||||||||
48 | 30 |
| Program type |
| Char(1) | ||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||
49 | 31 |
| Activation attributes |
| Char(1) | ||||||||||||||||||||||
49 | 31 |
| Activation status |
| Bit 0 | ||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||
49 | 31 |
| Reserved (binary 0) |
| Bits 1-7 | ||||||||||||||||||||||
50 | 32 |
| Target activation group |
| Char(1) | ||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||
51 | 33 |
| Reserved (binary 0) |
| Char(1) | ||||||||||||||||||||||
52 | 34 |
| Dependent activation count |
| UBin(4) | ||||||||||||||||||||||
56 | 38 |
| Activation mark |
| UBin(8) | ||||||||||||||||||||||
|
|
|
For Non-Bound programs, the following datatype should be used:
| ||||||||||||||||||||||||
56 | 38 |
| Activation mark (Non-Bound program) |
| Char(8) | ||||||||||||||||||||||
64 | 40 |
| Activation group mark |
| UBin(8) | ||||||||||||||||||||||
|
|
|
For Non-Bound programs, the following datatype should be used:
| ||||||||||||||||||||||||
64 | 40 |
| Activation group mark (Non-Bound program) |
| Char(8) | ||||||||||||||||||||||
72 | 48 |
| --- End --- |
|
|
A description of the fields follows.
Program | This is a pointer to the program. The system pointer returned does not contain authority. Within a process, a program may have more than one activation. |
Activation mark | The activation mark identifies the activation within the process. This field provides the actual activation mark when the special zero value was supplied for operand 2. Otherwise, this field has the same value as operand 2. The value returned in the 4-byte activation mark may have wrapped. |
Activation group mark | This identifies the activation group which contains the activation. The value returned in the 4-byte activation group mark may have wrapped. |
Invocation count | This is a count of the number of program invocations which currently exist for this activation of the program. The count includes all threads in the process which owns the identified activation. Recall that a program invocation results from a program call operation like Call Program. |
Static frame count | This is the number of static storage frames allocated for this activation. |
Program type | The type of the program. A program is either a non-bound program, bound program, bound service program or Java program. |
Activation status | The activation status identifies whether the program is active. |
Target activation group | This is the target activation group attribute of the program object associated with this activation. |
Dependent activation count | This is the number of dependent program activations directly bound to the program identified by the activation mark in operand 2. |
The following information is returned when operand 3 is hex 01. This is a list of static storage frame descriptors. The static frame count (available in the basic activation attributes template) indicates how many entries must be accommodated by the template. The static storage frame list can be materialized only if the source activation group is permitted access to the target activation group as determined by the activation group access protection mechanism. If access is not permitted, then an activation group access violation (hex 2C12) exception is signaled.
The format of the list is:
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
16 | 10 |
| Static storage frame list entry |
| [*] Char(32) | ||||||||
|
|
|
(repeated static frame count times)
| ||||||||||
16 | 10 |
| Static frame base |
| Space pointer | ||||||||
|
|
|
This is a pointer to the first byte
of the static frame.
| ||||||||||
32 | 20 |
| Static frame size |
| UBin(4) | ||||||||
|
|
|
This is the size, in machine dependent
units (currently bytes),
of the static frame.
| ||||||||||
36 | 24 |
| Reserved |
| Char(12) | ||||||||
* | * |
| --- End --- |
|
|
The following information is returned when operand 3 is hex 02. This is a list of activation marks of all the dependent programs directly bound to the program specified in operand 2. The dependent activation count (available in the basic activation attributes template) indicates how many entries must be accommodated by the template. The format of the list is different for the MATACTAT and MATACTAT2 instructions.
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
16 | 10 |
| Activation mark |
| [*] UBin(8) | ||||||||
|
|
|
(repeated dependent activation count times)
This is the activation mark of a dependent program activation.
| ||||||||||
|
|
|
For Non-Bound programs, the following datatype should be used:
| ||||||||||
16 | 10 |
| Activation mark (Non-Bound program) |
| Char(8) | ||||||||
* | * |
| --- End --- |
|
|
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
16 | 10 |
| Activation mark |
| [*] UBin(4) | ||||||||
|
|
|
(repeated dependent activation count times)
This is the activation mark of a dependent program activation.
The value returned in this field may have wrapped.
| ||||||||||
* | * |
| --- End --- |
|
|
06 Addressing
08 Argument/Parameter
10 Damage Encountered
1C Machine-Dependent
20 Machine Support
22 Object Access
24 Pointer Specification
2C Program Execution
32 Scalar Specification
38 Template Specification
44 Protection Violation