|
To determine the method the system uses to handle an abnormal condition
use the abnormal-end (ABE) appendage. The following information explains
how to use the ABE appendage.
This appendage can be entered on abnormal conditions, such as unit
exception, wrong-length indication, out-of-extent error, intercept
condition (that is, device end error), unit check, program check,
protection check, channel data check, channel control check, interface
control check, and chaining check. It can also be entered when an
EXCP is issued for a DCB that has already been purged. The
following apply: - If IOBECBCC is set to X'41', this appendage was entered
because of a unit exception or wrong-length record indication or both.
The system previously called the channel-end appendage, if present.
For further information on these conditions, see Channel-End Appendage.
- If the IOBECBCC is set to X'42', this appendage was entered
because of an out-of-extent error. The system previously called the
end-of-extent appendage, if present.
- If this appendage is entered with IOBECBCC set to X'4B',
the tape error recovery procedure (ERP) either encountered an unexpected
load point, or found zeros in the command address field of the CSW.
- If the IOBECBCC is set to X'7E', the appendage was first
entered because of an intercept condition. If it is then determined
that the error condition is permanent, the appendage will be reentered
with the IOBECBCC set to X'44'. The intercept condition signals
that an error was detected at device end after channel end on the
previous request.
- If the IOBECBCC was set to X'48', the appendage was entered
because of an EXCP being issued to an already purged DCB. This applies
only to related requests.
- If the appendage is entered with IOBECBCC set to X'7F',
it might be because of a unit check, program check, protection check,
channel data check, channel control check, interface control check,
or chaining check. If the IOBECBCC is X'7F', it is the first
detection of an error in the associated channel program. If the IOBIOERR flag
(bit 5 of the IOBFLAG1) is on, the IOBECBCC field will contain X'41', X'42', X'48', X'4B',
or X'4F', indicating a permanent I/O error.
- If the ending address is zero or the subchannel status
byte in the IOB (IOBCSTAT) shows any of the following errors: program
check, protection check, channel data check, channel control check,
interface control check, or chaining check, and your abnormal
end appendage determines that the ERP has not yet run, then do
not modify IOBSTART. This lets the ERP try to recover. If the ERP
has completed and one or more of these six bits is on or the address
is zero, then the status of the channel program is not known.
To determine if an error is permanent, check the IOBECBCC field
of the IOB for a X'4x' completion code.
To determine the type of error, check the subchannel status
word field and the sense information in the IOB. However, when the
IOBECBCC is X'42', X'48', or X'4F', these
fields are not applicable. For X'44', the CSW is applicable,
but the sense is valid only if the unit check bit is set.
By using the return address in register 14 to return control to
the system, the channel program is posted complete, and its request
element is made available. You can use the following optional return
addresses: - Contents of register 14 plus 4: The channel program is not posted
complete, but its request element is made available. You can post
the channel program by using the calling sequence described under
the SIO appendage.
- Contents of register 14 plus 8: The channel program
is not posted complete, and its request element is placed back on
the request queue to be retried. Reinitialize the IOBFLAG1, IOBFLAG2,
and IOBFLAG3 fields of the input/output block and set the IOBERRCT
field to zero. As an added precaution, clear the IOBSENS0, IOBSENS1,
and IOBCSW fields.
The appendage can request that a different
type of channel program be started. For example: - The original request was for a zHPF channel program but the device
is no longer enabled for zHPF or does not support the zHPF capabilities
required by the new channel program.
- The original request was for a non-zHPF channel program but the
new I/O request allows a zHPF channel program to be used.
The channel program type may be changed from non-zHPF to zHPF
only if the caller passed an IOBE to EXCP. If the channel program
type is changed, the appendage must set or reset the IOBEFMT1 and
IOBEZHPF bits correctly to reflect the type of channel program. For
example, if the original channel program was a format-1 CCW channel
program and the new channel program is a zHPF channel program, then
the IOBEFMT1 bit must be reset and the IOBEZHPF bit must be set.
The
system will call appendages, beginning with the SIO appendage, as
if this were a new EXCP or EXCPVR request. Note that the EXCPVR page
fix appendage will not be called again.
- Contents of register 14 plus 12: The channel program is not posted
complete, and its request element is not made available. (Use this
return only if the appendage has passed the request queue element
to the exit effector for use in scheduling an asynchronous routine.)
Registers 10 through 13 in an ABE appendage can be used without
saving and restoring their contents.
|