Data Event Control Block
| Field Contents | |||
|---|---|---|---|
| Offset from DECB Address (Bytes) | BSAM and BPAM | BISAM | BDAM |
| 0 | ECB | ECB | ECB1 |
| +4 | Type | Type | Type |
| +6 | Length | Length | Length |
| +8 | DCB address | DCB address | DCB address |
| +12 | Area address | Area address | Area address |
| +16 | Address of status indicators3 | Logical record address | Address of status indicators3 |
| +28 | Next address | ||
| Exception Code Bit in DECB | READ | WRITE | Condition If On |
|---|---|---|---|
| 0 | X | Type K | Record not found |
| 1 | X | X | Record Length Check |
| 2 | Type KN | Space not found | |
| 3 | X | Type K | Nonvalid request |
| 4 | X | X | Uncorrectable I/O error |
| 5 | X | X | Unreachable block |
| 6 | X | Overflow record | |
| 7 | Type KN | Duplicate record | |
| 8-15 | Reserved for control program use |
- Record Not Found: The logical record with the specified key is not found in the data set if the specified key is higher than the highest key in the highest-level index or if the record is not in either the prime area or the overflow area of the data set.
- Record Length Check: For READ and update WRITE
macro instructions, an overriding length is specified and (1) the record format is blocked, (2) the
record format is unblocked but the overriding length is greater than the length known to the control
program, or (3) the record is fixed length and the overriding length does not agree with the length
known to the control program. This condition is reported for the add WRITE macro instruction if an
overriding length is specified.
When blocked records are being updated, the control program must find the high key in the block to write the block. (The high key is not necessarily the same as the key supplied by the application program.) The high key is needed for writing because the control unit for direct access devices permits writing only if a search on equal is satisfied; this search can be satisfied only with the high key in the block. If the user were permitted to specify an overriding length shorter than the block length, the high key might not be read; then, a subsequent write request could not be satisfied. In addition, failure to write a high key during update would make a subsequent update impossible.
- Space Not Found: No room exists for adding a new record to the data set in either the appropriate cylinder overflow area or the independent overflow area. The data set is not changed in any way in this situation.
- Invalid Request: This condition occurs
for either of two reasons:
- Because the application program altered the contents of byte 25 of the data event control block, byte 25 could indicate that this request is an update WRITE macro instruction corresponding to a READ (for update) macro instruction, but the I/O block (IOB) for the READ instruction is not in the update queue.
- A READ or WRITE macro instruction specifies dynamic buffering (that is, ‘S’ in the area address operand), but the DCBMACRF field of the data control block does not specify dynamic buffering.
- Uncorrectable Input/Output Error: The control program's error recovery procedures encounter an uncorrectable error in transferring data.
- Unreachable Block: An uncorrectable I/O error occurs during a search of the indexes or following an overflow chain. This condition is also posted if the data field of an index record contains an improper address (that is, points to the wrong cylinder or track or is not valid).
- Overflow Record: The record just read is an overflow record. The SYNAD exit routine is entered only if the CHECK macro is issued after the READ macro, and bit 0, 4, 5, or 7 is also on. (See the topic on direct retrieval and update in Using the Indexed Sequential Access Method for considerations during BISAM updating.)
- Duplicate Record Presented for Inclusion in the Data Set: The new record
to be added has the same key as a record in the data set. However, if the delete option was
specified and the record in the data set is marked for deletion, this condition is not reported.
Instead, the new record replaces the existing record.
If the record format is blocked and the relative key position is zero, the new record cannot replace an existing record that is of equal key and is marked for deletion.