Reason code (physical errors)

If a physical error occurs and you have no SYNAD routine (or the SYNAD exit is inactive), VSAM returns control to your program following the last executed instruction. The return code in register 15 indicates a physical error (12). The RPL feedback area contains a reason code identifying the error. The RPL message area contains more details about the error. Register 1 points to the request parameter list. The RBA field in the request parameter list gives the relative byte address of the control interval in which the physical error occurred. Table 1 gives the reason codes in the feedback area and explains what each indicates.

Table 1. Physical Error Reason Codes in the Feedback Area of the Request Parameter List
Reason Code (RPLERRCD) When Register 15=12(X'0C') Meaning
4(X'4') Read error occurred for a data set.
8(X'8') Read error occurred for an index set.
12(X'C') Read error occurred for a sequence set.
16(X'10') Write error occurred for a data set.
20(X'14') Write error occurred for an index set.
24(X'18') Write error occurred for a sequence set.
36(X'24') For MACRF=RLS, a CF cache structure connectivity failure occurred.
40(X'28') For MACRF=RLS, a CF cache structure failure occurred.
44(X'2C') For extended format data sets, the suffix for a physical record in the CI at the RBA specified in the RPL is invalid.

Table 2 shows the format of a physical error message. The format and some of the contents of the message are purposely similar to the format and contents of the SYNADAF message, which z/OS DFSMS Macro Instructions for Data Sets describes.

Table 2. Physical Error Message Format for Non-RLS Processing
Field Bytes Length Description
Message Length 0-1 2 Binary value of 128.
  2-3 2 Unused (0)
Message Length-4 4-5 2 Binary value of 124 (provided for compatibility with SYNADAF Message).
  6-7 2 Unused (0)
Address of I/O Buffer 8-11 4 The I/O buffer associated with the data where the error occurred.
       
The rest of the message is in printable format
Date 12-16 5 YYDDD (year and day)
  17 1 Comma (,)
Time 18-25 8 HHMMSSTH (hour, minute, second, tenths and hundredths of a second.
  26 1 Comma (,)
RBA 27-38 12 Relative byte address of the record where the error occurred.
  39 1 Comma (,)
Component Type 40 1 "D"(Data) or "I"(Index)
  41 1 Comma (,)
Volume Serial Number 42-47 6 Volume serial number of the volume where the error occurred.
      For z/OS UNIX files, contains "********"
  48 1 Comma (,)
Job Name 49-56 8 Name of the job where error occurred.
  57 1 Comma (,)
Step Name 58-65 8 Name of the job step where the error occurred.
  66 1 Comma (,)
Unit 67-70 4 The device number where the error occurred.
      For z/OS UNIX files, this field contains "****"
  71 1 Comma (,)
Device Class 72-73 2 The type of device where the error occurred. (Always DA for direct access.)
  74 1 Comma (,)
ddname 75-82 8 The ddname of the DD statement defining the data set where the error occurred.
  83 1 Comma (,)
Channel 84-89 6 The channel command that received the error in the first two bytes, followed by “-OP”
      For z/OS UNIX files, this field contains the request which resulted in the error.
      Either a GET, PUT, CHECK, POINT, or ENDREQ request.
  90 1 Comma (,)

Messages 91–105 are described below.

Message  91-105  15  Messages are divided according to ECB completion codes:

   X'41' "INCORR LENGTH"
        "UNIT EXCEPTION"
        "PROGRAM CHECK"
        "PROTECTION CHK"
        "CHAN DATA CHK"
        "CHAN CTRL CHK"
        "INTFCE CTRL CHK"
        "CHAINING CHK"
        "UNIT CHECK"
        "SEEK CHECK"

If the type of unit check can be determined, the "UNIT CHECK" message is replaced by one of the following:

             "CMD REJECT"
             "INT REQ"
             "BUS OUT CK"
             "EQP CHECK"
             "DATA CHECK"
             "OVER RUN"
             "TRACK COND CK"
             "COUNT DATA CHK"
             "TRACK FORMAT"
             "CYLINDER END"
             "NO RECORD FOUND"
             "FILE PROTECT"
             "MISSING A.M."
             "OVERFL INCP"
   X'48' "PURGED REQUEST"
   X'4A' "I/O PREVENTED"
   X'4F' "R.HA.R0. ERROR"
             "INVALID SUFFIX"

Table 3 and Table 4 show information about messages 106–127.

Table 3. Physical Error Message Format for any other ECB completion code
Field Bytes Length Description
  "UNKNOWN COND".
For z/OS UNIX files, this field contains the service which encountered an error, in the form "OMVS-nnnnnnnn" where nnnnnnnn is the name of the service.
106 1 Comma (,)
Physical Direct 107-120 14 BBCCHHR (bin, cylinder, head, and record)
Access Address For z/OS UNIX files, this field contains the return and reason code from the failing service in the form "xxxx-yyyyyyyy" consisting of a 2-byte hexadecimal return code and a 4-byte hexadecimal reason code.
121 1 Comma (,)
Access Method 122-127 6 "VSAM"
      For z/OS UNIX files, this field contains "VSAM"
Table 4. Physical Error Message Format for CF Failure with VSAM RLS or DFSMStvs Processing
Field Bytes Length Description
Message Length 0-1 2 Binary value of 128
2-3 2 Unused (0)
Message Length-4 4-5 2 Binary value of 124 (provided for compatibility with SYNADAF Message).
6-7 2 Unused (0)
Address of I/O Buffer 8-11 4 The I/O buffer associated with the data where the error occurred.
The rest of the message is in printable format
Date 12-16 5 YYDDD (year and day)
17 1 Comma (,)
Time 18-25 8 HHMMSSTH (hour, minute, second, tenths and hundredths of a second.
26 1 Comma (,)
RBA 27-38 12 Relative byte address of the record where the error occurred.
39 1 Comma (,)
Component Type 40 1 "D"(Data) or "I"(Index)
41 1 Comma (,)
Volume Serial 42-47 6 For MACRF=RLS, this field does not apply and is set to asterisks.
48 1 Comma (,)
Job Name 49-56 8 Name of the job where the error occurred.
57 1 Comma (,)
Step Name 58-65 8 Name of the job step where the error occurred.
66 1 Comma (,)
Unit 67-70 4 For MACRF=RLS, this field does not apply and is set to asterisks.
71 1 Comma (,)
Device Type 72-73 2 For MACRF=RLS, this field is set to "CS" for CF cache structure.
74 1 Comma (,)
ddname 75-82 8 The ddname of the DD statement defining the data set where the error occurred.
83 1 Comma (,)
Channel 84-89 6 For MACRF=RLS, this field is set to "CFREAD" or "CFWRT" indicating if the CF operation is a read or write.
90 1 Comma (,)
Message 91-105 15 For MACRF=RLS, you receive either CF structure failure message or loss of connectivity message.
"CF STR FAILURE"
"CF CON FAILURE"
106 1 Comma (,)
Physical Direct Access Address 107-120 14 14-character cache structure name.
121 1 Comma (,)
Access Method 122-127 6 "VSAM"