Materialize Activation Attributes (MATACTAT)


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

Built-in number for MATACTAT2 is 659. MATACTAT2 ( receiver : address activation_mark : address of unsigned binary(8) attribute_selection : address ) OR

Built-in number for MATACTAT is 121. MATACTAT ( receiver : address activation_mark : address of unsigned binary(4) attribute_selection : address )

Warning

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.

Description

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:

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 for MATACTAT2

Operand 2 supplies the 8-byte activation mark of the activation for which information is to be returned.

Operand 2 for MATACTAT

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.

Basic Activation Attributes

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)



Hex 00 = Non-bound program
Hex 01 = Bound program, bound service program, or Java™ program
Hex 02-FF = Reserved


49 31
Activation attributes
Char(1)
49 31
Activation status
Bit 0



0 = Inactive
1 = Active


49 31
Reserved (binary 0)
Bits 1-7
50 32
Target activation group
Char(1)



0 = Default activation group
1 = Caller's activation group
2 = Named activation group
3 = Unnamed activation group
4 = Named shared activation group
5 = Unnamed shared activation group
6-255 Reserved


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.

Static Storage Frame List

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 ---

Dependent Activation Mark List

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.

Format of the dependent activation mark list for MATACTAT2

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 ---

Format of the dependent activation mark list for MATACTAT

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 ---

Authorization Required

Lock Enforcement

Exceptions

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