Test Exception (TESTEXCP)

Instruction Syntax

Op Code (Hex) Extender Operand 1 Operand 2 Operand 3-4
TESTEXCP 104A Receiver Exception description
TESTEXCPB 1C4A Branch options Receiver Exception description Branch options
TESTEXCPI 184A Indicator options Receiver Exception description Indicator options

Operand 1: Space pointer.

Operand 2: Exception description.

Operand 3-4:

  • Branch Form–Branch point, instruction pointer, relative instruction number, or absolute instruction number.
  • Indicator Form–Numeric variable scalar or character variable scalar.

Description:

The instruction tests the signaled status of the exception description specified in operand 2, and optionally alters the control flow or sets the specified indicators based on the test. Exception data is returned at the location identified by operand 1. The branch or indicator setting occurs based on the conditions specified in the extender field depending on whether or not the specified exception description is signaled.

Operand 2 is an exception description whose signaled status is to be tested. An exception can be signaled only if the referenced exception description is in the deferred state.

Operand 1 addresses a space into which the exception data is placed if an exception identified by the exception description has been signaled.

The template identified by operand 1 must be 16-byte aligned in the space and is formatted as follows:

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
    (0 if exception description is not signaled)

  • 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 address Invocation pointer or Null pointer
* * Target invocation address Invocation pointer
* * Signaling program instruction address UBin(2)
* * Signaled program 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 use by the instruction. 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.

If the exception description is not in the signaled state, the number of bytes available for the materialization entry is set to binary 0's, and no other bytes are modified.

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

The source invocation address field will contain a null pointer value if the source invocation no longer exists when this instruction is executed.

The area beyond the exception-specific data area is extended with binary 0's so that pointers to program invocations are properly aligned.

If no branch options are specified, instruction execution proceeds at the instruction following the Test Exception instruction.

If the exception data retention option, from the exception description, is set to 1 (do not save), no data is returned by this instruction.

Resultant Conditions

  • Exception signaled.
  • Exception not signaled.

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
    • 1601 Exception Description Status Invalid
  • 1C Machine-Dependent
    • 1C03 Machine Storage Limit Exceeded
  • 20 Machine Support
    • 2002 Machine Check
    • 2003 Function Check
  • 22 Object Access
    • 2208 Object Compressed
    • 220B Object Not Available
  • 24 Pointer Specification
    • 2401 Pointer Does Not Exist
    • 2402 Pointer Type Invalid
  • 2E Resource Control Limit
    • 2E01 User Profile Storage Limit Exceeded
  • 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