When a physical-error-analysis exit routine (SYNAD) is provided,
it gets control for physical errors, and register 15 does not contain
12, but contains the entry address of the SYNAD routine.
For additional information on the SYNAD exit routine, see z/OS DFSMS Installation Exits.
Table 1 gives the contents of the registers
when VSAM exits to the SYNAD routine.
Table 1. Contents
of registers when a SYNAD routine gets control. Contents
of registers when a SYNAD routine gets controlRegister |
Contents |
---|
0 |
Unpredictable. |
1 |
Address of the request parameter list that contains
a feedback return code and the address of a message area, if any.
If a request macro was issued, the RPL is the one pointed to by the
request macro; if a CLOSE macro was issued, the RPL was built by VSAM
to process the close request. Register 1 must contain this address
if the exit routine returns to VSAM. |
2-13 |
Same as when the request macro or CLOSE macro
was issued. Register 13, by convention, contains the address of the
processing program's 72-byte save area, which may not be used by the
SYNAD routine if it returns control to VSAM. |
14 |
Return address to VSAM. |
15 |
Entry address to the SYNAD routine. The register
does not contain the physical-error indicator. Note: The SYNAD exit,
like other user exits, might not return control to VSAM.
|
If a physical error occurs and a SYNAD exit routine is not provided
(or the SYNAD exit is inactive), VSAM returns control to the processing
program following the last executable instruction. Register 15 indicates
a physical error (12), and the feedback field in the request parameter
list contains a code identifying the error. Register 1 points to the
request parameter list.
Table 2 gives the physical-error return
codes in the feedback field and explains what each indicates. If the
user provided a message area, it contains a physical-error message
with more details about the error.
Table 2. Physical-error
reason codes in the RPL feedback field from a request macro. Physical-error reason codes in the RPL feedback field from a
request macroRPLERRCD code |
Symbol |
Condition |
---|
4(X'04') |
RPLRDERD |
Read error occurred for a data component. |
8(X'08') |
RPLRDERI |
Read error occurred for the index set of an index
component. |
12(X'0C') |
RPLRDERS |
Read error occurred for the sequence set of an
index component. |
16(X'10') |
RPLWTERD |
Write error occurred for a data component. |
20(X'14') |
RPLWTERI |
Write error occurred for the index set of an index
component. |
24(X'18') |
RPLWTERS |
Write error occurred for the sequence set of an
index component. |
|
|
All physical errors are detected by IDA019R5 from
I/O Management abnormal-end appendage, IDA121A4. |
Table 3 gives 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 is
described in z/OS DFSMS Macro Instructions for Data Sets.
Table 3. Format
of physical-error messages. Format of physical-error messagesField |
Bytes |
Length |
Discussion |
---|
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 in relation to which 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, and
tenths and hundredths of a second). |
|
26 |
1 |
Comma (,) |
RBA |
27-38 |
12 |
Relative byte address of the record
in relation to which the error occurred. |
|
39 |
1 |
Comma (,) |
Data-Set Type |
40 |
1 |
'D' for data or 'I' index |
|
41 |
1 |
Comma (,) |
Volume Serial Number |
42-47 |
6 |
Volume serial number of the volume
in relation to which the error occurred. |
|
48 |
1 |
Comma (,) |
Job Name |
49-56 |
8 |
Name of the job in which error occurred. |
|
57 |
1 |
Comma (,) |
Step Name |
58-65 |
8 |
Name of the job step in which error
occurred. |
|
66 |
1 |
Comma (,) |
Unit |
67-70 |
4 |
Device number on which the error
occurred. |
|
71 |
1 |
Comma (,) |
Device Type |
72-73 |
2 |
The type of device in relation to
which 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 in relation to which the error occurred. |
|
83 |
1 |
Comma (,) |
Channel Command |
84-89 |
6 |
The channel command that occasioned
the error in the first two bytes, followed by '-OP' |
|
90 |
1 |
Comma (,) |
Message condition codes: |
91-105 |
15 |
Messages are divided according to
ECB 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 the unit check can be determined, this
message is replaced by one of the following:
|
|
|
|
|
'CMD REJECT'
'INT REQ'
'BUS OUT CK'
'EQP CHECK'
'DATA CHECK'
'OVER RUN'
'TRACK COND CK'
'SEEK CHECK'
'COUNT DATA CHK'
'TRACK FORMAT'
'CYLINDER END'
'INVALID SEQ'
'INVALID SUFFFIX'
'NO RECORD FOUND'
'FILE PROTECT'
'MISSING A.M.'
'OVERFL INCP'
X'48'—'PURGED REQUEST'
X'4A'—'I/O
PREVENTED'
X'4F'—'R.HA.RO. ERROR'
For any other
ECB completion code—'UNKNOWN COND'
|
|
106 |
1 |
Comma (,) |
Physical Direct- Access Address |
107-120 |
14 |
BBCCHHR (bin, cylinder, head and
record) |
|
121 |
1 |
Comma (,) |
Access Method |
122-127 |
6 |
'VSAM' |