Abend error recording from the O/C/EOV system recovery routines

The O/C/EOV system recovery environment is established through the ESTAE macro, issued when storage was obtained during initialization of the O/C/EOV function. The O/C/EOV system recovery routines receive control from R/TM when any abend condition (determinate or indeterminate) is encountered during O/C/EOV processing.

When given control, the O/C/EOV recovery routines free storage, dequeue resources, and force data sets to closed status. Before doing any of these things, however, the O/C/EOV system recovery routines attempt to preserve a picture of the O/C/EOV chained work areas as they exist at time of entry. This is done by building a recovery routine control block save area (RRCBSA). Copies of the O/C/EOV chained work areas are saved in the RRCBSA.

As with the problem determination routines, the O/C/EOV system recovery routines issue the GTRACE macro instruction in order to record the contents of the RRCBSA built on entry. The RRCBSA segments are made available to the ABDUMP routine and written to the GTF data set by GTF.

When O/C/EOV recovery processing has been completed, the RRCBSA is used to refresh the O/C/EOV chained work areas, which may have been modified during recovery processing. The RRCBSA is then freed. Note that an RRCBSA will not appear in a dump of the original error, but it will appear in a dump of an error that occurs during recovery processing.

The contents of the RRCBSA are defined in Figure 1. An example of a dump of this save area is shown in Figure 2.
Figure 1. Contents of Recovery Routine Control Block Save Area (RRCBSA)
da6r1020 Contents of Recovery Routine Control Block Save Area (RRCBSA)
Figure 2. Storage Dump Containing the RRCBSA Passed by the O/C/EOV Recovery Routines
da6r1008 Storage Dump Containing the RRCBSA Passed by the O/C/EOV Recovery Routines

The recovery routine gained control in this example when a 213-04 error condition was encountered (no format-1 DSCB could be found for the data set being opened).

The RRCBSA is made up of segments. Each segment begins with an ID of CBSA, which appears in the EBCDIC column of the dump. The first CBSA segment obtained is different from subsequent segments; in addition to a prefix and a section containing a copy of a control block or work area, the first segment contains a header. The header identifies the RRCBSA, provides the job and step name of the step that encountered the 213 abend condition and the date and time the error occurred. In Figure 2, the bottom-most segment, which contains the header, is the first segment. This segment is chained to the segments obtained subsequently using the prefix. In addition to the header, the first segment contains a copy of the initial work area obtained to open the DCB. The ID of this work area is O/C, which appears as "O.C" in the EBCDIC column. This initial work area contains a copy of the base prefix, an extended prefix, and a WTG table. Addresses in these copies reflect original storage locations. The contents of these locations may have been changed by recovery or termination processing. The address in these copies can be used, however, to find information in the copies.

The second segment of the example contains a copy of the main work area associated with the DCB. Its ID is “OPWA”. Each of these segments is chained from the first segment using the prefixes. The prefix of each segment begins with the ID “CBSA”.

Each of the work areas obtained by the O/C/EOV routines has been assigned a 4-byte ID to make the work areas easy to identify in storage dumps. These IDs appear in the first word of every prefix of every work area obtained by O/C/EOV routines and saved in the RRCBSA. Each of the work areas and control blocks is obtained with a prefix. The contents of the prefix are described in Figure 1.