5. OPERATION › 5.3 Abnormal Termination Processing › 5.3.1 Ignoring Critical Errors With VSAMERR or VTOCERR
5.3.1 Ignoring Critical Errors With VSAMERR or VTOCERR
A critical error is any non-recoverable abend that occurs
during the processing of a VTOC or catalog. After VCC
successfully OPENs either a VTOC or a catalog data set and
writes the first record to SMF or to VCCDATA for that volume
or catalog, an "in-progress" switch is set by VCC. Later,
during recovery processing of a subtask abend, if the
"in-progress" flag is on, the error is considered critical.
This causes recovery processing to set the "critical-error"
flag just prior to completing subtask termination.
The "critical-error" flag is significant because it is
designed to halt the entire VCC processing run. As the
remaining active subtasks finish scanning a VTOC or catalog,
they look for the next unit of work to perform. Before
starting a new unit of work, each subtask checks to see if a
critical error has occurred. If the "critical-error" flag
has been set, each subtask terminates and the main task will
terminate with a return code of 16.
The VSAMERR=n and VTOCERR=n keyword parameters allow you to
specify that "n" number of critical error conditions should
be permitted before forcing termination of the entire VCC
processing run. After "n" critical error conditions have
been permitted, recovery processing for a failing task will
set the "critical-error" flag that signals all remaining
active subtasks to terminate at the completion of the current
unit of work.
For example, assume you coded VSAMERR=1 and VSAMSUBT=4. This
causes four subtasks to be created to scan the BCS and VVDS
structures in the system. VCC relies on the structural
integrity of the cells in the BCS and VVDS and, if an
erroneous cell exists, it is highly likely that some VCC
module will abend with an S0C4. Since VSAMERR=1 is coded, it
will ignore this critical error. The subtask terminates and
the remaining three subtasks continue to look for work to
perform and complete normal processing.
The catalog or VTOC being scanned by the failing subtask is
marked in error, and other tasks of the same type will not
attempt to rescan the object.
Continuing the example, if another VSAMSUBT (subtask) abends,
the VSAMERR limit of 1 will have been exceeded. In this
case, the "critical-error" flag will be set to signal all
remaining active subtasks to terminate at the first
opportunity.
The principle behind this function is that it is better to
allow the bulk of the data collection to proceed to normal
completion with the understanding that some small percentage
of the data is incomplete and will be gathered later after
appropriate diagnostic work has been done on the catalog or
VTOC that caused the problem.
It is important to realize that the subtask in error abends
and reduces the number of remaining tasks. Therefore, the
VSAMSUBT value must always be at least 1 greater than the
value specified for VSAMERR (and the same for VTOCSUBT and
VTOCERR).