|
The address of a parameter list mapped by macro IEHUEXIT is passed
to the exit routines in Register 1. Some of the information in this
parameter list can be changed and returned to IEHINITT for processing.
Please review the macro for details on field names and values. Some
of the fields passed in are:
- A one byte hex value indicating the function for which the routine
is being invoked.
Currently only pre-label and post-label functions
are defined. A subfunction byte is passed in, but is not currently
defined for this function.
- 4 bytes of flags that indicate the status of data passed into
the routine.
A variety of conditions concerning the result of attempting
to read the existing labels on the volume are indicated here. Flags
are set for such things as whether the labels were successfully read,
whether the VOL1 label information passed in was constructed from
sense information when allowed by VOLNSNS specification in the active
DEVSUPxx PARMLIB member, whether an I/O error was encountered when
trying to read the labels, in addition to other conditions.
All
exit routines should see the same flag settings in these bytes.
- 4 bytes of flags that indicate the cumulative results of processing
the exit routines and any reasons for not labelling the volume.
There
are a variety of reasons that a volume will not be labeled. Things
such as:
Each pre-label exit routine sees the cumulative result
of all previous exit routine processing. By cumulative we mean that
all results of previous exit routine processing will be indicated
in these flags. So, for example, if a conflict is detected after
calling the third exit routine, all subsequent exit routines will
see the conflict flag, IXWONTL, set. Another example would be that
once a routine indicates that the volume is not to be labeled, all
subsequent routines will see the IXCANTL flag set.
All post-label
exit routines will see the final cumulative result of all pre-label
exit routine processing in these flags.
- Other informational data that is provided includes the:
- VOL1 and HDR1 labels if available,
- Labels that were read where VOL1 or HDR1 labels were expected
but the format was not as expected,
- Volume serial returned from a LACS VERIFY
call if different from the read volume serial,
- SAF and RACROUTE AUTH return and reason codes
When the volume
label is not read for whatever reason, the requested volume serial
number is used as the internal volume serial in all authorization
checking.
A call to SAF/RACROUTE AUTH is made before the pre-label
exits are invoked. The results of this call are passed, uninspected,
to the exit routines. If an exit routine returns an RC=0, indicating
the volume is to be labelled, it is assumed that the exit reviewed
the SAF/RACROUTE return and reason codes and that it is allowing labelling
regardless of those values.
If there are no exit routines associated
with this exit, or if all routines return an RC=4, then the results
of the SAF/RACROUTE call will be inspected and labelling will be performed
only if SAF/RACROUTE authorization is indicated.
- A pointer to the UCB
- Sense data that was generated as a result of any non-recoverable
I/O error produced while trying to read the VOL1 or HDR1 labels
- Fields INXRQVOL (volume serial), INXRQOWN (owner ID), and INXRQACC
(access code) are provided as input, but can be modified by the exit
routines under the following conditions:
- A return code 0 is returned, in which case the currently mounted
volume will be labeled with the value in these fields. This applies
to all three fields.
- A return code 8, reason code 4 is returned, in which case the
value in INXRQVOL must be changed or a conflict condition will be
indicated and the volume will not be labelled. The owner ID and access
code fields may also be changed.
Caution in using this facility should be exercised when more
that one exit routine is active. A conflict condition can result
if one exit routine specifies a changed field that does not agree
with the value returned by another exit routine, or if one exit indicates
to label the tape and another indicates to label the volume with a
new value.
- INXRQVOL
A 6 character field containing the volume serial with
which the volume is to be labeled. If more than 1 routine returns
a modified volume serial, the values must be the same or a conflict
is indicated and the volume is not labeled.
This field is also
used to indicate the new volume serial that is to be mounted when
a remount request is returned, RC=8, RSN=4.
Note: All
pre-label exit routines will see the originally specified volume serial,
not the modified volume serial.
- INXRQOWN
The owner ID with which the volume is to be labeled.
If more than one exit routine modifies this field, the modified value
must be the same or a conflict will be indicated and the volume will
not be labeled.
Note: All pre-label exit routines will
see the originally specified owner ID, not the modified owner ID.
- INXRQACC
The access code value (if the request is for an ANSI
label) with which the volume is to be labeled. If more than one exit
routine modifies this field, the modified value must be the same or
a conflict will be indicated and the volume will not be labeled.
Note: All pre-label exit routines will see the originally specified
access code, not the modified access code.
|