Materialize Process Message (MATPRMSG)

Instruction Syntax

Op Code (Hex) Operand 1 Operand 2 Operand 3 Operand 4
039C Materialization template Message template Source template Selection template
Operand 1: Space pointer.

Operand 2: Space pointer.

Operand 3: Space pointer or null.

Operand 4: Space pointer.

Bound Program Access
Built-in number for MATPRMSG is 127.
MATPRMSG (
          receiver_template    : address
          message_template     : address
          source_template      : address OR
                                 null operand
          selection_template   : 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 selection types 8 and 9 for 8-byte invocation and activation group marks, respectively, rather than selection types 3 and 4. It is also recommended that you use the 8-byte invocation and activation group marks at the end of the materialization template. 4-byte marks can wrap and produce unexpected results.

Description:

A message is materialized from a queue space according to the options specified. The message is located on a queue space queue specified by operand 3. The message is selected by the operand 4 criteria. Operands 1 and 2 contain the materialized information from the process message.

The template identified by operand 1 must be 16-byte aligned. Following is the format of the materialization template:

Offset  
Dec Hex Field Name Data Type and Length
0 0 Template 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 Process queue space queue offset Bin(4)
12 C Reserved (binary 0) Char(4)
16 10 Time sent Char(8)
24 18 Time modified Char(8)
32 20 Interrupted invocation Invocation pointer
48 30 Target invocation Invocation pointer or System pointer
64 40 Original target invocation Invocation pointer
80 50 Source program location Suspend pointer
96 60 Target program location Suspend pointer
112 70 Originating program location Suspend pointer
128 80 Invocation mark UBin(4)
132 84 Activation group mark UBin(4)
136 88 Thread ID Char(8)
144
90
Invocation mark
For Non-Bound programs, the following datatype should be used:
UBin(8)
144 90
  • Invocation mark (Non-Bound program)
  • Char(8)
152
98
Activation group mark
For Non-Bound programs, the following datatype should be used:
UBin(8)
152 98
  • Activation group mark (Non-Bound program)
  • Char(8)
160
A0
--- End ---
 

The first 4 bytes of the materialization template identify the total number of bytes provided for use by the instruction. This number is supplied as input to the instruction and is not modified by the instruction. If the value is zero for this field, then the operand 1 template is not returned. A number less than 128 (but not 0) causes the materialization length invalid (hex 3803) exception.

Process queue space queue offset
This value indicates which queue in the queue space a message resides on. A value of -1 will be returned if the message is on the external queue, and zero if the message is on the message log. If the message resides on an invocation queue this field will be zero.
Time sent
The value of the system time-of-day clock when the message was originally sent (Signal Exception (SIGEXCP) or message originated as a result of an exception). The time will be returned in UTC if time format is set in operand 4. By default the time will be returned as local system time. The local system time returned is derived from a conversion of the UTC time, so the current system time zone may not reflect the system time zone of when the message was originally sent. Messages will contain microsecond granularity. The time-of-day used is not unique and all the uniqueness bits are set to 0. See Standard Time Format for additional information on the time-of-day clock.
Time modifed
This value is initially equal to the time sent value. The time will be returned in UTC if time format is set in operand 4. By default the time will be returned as local system time. The local system time returned is derived from a conversion of the UTC time, so the current system time zone may not reflect the system time zone of when the message was originally modifed. The not unique time-of-day is used. See Standard Time Format for additional information on the time-of-day clock.
Interrupted invocation
An invocation pointer that addresses the invocation which currently has this message as its interrupt cause. This pointer will have a null pointer value if the message is not an exception message.
Target invocation
An invocation pointer or system pointer that identifies which queue contains the message. If the message resides on an invocation queue, this field contains an invocation pointer that addresses the invocation whose invocation message queue currently contains the message. If the message does not reside on an invocation queue, then a system pointer to the Queue Space is returned. The process queue space queue offset field indicates on which queue the message resides, the message log or the external queue.
Original target invocation
An invocation pointer that addresses the invocation which originally was sent the message. This pointer will have a null pointer value if the original target invocation no longer exists.
Source program location
A suspend pointer which identifies the program, module, procedure, and statement where the source invocation was suspended (due to a CALL or some form of interrupt).
Target program location
A suspend pointer which identifies the program, module, procedure, and statement where the target invocation was suspended (due to a CALL or some form of interrupt). If the message is no longer in an invocation message queue, then this pointer reflects the invocation of the last (most recent) invocation message queue in which the message resided. This pointer will have a null pointer value if the message has never resided in an invocation message queue.
Originating program location
A suspend pointer which identifies the program, module, procedure, and statement of the instruction that sent the message. For messages sent by the machine, this pointer area contains a machine-dependent representation of the source machine component.
Invocation mark
If the message has ever resided on an invocation, this field will be non-zero. It contains the mark of the invocation where the message was last queued. The value returned in the 4-byte invocation mark may have wrapped.
Activation group mark
If the message has ever resided on an invocation, this field will be non-zero. It contains the mark of the activation group which contains the invocation where the message was last queued. The value returned in the 4-byte activation group mark may have wrapped.
Thread ID
This is the thread ID of the thread that added the message to the process queue space.

Messages will contain a thread ID that is determined by the queue space to which the message is being sent. When sending to the current process queue space, the thread ID of the current thread will be used. When sending to a different process queue space, the thread ID of the initial thread for the owning process will be used. If the queue space is not associated with a process, the thread ID will be 0.

Note: When sending a reply, the message will contain the thread ID from the associated inquiry message.

The template identified by operand 2 is used to contain the materialized message. It must be 16-byte aligned with the following format.

Offset  
Dec Hex Field Name Data Type and Length
0 0 Template size Char(8)
0 0
  • Number of bytes provided for materialization
  • Bin(4)
4 4
  • Number of bytes available for materialization
  • Bin(4)
8
8
Message type
Hex 00 = Informational message 0
Hex 01 = Informational message 1
Hex 04 = Exception message
Hex 06 = Return/Transfer Control message
Hex 07 = Return message
Hex 10 = Control Entry message
Hex 11 = Escape/return handler

All other values are reserved.


Char(1)
9 9 Reserved (binary 0) Char(1)
10 A Message severity Bin(2)
12 C Reply/Inquiry message reference key Char(4)
16 10 Message status mask Char(8)
16
10
  • Log message
    0 = The message is not queued to the Process Message Log.
    1 = The message is queued to the Process Message Log.

  • Bit 0
16
10
  • Inquiry
    0 = Message will not accept a reply.
    1 = Message will accept a reply.

  • Bit 1
16
10
  • Reply
    0 = Message does not represent a reply message.
    1 = Message represents a reply message.

  • Bit 2
16
10
  • Answered
    0 = For messages with a status of inquiry, this indicates that a reply message has not been received.
    1 = For messages with a status of inquiry, this indicates that a reply message has been received.

  • Bit 3
16
10
  • Message being processed
    0 = This value of the flag has no particular meaning.
    1 = For a message type of exception, this indicates that the interrupt is currently being handled.

  • Bit 4
16
10
  • Retain
    0 = Message will be dequeued and its contents discarded when the following message status bits are zero: log, message being processed, and action pending.
    1 = Keeps the message from being dequeued after all other message status bits are zero.

  • Bit 5
16
10
  • Action pending
    0 = Indicates no actions are pending based on this message.
    1 = Indicates that the message is either an interrupt cause or is a return, return/transfer control message.

  • Bit 6
16
10
  • Invoke Process Default Exception Handler (PDEH)
    0 = Do not invoke PDEH.
    1 = Invoke PDEH, only valid if message type is exception.

  • Bit 7
16
10
  • Error
    0 = No error has occurred in the sending of this message.
    1 = An error has occurred in the sending of this message.

  • Bit 8
16
10
  • PDEH previously invoked
    0 = PDEH has not previously been invoked for this message.
    1 = PDEH has previously been invoked for this message.

  • Bit 9
16 10
  • Reserved (binary 0)
  • Bits 10-31
16 10
  • User defined status
  • Bits 32-63
24
18
Interrupt class mask
Note: All fields in the interrupt class mask that are marked as 'Reserved' have a value of binary zero.

Char(8)
24 18
  • Binary overflow or divide by zero
  • Bit 0
24 18
  • Decimal overflow or divide by zero
  • Bit 1
24 18
  • Decimal data error
  • Bit 2
24 18
  • Floating-point overflow or divide by zero
  • Bit 3
24 18
  • Floating-point underflow or inexact result
  • Bit 4
24 18
  • Floating-point invalid operand or conversion error
  • Bit 5
24 18
  • Other data error (edit mask, etc)
  • Bit 6
24 18
  • Specification (operand alignment) error
  • Bit 7
24 18
  • Pointer not set/pointer type invalid
  • Bit 8
24 18
  • Object not found
  • Bit 9
24 18
  • Object destroyed
  • Bit 10
24 18
  • Address computation underflow/overflow
  • Bit 11
24 18
  • Space not allocated as specified offset
  • Bit 12
24 18
  • Domain/State protection violation
  • Bit 13
24 18
  • Authorization violation
  • Bit 14
24 18
  • Java thrown class
  • Bit 15
24 18
  • Reserved
  • Bits 16-28
24 18
  • Other MI generated exception (not function check)
  • Bit 29
24 18
  • MI generated function check/machine check
  • Bit 30
24 18
  • Message generated by Signal Exception instruction
  • Bit 31
24 18
  • Reserved
  • Bits 32-39
24
18
  • User defined

  • Bits 40-63
   
 
32 20 Initial handler priority Char(1)
33 21 Current handler priority Char(1)
34 22 Exception ID UBin(2)
36 24 PDEH reason code Char(1)
37 25 Signal class Char(1)
38 26 Compare data length Bin(2)
40 28 Message ID Char(7)
47 2F Reserved (binary 0) Char(1)
48
30
Maximum message data length
Input to the instruction
Bin(4)
52 34 Message data length Bin(4)
56
38
Maximum length of message extension data
Input to the instruction
Bin(4)
60 3C Message extension data length Bin(4)
64
40
Message data pointer
Input to the instruction
Space pointer
80
50
Message data extension pointer
Input to the instruction
Space pointer
96 60 Message format information Char(32)
   
  • If the message is not a return or return/transfer control message.
 
96
60
  • Compare data
    If the message is a return or return/transfer control message.
  • Char(32)
96 60
  • Return handler identifier
  • System pointer or Procedure pointer
112 70
  • Reserved
  • Char(16)
128 80 Reserved (binary 0) Char(48)
176
B0
--- End ---
 

The first 4 bytes of the message template identify the total number of bytes provided for use by the instruction. This number is supplied as input to the instruction and is not modified by the instruction. A number less than 160 causes the materialization length invalid (hex 3803) exception.

Message type
This value determines the type of the message. The type of message determines which message status values have meaning.

The following message status attributes are valid for all informational message types:.

  • Log Message
  • Reply
  • Inquiry

The following message status attributes are valid for a message type of exception:.

  • Log Message
  • Retain
  • Action pending
  • Invoke PDEH
  • Inquiry
  • Reply

The following message status attributes are valid for a message type of return or return/transfer control.

  • Action pending

The following describes each message type in detail.

  • Informational 0 - There are no special requirements as to what message status contains or what the Target Invocation pointer actually identifies.
  • Informational 1 - There are no special requirements as to what message status contains or what the Target Invocation pointer actually identifies.
  • Exception - This type of message has an interrupt cause for the interrupted invocation.
  • Return/transfer control - This message type indicates that a return handler is invoked when the target invocation is exited for any reason including XCTL. Additionally, messages of this type interpret the message format information field to identify a program or procedure to be invoked as the return handler.
  • Return - This message type indicates that a return handler will be invoked if the target invocation is exited for any reason other than Transfer Control (XCTL). In the case of XCTL, the message is preserved and associated with the transferred to invocation. Additionally, messages of this type interpret the message format information field to identify a program or procedure to be invoked as the return handler.
  • Control Entry - This message type is associated with an invocation. The control entry is used to keep data required for exception processing.
  • Escape/Return Handler - This message type is associated with an invocation. The escape/return handler is used to keep data required for processing when control is returned to an invocation.
Message severity
A value indicating the severity of the message.
Reply/Inquiry message reference key
If the message materialized is an inquiry message that has been answered, this is the message reference key of its reply message.

If the message materialized is a reply message, this is the message reference key of its inquiry message.

This value only has meaning for exception and informational messages.

Message status mask
A bit-significant value indicating the original status of the message.
  • Log message status. If this bit is 1, the message is queued to the Process Message Log until it is explicitly removed.
  • Inquiry status. If this bit is 1, this message will accept a reply message.
  • Reply status. If this value is 1, this message is a reply to an inquiry message. The reply message reference key is used to identify the message for which the message was replied.
  • Answered status. If this value is 1, the message is a inquiry message for which a reply has been sent. The reply message reference key is used to identify the reply message.
  • Retain status. If this bit is 1, the message is kept even if the invocation message queue after the following message status bits are zero: log, message being processed, and action pending.
  • Action pending status. If this bit is 1, this message represents an exception which is the current interrupt cause for the specified Source Invocation or else it is a return or return/transfer control message which has not yet been processed.
  • Invoke Process Default Exception Handler. This status only has meaning for exception messages.
Interrupt class mask
A bit-significant value indicating the cause of the interrupt. The MI user is allowed to use the machine-defined classes since machine-generated errors may be re-sent by the MI user.

This value only has meaning for exception messages.

The Java™ thrown class interrupt class indicates that the message corresponds to a thrown class in the Java language.

Initial handler priority
An unsigned eight-bit binary number which selects the initial interrupt handler priority. This value is within the range of 64 - 255.

This value only has meaning for exception messages.

Exception ID
A two-byte field that identifies the exception being defined by this message.

This value only has meaning for exception messages.

PDEH reason code
A value defined by the user which indicates the type of processing to be attempted by the Process Default Exception Handler.

This value only has meaning for exception messages.

Signal class
A value defined by the user which is used to select exception monitors.

This value only has meaning for exception messages.

Compare data length
A value indicating the number of bytes provided as compare data.

This value only has meaning for exception messages.

Message ID
Specifies the message identifier of a message description whose predefined message is being sent.
Maximum message data length
Input to the instruction that specifies the number of bytes supplied for the message data. The maximum value allowed is 65,504.
Message data length
A value indicating the number of bytes of message data for this process message.
Maximum extension data length
Input to the instruction that specifies the number of bytes supplied for the message data extension. The maximum value allowed is 65,504.
Message extension data length
A value indicating the number of bytes of message data extension for this process message.
Message data pointer
A pointer to the area to receive the message data. This field is ignored if the maximum message data length field is zero.
Message data extension pointer
A pointer to the area to receive the message data extension. This field is ignored if the maximum extension data length field is zero.
Message format information
A 32 byte field that contains either compare data or two 16 byte fields which contain information related to a return type message.
  • If message type is not a return or return/transfer control message, this field is defined as compare data used to determine which exception handler is given control. Up to 32 bytes may be specified.
  • If message type is a return or return/transfer control message, then the first 16 bytes of this field are defined as a system pointer to a program object, or else a procedure pointer to a bound program procedure. The last 16 bytes of the field are reserved for future use.

This value is ignored if the message does not represent an exception, return or return/transfer control message.

The template identified by operand 3 specifies the source invocation of the message. This operand can be null (which indicates the requesting invocation is to be used for the Source Invocation) or specify either an Invocation pointer to an invocation, a null pointer value (which indicates the current invocation), or a pointer to a process queue space. It must be 16-byte aligned with the following format.

Offset  
Dec Hex Field Name Data Type and Length
0 0 Source invocation offset Bin(4)
4 4 Originating invocation offset Bin(4)
8 8 Invocation range Bin(4)
12 C Reserved (binary 0) Char(4)
16 10 Source invocation/process queue space pointer System pointer or Invocation pointer
32 20 Reserved (binary 0) Char(16)
48
30
--- End ---
 

Source invocation offset
A signed numerical value indicating an invocation relative to the invocation located by the source invocation pointer. A value of zero denotes the invocation addressed by the source invocation pointer, with increasingly positive numbers denoting increasingly later invocations in the stack, and increasingly negative numbers denoting increasingly earlier invocations in the stack. If a process queue space is specified as the message source, then the only valid values for this field are 0, -1 and -2. A value of -1 indicates to materialize from the external queue of the process queue space. A zero value indicates to materialize from the message log of the process queue space. A value of -2 indicates to attempt to locate the message using the message reference index supplied in operand 4 without regard to the queue space queue that the message resides on. Only unanswered inquiry messages, return messages, and return/transfer control messages can be materialized in this fashion. Other values result in a scalar value invalid (hex 3203) exception being signaled.

If the invocation identified by this offset does not exist in the stack, a scalar value invalid (hex 3203) exception will be signaled.

Originating invocation offset
Specifies a displacement from the invocation executing this instruction and must be zero (which indicates the current invocation) or negative (which indicates an older invocation). The invocation identified is used as the source for all authorization checks (environment authority to an invocation or authority to a process queue space). If the originating invocation offset is non-zero, then the invocation executing this instruction must be authorized to the originating invocation identified.

If the invocation identified by this offset does not exist in the stack or the value is greater than zero, a scalar value invalid (hex 3203) exception will be signaled.

Invocation range
A signed numerical value indicating the number of invocations in the range in addition to the invocation identified by the source invocation pointer. If a process queue space pointer is provided, this value must be zero.

The sign of the invocation range determines the direction of the additional invocations. A positive number specifies a range encompassing newer invocations, while a negative number specifies a range encompassing older invocations.

It is not an error if this value specifies a range greater than the number of existing invocations in the specified direction. The materialization will stop after the last invocation is encountered.

Source invocation pointer
An invocation pointer to an invocation. If a null pointer value, then the current invocation is indicated.

If the invocation identified does not exist in the stack or is invalid for this operation, an invalid invocation address (hex 1603) exception will be signaled.

Process queue space pointer
A system pointer to a process queue space object.

The template identified by operand 4 must be 16-byte aligned. Following is the format of the message selection template:

Offset  
Dec Hex Field Name Data Type and Length
0 0 Starting message reference index Char(4)
4 4 Ending message reference index Char(4)
8 8 Number of selection criteria Bin(2)
10 A Reserved (binary 0) Char(4)
14 E Message options Char(2)
14 E
  • Reserved (binary 0)
  • Bits 0-14
14
E
  • Time format
    0 = Message timestamps are returned in local system time.
    1 = Message timestamps are returned in UTC.
  • Bit 15
16
10
Selected message reference index
Output by the instruction
Char(4)
20
14
Selected message count
Output by the instruction
Bin(4)
24
18
Status change count
Ignored by the instruction
Bin(4)
28
1C
Moved message count
Ignored by the instruction
Bin(4)
32 20 Selection criterion [*] Char(32)
32
20
  • Selection type
    Hex 00 = Select based on message status
    Hex 01 = Select based on message ID
    Hex 02 = Select based on interrupt class
    Hex 03 = Select based on invocation mark
    Hex 04 = Select based on activation group mark
    Hex 07 = Select based on thread ID
    Hex 08 = Select based on 8-byte invocation mark
    Hex 09 = Select based on 8-byte activation group mark

  • Char(1)
33 21
  • Reserved (binary 0)
  • Char(1)
34 22
  • Selection action
  • Char(2)
34
22
    • Reject criterion
      0 = Select message if criterion is satisfied
      1 = Reject message if criterion is satisfied

    • Bit 0
34
22
    • Reject message
      0 = Do not reject message if criterion is not satisfied
      1 = Reject message if criterion is not satisfied

    • Bit 1
34
22
    • Reject satisfaction
      0 = Accept satisfaction of criterion
      1 = Reject satisfaction of criterion

    • Bit 2
34 22
    • Reserved (binary 0)
    • Bits 3-15
36 24
  • Message type mask
  • Char(4)
40 28
  • Selection criterion information
  • Char(24)
   
    • If the selection type is message status
 
40 28
    • Message status mask
    • Char(8)
48 30
    • Message status complement
    • Char(8)
56 38
    • Reserved (binary 0)
    • Char(8)
64
40
    • --- End of message status ---
      If the selection type is message ID
40 28
    • Message ID
    • Char(7)
47 2F
    • Reserved (binary 0)
    • Char(17)
64
40
    • --- End of message ID ---
      If the selection type is interrupt class
40 28
    • Interrupt class mask
    • Char(8)
48 30
    • Interrupt class complement
    • Char(8)
56 38
    • Reserved (binary 0)
    • Char(8)
64
40
    • --- End of interrupt class ---
      If the selection type is invocation mark
40 28
    • Invocation mark
    • UBin(4)
44 2C
    • Reserved (binary 0)
    • Char(20)
64
40
    • --- End of invocation mark ---
      If the selection type is activation group mark
40 28
    • Activation group mark
    • UBin(4)
44 2C
    • Reserved (binary 0)
    • Char(20)
64
40
    • --- End of activation group mark ---
      If the selection type is thread ID
40 28
    • Thread ID
    • Char(8)
48 30
    • Reserved (binary 0)
    • Char(16)
64
40
    • --- End of thread ID ---
      If the selection type is 8-byte invocation mark
40
28
    • Invocation mark
      For Non-Bound programs, the following datatype should be used:
    • UBin(8)
40 28
      • Invocation mark (Non-Bound program)
      • Char(8)
48 30
    • Reserved (binary 0)
    • Char(16)
64
40
    • --- End of 8-byte invocation mark ---
      If the selection type is 8-byte activation group mark
40
28
    • Activation group mark
      For Non-Bound programs, the following datatype should be used:
    • UBin(8)
40 28
      • Activation group mark (Non-Bound program)
      • Char(8)
48 30
    • Reserved (binary 0)
    • Char(16)
64 40
    • --- End of 8-byte activation group mark ---
*
*
--- End ---
 

Starting and ending message reference index
Messages in the specified range of index values are examined either until one of the selection criteria has been satisfied or all queues specified have been searched. The direction of search is determined by the relative values of starting message reference index and ending message reference index. If the former value is smaller, then the search direction is in numerically (and chronologically) increasing order, while if the latter value is smaller the search direction is in the opposite direction.

Messages are examined starting with the message identified by starting message reference index, or if no such message exists in the queue, starting with the closest existing message in the direction of the search.

For the current process, queue space messages will only be selected for the current thread. To select messages for another thread, a thread selection criteria must be used.

For a different process queue space, all messages for all threads will be selected.

If operand 3 specifies a system pointer to a queue space and a source invocation offset of -2, then the starting and ending message reference indices must be equal, otherwise a scalar value invalid (hex 3203) exception will be issued.

Number of selection criteria
A numerical value that specifies how many selection criteria fields are supplied. If number of selection criteria has a value of zero, then the first message in the index range will be materialized.
Message options
  • Time format - If this bit is set to 1 then time sent and time modified will be returned as UTC. If this bit is set to 0 then time sent and time modified will be returned as local system time. For messages originating from before v7r3, specifying the UTC option will result in time sent and time modified returning 0.
Selected message reference index
This value returns the message reference index of the message materialized. Zero is returned if no message satisfies the criteria.
Selected message count
This value indicates the number of messages selected: zero for no messages found, one if a message was found.
Selection criterion
This field contains the data used to select messages from a queue space. There is a variable number of criteria present in the template (the number present is in the number of selection criteria field). Each selection criterion may select a message, reject it, or take no action. Successive selection criteria are applied to each message until it is selected or rejected, or until selection criteria have been exhausted (in which case selection is the default).
Selection type
This field indicates the format of the selection criterion and what field in the message is compared.
Selection action
A bit-significant value indicating what actions to perform during the selection criteria processing.
  • Reject criterion - If this bit is 1, a message is rejected if the selection criterion is satisfied. If this bit is 0, a message is selected when the selection criterion is satisfied.
  • Reject message - If this bit is 1, a message is rejected if the selection criteria is not satisfied. If this bit is 0, no action is taken when the selection criteria is not satisfied. Processing continues with the next selection criterion.
  • Reject satisfaction - If this bit is 0, the satisfaction of the criterion is accepted. If this bit is 1, a satisfied criterion will become not satisfied and a not satisfied criterion will become satisfied.

The following figure illustrates how messages are selected based on the selection action criterion.

How messages are selected
Message type mask
A bit-significant value indicating types of messages that should be examined during selection criteria processing. The first 31 bits correspond to message types hex 00 through hex 1E respectively. The 32nd bit (bit 31) corresponds to all message types greater than hex 1E.
Message status mask and message status complement
These are bit-significant values indicating the message status attributes that will allow a message to be selected. These values are used to test a message as follows:

The message status complement is bit-wise exclusive-ORed with the message status value of a message. The result of this is then bit-wise ANDed with the message status mask. If the result is all 0 bits, the message does not satisfy this selection criterion. If the result is not all 0 bits, the message satisfies the selection criterion.

Message ID
A character value that is compared to the message ID of a message. If the values are equal the selection is satisfied.
Interrupt class mask and interrupt class complement
These are bit-significant values indicating the interrupt class attributes that will allow a message to be selected. These values are used to test a message as follows:

The interrupt class complement is bit-wise exclusive-ORed with the interrupt class value of a message. The result of this is then bit-wise ANDed with the interrupt class mask. If the result is all 0 bits, the message does not satisfy this selection criterion. If the result is not all 0 bits, the message satisfies the selection criterion.

Invocation mark
A binary number that is compared to the invocation mark of a message. If the values are equal the selection is satisfied. The value returned in the 4-byte invocation mark may have wrapped.
Activation group mark
A binary number that is compared to the activation group mark of a message. If the values are equal the selection is satisfied. The value returned in the 4-byte activation group mark may have wrapped.
Thread ID
A binary number that is compared to the thread ID of a message. If the values are equal, the selection is satisfied.
Note: 0 is not a valid thread ID and can be used to select all messages.

Authorization Required

The following algorithm is used to determine authorization.

  1. The invocation which invoked the MATPRMSG instruction must have authority to the invocation identified as the Source Invocation.
  2. The Originating Invocation must have authority to the invocation identified as the Source Invocation or to the invocation directly called by the Source invocation.

If any of the authority checks fail then an activation group access violation (hex 2C12) exception will be signaled.

  • Operational
    • Operand 3
  • Execute
    • Contexts referenced for address resolution

Lock Enforcement

  • Materialize
    • Operand 3
    • Contexts referenced for address resolution

Exceptions

  • 06 Addressing
    • 0601 Space Addressing Violation
    • 0602 Boundary Alignment
    • 0603 Range
  • 08 Argument/Parameter
    • 0801 Parameter Reference Violation
  • 0A Authorization
    • 0A01 Unauthorized for Operation
  • 10 Damage Encountered
    • 1004 System Object Damage State
    • 1005 Authority Verification Terminated Due to Damaged Object
    • 1044 Partial System Object Damage
  • 16 Exception Management
    • 1603 Invalid Invocation Address
  • 1A Lock State
    • 1A01 Invalid Lock State
  • 1C Machine-Dependent
    • 1C03 Machine Storage Limit Exceeded
    • 1C04 Object Storage Limit Exceeded
  • 20 Machine Support
    • 2002 Machine Check
    • 2003 Function Check
  • 22 Object Access
    • 2201 Object Not Found
    • 2202 Object Destroyed
    • 2203 Object Suspended
    • 2207 Authority Verification Terminated Due to Destroyed Object
    • 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
    • 2C12 Activation Group Access Violation
  • 2E Resource Control Limit
    • 2E01 User Profile Storage Limit Exceeded
  • 32 Scalar Specification
    • 3203 Scalar Value Invalid
  • 36 Space Management
    • 3601 Space Extension/Truncation
  • 38 Template Specification
    • 3803 Materialization Length Invalid
  • 44 Protection Violation
    • 4401 Object Domain or Hardware Storage Protection Violation
    • 4402 Literal Values Cannot Be Changed
  • 46 Queue Space
    • 4601 Queue Space Not Associated with the Process