A data event control block is constructed as part of the expansion
of READ and WRITE macro instructions and is used to pass parameters
to the control program, help control the read or write operation,
and receive indications of the success or failure of the operation.
The data event control block is named by the READ or WRITE macro instruction,
begins on a fullword boundary, and contains the information shown
in Table 1.
Table 1. Data event
control blockOffset from DECB Address (Bytes) |
Field Contents 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 |
+20 |
|
Key address |
Key address |
+24 |
|
Exception code (2 bytes)2 |
Block address |
+28 |
|
|
Next address |
Note:
- The control program returns exception codes in bytes
+1 and +2 of the ECB.
- See Table 2.
- See Figure 1.
|
For BISAM, exception codes are returned by the control program
after the corresponding WAIT or CHECK macro instruction is issued,
as indicated in Table 2.
Table 2. Exception
code bits—BISAMException 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 |
Descriptions of the conditions in
Table 2 follow:
- 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.