This appendage is entered when a channel end (CHE), unit exception
(UE) with or without channel end or when channel end with wrong-length
record (WLR) occurs without any other abnormal-end conditions.
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. In the case of unit exception or wrong-length
record, the ERP is performed before the channel program is posted
complete, and the IOBIOERR flag (X'04') in IOBFLAG1
is set on. The CSW status can be obtained from the IOBCSW field.
If the appendage takes care of the wrong-length record or unit
exception or both, it can turn off the IOBIOERR (X'04')
flag in IOBFLAG1 and return normally. The event will then be posted
complete (completion code X'7F' under normal conditions, taken
from the high-order byte of the IOBECBCC field). If the appendage
returns normally without resetting the IOBIOERR flag to zero,
the request will be routed to the associated device ERP. If the ERP
could not correct the error, the ABE appendage will be entered with
the completion code in IOBECBCC set to X'41'. (See the first
bullet in Abnormal-End Appendage.)
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. This is especially useful to post an ECB other
than the ECB in the input/output block.
- Contents of register 14 plus 8: The channel program is not posted
complete, and its request element is placed back on the request queue
so that a channel program at the same or different address can be
executed. For correct execution of the channel program, reinitialize
the IOBFLAG1, IOBFLAG2, and IOBFLAG3 fields of the input/output block
and set the error counts field to zero. As an added precaution, clear
the IOBSENS0, IOBSENS1, and IOBCSW fields. You can change IOBSTART
before returning. If the device is DASD, you can
change the IOBSEEK field but the first byte must refer to an extent
with the same UCB address. 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.
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.
- 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.
For information on asynchronous exit routines, see z/OS MVS Programming: Authorized Assembler Services Guide.)
Registers 10 through 13 in a CHE appendage can be used without
saving and restoring their contents.