z/OS DFSMS Using Data Sets
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Data Event Control Block

z/OS DFSMS Using Data Sets
SC23-6855-00

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 block
Offset 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:
  1. The control program returns exception codes in bytes +1 and +2 of the ECB.
  2. See Table 2.
  3. 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—BISAM
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
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.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014