Retrieve Exception Data (RETEXCPD)

Instruction Syntax

Op Code (Hex) Operand 1 Operand 2
03E2 Receiver Retrieve options

Operand 1: Space pointer.

Operand 2: Character(1) scalar.

Description:

The data related to a particular occurrence of an exception is returned and placed in the specified space.

Operand 1 is a space pointer that identifies the receiver template. The template identified by operand 1 must be 16-byte aligned in the space.

The value of operand 2 specifies the type of exception handler for which the exception data is to be retrieved. The exception handler may be a branch point exception handler, an internal entry point exception handler, or an external entry point exception handler.

An exception state of thread invalid (hex 1602) exception is signaled to the invocation issuing the Retrieve Exception Data instruction if the retrieve option is not consistent with the thread's exception handling state. For example, the exception is signaled if the retrieve option specifies retrieve for internal entry point exception handler and the thread exception state indicates that an internal exception handler has not been invoked.

After an invocation has been destroyed, exception data associated with a signaled exception description within that invocation is lost.

The format of operand 1 for the materialization is as follows:

Offset  
Dec Hex Field Name Data Type and Length
0 0 Template size Char(8)
0 0
  • Number of bytes provided for retrieval
  • Bin(4)
4 4
  • Number of bytes available for retrieval
  • Bin(4)
8 8 Exception identification Char(2)
10 A Compare value length (maximum of 32 bytes) Bin(2)
12 C Compare value Char(32)
44 2C Message reference key Char(4)
48 30 Exception specific data Char(*)
* * Source invocation Invocation pointer or Null(16)
* * Target invocation Invocation pointer
* * Source instruction address UBin(2)
* * Target instruction address UBin(2)
* * Machine-dependent data Char(10)

*

*

--- End ---

 

The first 4 bytes of the materialization identify the total number of bytes provided for retrieval of the exception data. 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 invalid (hex 3803) exception) are signaled in the event that the receiver contains insufficient area for the materialization.

The message reference key field returns the architected value that uniquely identifies the message in the process queue space.

The source invocation and source instruction address identify the invocation that caused the exception to be signaled. For machine exceptions, this invocation pointer identifies the invocation executing when the exception occurred. For user-signaled exceptions, this invocation pointer locates the invocation that executed the Signal Exception (SIGEXCP) instruction. The pointer will be null if the source invocation no longer exists at the time that this instruction is executed. The source instruction address field locates the instruction that caused the exception to be signaled. This field in a bound program invocation will be set to 0.

The target invocation and target instruction address identify the invocation that is the target of the exception. This invocation is the last invocation that was given the chance to handle the exception. For machine exceptions, the first target invocation is the invocation incurring the exception. For user-signaled exceptions, the Signal Exception (SIGEXCP) instruction may initially locate the current or any previous invocation. If the target invocation handles the exception by resignaling the exception, the immediately previous invocation is considered to be the target invocation. This may occur repetitively until no more prior invocations exist in the thread and the signaled program invocation entry is assigned a value of binary 0. If an invocation handles the exception in any manner other than resignaling or does not handle the exception, that invocation is considered to be the target.

The target instruction address field specifies the number of the instruction that is currently being executed in the target invocation.

The machine extends the area beyond the exception specific data area with binary 0's so that the pointers to program invocations are aligned on a 16 byte boundary.

The operand 2 values are defined as follows:

Offset  
Dec Hex Field Name Data Type and Length

0

0

Retrieve options

Hex 00 =
Retrieve for a branch point exception handler
Hex 01 =
Retrieve for an internal entry point exception handler
Hex 02 =
Retrieve for an external entry point exception handler

Char(1)

1

1

--- End ---

 

If the exception data retention option is set to 1 (do not save), the number of bytes available for retrieval is set to 0.

Exception data is always available to the process default exception handler.

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
    • 1044 Partial System Object Damage
  • 16 Exception Management
    • 1602 Exception State of Thread Invalid
  • 1C Machine-Dependent
    • 1C03 Machine 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
    • 2208 Object Compressed
    • 220B Object Not Available
  • 24 Pointer Specification
    • 2401 Pointer Does Not Exist
  • 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