Processes and data flow

The HD Pointer Checker processor (FABPMAIN) controls and invokes all or some of the following HD Pointer Checker processes and DFSORT processes as one job based on the control statements.

In a typical HD Pointer Checker job (single-step job), the following processes are run:
  • SCAN process
  • CHECK process
  • BLOCKMAP process (this process is run only when pointer errors are detected)

SCAN process

The SCAN process reads the input database data sets or image copy data sets. The process also includes the following processes:
For HISAM
The SCAN process creates sort records, or sums hash values for pointers and segments in the HISAM databases.
For INDEX and PSINDEX
The SCAN process creates sort records and key records for pointers in the HIDAM and PHIDAM primary index and secondary index databases. It also sums up hash values for pointers to the HIDAM, PHIDAM, and primary databases.
For HDAM, HIDAM, PHDAM, and PHIDAM
The SCAN process creates sort records, or sums up hash values for pointers and segments in the HDAM, HIDAM, PHDAM, and PHIDAM databases. It also creates both key records for source segments and root segment key records in the HDAM, HIDAM, PHDAM, and PHIDAM databases for the Index Key check. The root segment key records are also created in the KEYSIN data set.

The SCAN process also:

  • Reads RECON data sets and validates the HALDB partition reorganization numbers (HALDB Reorganization Number Verification).
  • Prints statistical information, database error messages, and error-correction data (maps and dumps of database blocks).
  • Runs DFSORT (or its equivalent program), and sorts all of the sort records.

CHECK process

The CHECK process includes the following processes:
HASH Check
This process matches the hash totals of pointers and segments generated by the SCAN process (HISAM, INDEX, and HDAM/HIDAM/PHDAM/PHIDAM processes) to give a general indication of database integrity.
Validate/Evaluate
This process validates pointers, evaluates segments, prints database error messages, and creates a control record for each database error.
Index Key Check
This process matches key data between index pointer segments and HIDAM/PHIDAM root segments, or HISAM, HDAM, HIDAM, PHDAM, or PHIDAM pointer source segments. This process also prints database error messages.
Symbolic Pointer Checking
This process validates symbolic LP pointers and secondary index symbolic pointers.
EPS Healing and Checking
This process refers to the indirect list data set (ILDS) and validates the inconsistency among the HALDB Extended Pointer Sets, indirect pointers in the ILDS, and the RBAs of pointed segments.
HALDB Duplicate ILKs Checking
This process checks for corrupted HALDB partition reorganization numbers and incorrect ILKs.

BLOCKMAP process

The BLOCKMAP process prints error-correction data (pointers to segments with errors, and the maps and dumps of database blocks that contain the segments with errors). This process can run as a separate job (or job step) on the control statements.

Data flow

The following figure shows the data flow for HD Pointer Checker.

Figure 1. Data flow for HD Pointer Checker
This figure depicts the data flow for HD Pointer Checker. The details are described in this topic.

The three processes of HD Pointer Checker (SCAN, CHECK, and BLOCKMAP processes) are typically run in a single job step as shown in the figure. This execution type is referred to as single-step job. They can also be separated into multiple job steps or multiple jobs. Such execution type is referred to as multiple-step job.

You can specify the execution type by using the PROCCTL PROC TYPE keyword. PROC TYPE=ALL specifies to run all these processes in a single-step job. If you want to run these processes individually or in a multiple-step job, use PROC TYPE=SCAN, TYPE=CHECK, or TYPE=BLKMAP. For more information about the TYPE keyword, see PROC statement.

Recommendation: It is strongly recommended that you run these processes in a single-step job (that is, specify PROC TYPE=ALL, and not PROC TYPE=SCAN and PROC TYPE=CHECK) because if you run them in a same job step, the JCL statements will be simpler, the performance will improve, and the total size of the work data sets will be smaller.

You can run HD Pointer Checker for several databases in a single run. The best way is to run with a minimal set of logically related databases in one job.

Important: It is important to include all logically related databases and index databases in the same run. Otherwise, the pointer checking will be incomplete, and huge number of invalid error messages might result.
In a typical job stream, the following HD Tuning Aid programs and sort program are also run:
  • FABTROOT program prints the Actual Roots Per Block report and creates sort records to be used to create other reports.
  • DFSORT (or its equivalent program) sorts all of the sort records from the previous job step.
  • FABTRAPS program prints the Assigned Roots Per Rap report and the Assigned Roots Per Block report.

Disk Address Analyzer (FABPCHRO program) is usually run in a stand-alone job. The FABPCHRO program prints the absolute disk address of user-specified relative byte addresses. For more information, see Using Disk Address Analyzer.

The following table can be used as a guide in selecting the proper job process.

Table 1. Selecting job steps for HD Pointer Checker and HD Tuning Aid
Job function Job processes Applicable database
Checking pointers FABPMAIN This process accepts any combination of databases.
Checking pointers and root-segment locations
  1. FABPMAIN
  2. FABTROOT
  3. DFSORT
  4. FABTRAPS
The FABPMAIN process accepts any combination of databases.

FABTROOT, DFSORT, and FABTRAPS processes accept HDAM, HIDAM, PHDAM, and PHIDAM databases.

Finding disk addresses FABPCHRO Any database