Retrieve Exception Data (RETEXCPD)


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
* *
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
Char(1)



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


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

Lock Enforcement

Exceptions

06 Addressing

08 Argument/Parameter

10 Damage Encountered

16 Exception Management

1C Machine-Dependent

20 Machine Support

22 Object Access

24 Pointer Specification

2E Resource Control Limit

32 Scalar Specification

36 Space Management

38 Template Specification

44 Protection Violation