Your mainline routine can put whatever information it wants in
the parameter area. Remember that the object is to provide the recovery
routine with as much useful information as possible so the recovery
routine can be effective. Here are some suggestions for important
information to place in the parameter area:
- The base registers for the mainline. The recovery routine must
be able to establish addressability to whatever resources the mainline
is holding.
- The addresses of all dynamically acquired storage.
- The location of a workarea for use by the recovery routine.
- Indications of what resources are held or serialized, such as
ENQs, data sets, and so on.
- Footprints indicating the processing being performed by the mainline when the error occurred. Using footprints
is a technique whereby the mainline sets bits as it goes through its
processing. When the recovery routine gets control, it can check
the parameter area to see which bits have been turned on, and thus
can tell how far along the mainline was. The recovery routine can
pinpoint what the mainline was doing at the time of error. If the
mainline was done with its processing when the error occurred, the
recovery routine might not need to retry, but might just clean up
resources.
- An indication of whether a retry is desired.
- The input parameter list to the mainline. When the mainline received
control, it might have received an input parameter list. The mainline
can preserve this in the parameter area intended for use by the recovery
routine. The recovery routine can then inspect the input parameter
list to determine if the mainline received input that was not valid.
- Whatever register contents (both GPRs and ARs) the mainline wants
to save (they might need to be restored upon retry).
- The location of important data areas used by the mainline. Errors
often occur because of damage to information in a data area. The recovery
routine might need to repair one or more of these data areas, and
so must be able to access them. The recovery routine might also want
to include these data areas when it specifies the areas of storage
to dump.
- The addresses of any user-written routines available to repair
damage. You might have separate routines designed to scan and repair
queues, repair data areas, and so on. The recovery routine might
want to call these other routines for assistance.