Materialize Activation Attributes (MATACTAT)

Instruction Syntax

Op Code (Hex) Operand 1 Operand 2 Operand 3
MATACTAT2 0233 Receiver Activation mark Attribute selection
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:

  • Hex 00 — basic activation attributes
  • Hex 01 — static storage frame list
  • Hex 02 — dependent activation mark list

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

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

Char(1)

49 31 Activation attributes Char(1)

49

31

  • Activation status

    0 =
    Inactive
    1 =
    Active
  • Bit 0

49 31
  • Reserved (binary 0)
  • Bits 1-7

50

32

Target activation group

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

Char(1)

51 33 Reserved (binary 0) Char(1)
52 34 Dependent activation count UBin(4)

56

38

Activation mark
For Non-Bound programs, the following datatype should be used:

UBin(8)

56 38
  • Activation mark (Non-Bound program)
  • Char(8)

64

40

Activation group mark
For Non-Bound programs, the following datatype should be used:

UBin(8)

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
(repeated static frame count times)

[*] Char(32)

16

10

  • Static frame base
    This is a pointer to the first byte of the static frame.

  • Space pointer

32

20

  • Static frame size
    This is the size, in machine dependent units (currently bytes), of the static frame.

  • UBin(4)

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

[*] UBin(8)

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
(repeated dependent activation count times)

This is the activation mark of a dependent program activation. The value returned in this field may have wrapped.

[*] UBin(4)

*

*

--- End ---

 

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
    • 1005 Authority Verification Terminated Due to Damaged Object
    • 1044 Partial System Object Damage
  • 1C Machine-Dependent
    • 1C03 Machine Storage Limit Exceeded
    • 1C04 Object Storage Limit Exceeded
    • 1C09 Auxiliary Storage Pool Number Invalid
  • 20 Machine Support
    • 2002 Machine Check
    • 2003 Function Check
  • 22 Object Access
    • 2202 Object Destroyed
    • 220B Object Not Available
  • 24 Pointer Specification
    • 2401 Pointer Does Not Exist
    • 2402 Pointer Type Invalid
    • 2403 Pointer Addressing Invalid Object Type
  • 2C Program Execution
    • 2C11 Process Object Access Invalid
    • 2C12 Activation Group Access Violation
    • 2C16 Program Activation Not Found
  • 32 Scalar Specification
    • 3203 Scalar Value Invalid
  • 38 Template Specification
    • 3803 Materialization Length Invalid
  • 44 Protection Violation
    • 4401 Object Domain or Hardware Storage Protection Violation
    • 4402 Literal Values Cannot Be Changed