Op Code (Hex) | Operand 1 | Operand 2 | Operand 3 | |
---|---|---|---|---|
03E3 | Attribute receiver | Invocation template | Exception template |
Operand 1: Space pointer.
Operand 2: Space pointer.
Operand 3: Space pointer.
Note: A change has been made in the way in which exceptions are handled for bound programs. This instruction is intended for use with non-bound programs, but can be used against bound programs. The data that is returned when a bound program is accessed will always say that there is an external handler for the sensed exception, that there is no exception data being returned and a starting exception description number of 0.
This instruction searches the invocation specified by operand 2 for an exception description that matches the exception identifier and compare value specified by operand 3 and returns the user data and exception handling action specified in the exception description. The exception descriptions of the invocation are searched in ascending Object Definition Table (ODT) number sequence.
The template identified by operand 1 must be 16-byte aligned.
The format of the attribute receiver 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 materialization |
| Bin(4) | ||||||||||||||||
4 | 4 |
| Number of bytes available for materialization |
| Bin(4) | ||||||||||||||||
8 | 8 |
| Control flags |
| Char(2) | ||||||||||||||||
8 | 8 |
| Exception handling action |
| Bits 0-2 | ||||||||||||||||
|
|
|
| ||||||||||||||||||
8 | 8 |
| No data |
| Bit 3 | ||||||||||||||||
|
|
|
| ||||||||||||||||||
8 | 8 |
| Reserved (binary 0) |
| Bit 4 | ||||||||||||||||
8 | 8 |
| User data indicator |
| Bit 5 | ||||||||||||||||
|
|
|
| ||||||||||||||||||
8 | 8 |
| Reserved (binary 0) |
| Bits 6-7 | ||||||||||||||||
8 | 8 |
| Exception handler type |
| Bits 8-9 | ||||||||||||||||
|
|
|
| ||||||||||||||||||
8 | 8 |
| Reserved (binary 0) |
| Bits 10-15 | ||||||||||||||||
10 | A |
| Relative exception description number |
| Bin(2) | ||||||||||||||||
12 | C |
| Reserved (binary 0) |
| Char(4) | ||||||||||||||||
16 | 10 |
| Pointer to user data (binary 0 if value of user data indicator is 0) |
| Space pointer | ||||||||||||||||
32 | 20 |
| --- 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 exception is signaled in the event the receiver contains insufficient area for the materialization, other than the materialization length invalid (hex 3803) exception described previously.
The relative exception description number field identifies the relative number of the exception description that matched the search criteria. The order of definition of the exception descriptions in the ODT determines the value of the index. A value of 1 indicates that the first exception description defined in the ODT matched the search criteria.
The format of the invocation template is as follows:
Offset | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||||||
0 | 0 |
| Invocation address/offset |
| Space pointer or Invocation pointer | ||||||||||||
16 | 10 |
| Search flags |
| Char(2) | ||||||||||||
16 | 10 |
| Use offset option |
| Bit 0 | ||||||||||||
|
|
|
| ||||||||||||||
16 | 10 |
| Reserved (binary 0) |
| Bits 1-15 | ||||||||||||
18 | 12 |
| First exception description to search |
| Bin(2) | ||||||||||||
20 | 14 |
| --- End --- |
|
|
The template identified by operand 2 must be 16-byte aligned. The invocation address/offset field is a space/invocation pointer that identifies the invocation to be searched. The invocation is searched for a matching exception description. If the invocation address locates either an invalid invocation or the invocation stack base entry, the invalid invocation address (hex 1603) exception is signaled.
The invocation address/offset field can also be an offset value from the current requesting invocation to the invocation to be searched. This is done by setting the use offset option bit field that follows the invocation address field to 1. If the invocation offset value locates the invocation stack base entry, the invocation offset outside range of current stack (hex 2C1A) exception is signaled. If the invocation offset value is positive or zero, a template value invalid (hex 3801) exception is signaled.
The first exception description to search field specifies the relative number of the exception description to be used to start the search. The number must be a nonzero positive binary number determined by the order of definition of exception descriptions in the ODT. A value of 1 indicates that the first exception description in the invocation is to be used to begin the search. If the value is greater than the number of exception descriptions for the invocation, the operand 1 template is materialized with the number of bytes available for materialization set to 0.
The operand 3 exception template specifies the
exception-related data to be used as a search
argument. The format of the template 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 materialization |
| Bin(4) | ||||||||
|
|
|
(must be at least 44)
| ||||||||||
4 | 4 |
| Number of bytes available for materialization |
| Bin(4) + | ||||||||
8 | 8 |
| Exception identifier |
| Char(2) | ||||||||
10 | A |
| Compare value length (maximum of 32) |
| Bin(2) | ||||||||
12 | C |
| Compare value |
| Char(32) | ||||||||
44 | 2C |
| --- End --- |
|
|
Note: | Fields noted with a plus sign (+) are ignored by the instruction. |
The exception identifier in the exception description can be specified in one of the following ways:
Hex 0000 = | Any exception ID will result in a match |
Hex nn00 = | Any exception ID in class nn will result in a match |
Hex nnmm = | Only exception ID nnmm will result in a match |
If a match on exception ID and compare value is detected, the exception handling action of the exception description determines which of the following actions is taken:
IGNORE | The operand 1 template is materialized. |
DISABLE | The exception description is bypassed and the search for an exception description continues with the next exception description defined for the invocation. |
RESIGNAL | The operand 1 template is materialized. |
DEFER | The operand 1 template is materialized. |
HANDLE | The operand 1 template is materialized. |
06 Addressing
08 Argument/Parameter
10 Damage Encountered
16 Exception Management
1C Machine-Dependent
20 Machine Support
22 Object Access
24 Pointer Specification
2C Program Execution
2E Resource Control Limit
32 Scalar Specification
36 Space Management
38 Template Specification
44 Protection Violation