DATABASE statement

A DATABASE statement specifies the database name and data set groups to be processed, and the options.

One or more DATABASE statements can be specified in any order in the PROCCTL data set, but must follow a PROC statement.

It is not necessary to specify the DATABASE statement if the TYPE=CHECK or BLKMAP is specified in the PROC statement.

If TYPE=ALL is specified in the PROC statement, you must specify the DATABASE statements of all logically related and index-related databases. Otherwise, the job ends with an error message.

Syntax

The following syntax diagram shows the keywords for the DATABASE statement.

Read syntax diagramSkip visual syntax diagramDATABASE DB= dbdname,,Optional keyword
Optional keywords
Read syntax diagramSkip visual syntax diagram PART=*ALLpartition nameNUM= numberDD=*ALLddnamedsg-id(,dsg-id)OVERFLOW= ddnamePRIMEDB= dbdnameDATASET=REALIMAGECOPYDBALL=NOYESSCANGROUP=1nnBLOCKDUMP=( rba,1nnn)

Keywords

The following keywords can be specified on the DATABASE statement:

DB=dbdname
Specifies the dbdname (as coded in your DBD) of the HISAM, HIDAM index or the secondary index databases, the HDAM, the HIDAM, the PHDAM, the PHIDAM, or the PSINDEX to be processed. This keyword is a required keyword.
PART=
Specifies the partition to be processed.
This statement is applicable to HALDBs only.
*ALL
All partitions, except for the partitions that are marked as disabled in the RECON data sets, are processed. PART=*ALL is the default value.
partition name
Only the specified partition is processed.
NUM=
Specifies the number of partitions to be processed. The partitions specified with the NUM keyword are processed in the partition selection order. If the number specified with the NUM keyword is larger than the actual partition number, HD Pointer Checker processes up to the last partition without issuing an error message.

This keyword is applicable to HALDBs only.

This value is applicable only if PART=partition name is specified.

DD=
ddname
Specifies the ddname (as coded in your DBD) of the HDAM, HIDAM, KSDS part of the HISAM data set group, or the index database to be processed.
*ALL
For a non-HALDB, this option specifies to process all data sets in the database. For a HALDB, it specifies to process all data sets in the partition that is specified by PART=. DD=*ALL is the default value.
dsg-id or (dsg-id1, dsg-id2,...)
Specifies the data set group to be processed. This option is applicable to HALDBs only. Letters A through J, M through V, X and Y can be specified for dsg-id. The letter L cannot be specified. If EPSCHK=YES is effective, ILDS can be evaluated automatically.
Consideration for Online Reorganization capable HALDBs
When DATASET=REAL is specified, HD Pointer Checker ignores the DD parameter and assumes that the data set to process is the active DBDS. For what happens when DATASET=IMAGECOPY is specified, read about Consideration for an Online Reorganization (OLR) of HALDB and Dynamic allocation of database data sets and image copy data sets.

Examples of combination of PART=, NUM=, and DD= for a HALDB:

  • In the following example, all data set groups in all partitions are processed because the default value *ALL is used for PART= and DD=:
    DATABASE DB=HALDB1
  • In the following example, data set groups specified on DD= in all partitions are processed:
    DATABASE DB=HALDB1,PART=*ALL,DD=A
    Because DD=A is specified, data set group A is processed in all the partitions.
  • In the following example, all data set groups in PART1 and the following partition are processed:
    DATABASE DB=HALDB1,PART=PART1,NUM=2,DD=*ALL 
    For more information about specifying the DATABASE statements for a HALDB, see How to specify multiple DATABASE statements for a HALDB.
OVERFLOW=ddname
Specifies the ddname (as coded in your DBD) of the ESDS of the HISAM data set group, or the index database.

You can omit this keyword when HD Pointer Checker runs as a stand-alone job. In this case, HD Pointer Checker sets the ddname of the ESDS of the HISAM database or the index database.

Abbreviations OFLOW and OVFLW can be used for OVERFLOW.

PRIMEDB=dbdname
Specifies the dbdname of the primary database indexed by the HIDAM index or the secondary index database to be processed.

You can omit this keyword when HD Pointer Checker runs as a stand-alone job. In this case, HD Pointer Checker sets the dbdname of the primary database that is indexed by the HIDAM index or the secondary index database.

DATASET=
Specifies the type of input database.
Abbreviations DS for DATASET, and IC and ICOPY for IMAGECOPY can be used.
REAL
Specifies that the input database is a real database. DATASET=REAL is the default value.
IMAGECOPY
Specifies that the input database is an image copy.

If the input database is an image copy, you must specify this parameter even if TYPE=CHECK or BLKMAP is specified.

For the types of image copies that HD Pointer Checker accepts as input, see Restrictions when using image copy data sets as input.

Notes:
  • If the image copy supplied as an input is any of the following types, HD Pointer Checker identifies the type of image copy by checking its record format (RECFM):
    • Batch image copy created by the IMS Database Image Copy utility (RECFM=VB)
    • Compressed batch image copy created by IMS HP Image Copy (RECFM=VB)
    • SMSNOCIC type image copy created by the IMS Database Image Copy 2 utility (RECFM=U)
  • An SMSNOCIC type image copy has no DBD name or DD name information in the header record. Therefore, HD Pointer Checker cannot verify the image copy with it. The HD Pointer Checker issues the message FABP1365I with the name of the dumped data set name in the image copy so that you can verify the image copy with it.
Consideration for image copies of HALDBs
If you reorganize the HALDB after taking an image copy, specify EPSCHK=NO in the PROC statement because index list entries (ILE) in the indirect list data set (ILDS) are updated by the reorganization and they are inconsistent with the image copy. The ILDS is not referred to if EPSCHK=NO is specified.

If IMAGECOPY is specified for the PHIDAM database, the primary index database is not checked because an image copy cannot be created for the primary index database.

DBALL=
Specifies whether to process all logically related databases to the one specified in the DB keyword.

This option can be specified when TYPE=ALL or SCAN is specified in the PROC statement.

YES
All logically related databases and index databases are processed. However, the following restrictions apply:
  • When HASH=YES is specified in the PROC statement, secondary index database and PSINDEX database are not processed.
  • When the DBORG keyword is specified, only databases of the specified organization are processed.
DB=dbdname must be specified. DATASET= and SCANGROUP= are available. PART=, NUM=, DD=, OVERFLOW=, PRIMEDB=, and BLOCKDUMP= are not effective even if they are specified.
NO
Only the databases that are specified in the DB keyword are processed. DBALL=NO is the default value.
When multiple DATABASE statements are specified, either DBALL=YES or DBALL=NO can be selected for each DATABASE statement. However, the following restrictions apply when databases that are associated with DBALL=YES are specified by another DATABASE statement.
  • When DBALL=YES is specified by another statement, the first DBALL=YES in the logically related databases is effective and the subsequent DBALL=YES specifications are ignored.
  • When DBALL=NO is specified by another statement, only database data sets that are specified with DBALL=NO are processed with the options specified in the DATABASE statements.
  • Two or more DATABASE statements with same DBD name and DBALL=YES option will result in error.
SCANGROUP=
Specify this parameter when you want to read in parallel the database data sets or image copy data sets. Specify a 1- or 2-digit number for nn, where nn is a number greater than 01. If you specify different numbers for the DATABASE statements, they are read in parallel. If you specify the same number for them, they are read sequentially.
Example 1
In the following case, for example, HD Pointer Checker reads dd1 and dd2 in parallel:
DATABASE DB=database1,DD=dd1,SCANGROUP=01 
DATABASE DB=database1,DD=dd2,SCANGROUP=02 
Example 2
In the following case, for example, HD Pointer Checker reads dd1 and dd2 sequentially in SCANGROUP=01, and dd3 and dd4 sequentially in SCANGROUP=02, but processes SCANGROUP 01 and 02 in parallel:
DATABASE DB=database1,DD=dd1,SCANGROUP=01 
DATABASE DB=database1,DD=dd2,SCANGROUP=01 
DATABASE DB=database2,DD=dd3,SCANGROUP=02 
DATABASE DB=database2,DD=dd4,SCANGROUP=02  
HD Pointer Checker decides, and so you cannot specify, the order of processing within a scan group (SCANGROUP).

A subtask is attached for each scan group. This subtask is called a scan task. The number specified for each scan group is also used as the suffix of the work data set of each scan task. The ddname of the MERGINnn data set used by the scan task of SCANGROUP=2 would be MERGIN02.

To process an image copy on a tape, use the same scan group number for data sets on the same volume serial. The number of tape units must be more than or equal to the total number of scan groups. In the previous examples, you must prepare at least two tape units.

If you specify KEYSIN=YES, specify the same scan group number for data sets that have root segments.

You can specify the scan group number only if TYPE=ALL or TYPE=SCAN is specified. The maximum number that you can specify for scan group is 99, and the default is 1. If you do not specify the scan group number, or if you specify the same number for all DATABASE statements, all data sets are read sequentially.

Running many scan tasks causes more resources to be used by HD Pointer Checker. For more information, see Estimating the storage needed for HD Pointer Checker manually.

BLOCKDUMP=
Requests to print the maps, dumps, and the addresses of the database blocks. A maximum of 100 BLOCKDUMP parameters can be specified in the DATABASE statement. The format of the dump is specified by the DUMPFORM parameter in the OPTION statement.

When this option is specified, HISTORY=YES cannot be specified.

This option can be specified when TYPE=ALL or SCAN is specified. It is only effective for HDAM, HIDAM, PHDAM, and PHIDAM databases.
Important: If this option is specified, the pointer is not checked for the specified database data set.
Abbreviations BDUMP and BLKDUMP can be used for BLOCKDUMP.
rba
Specifies the relative byte address (RBA) of the first block to be dumped. The RBA of any byte within the block can be used. Code eight hexadecimal digits, with leading zeros, if necessary.
nnn
Specifies the number of consecutive blocks that are mapped, dumped, and started at the relative byte address specified by the RBA parameter. The maximum value is 999 and the minimum value is 1. The default value is 1.

For an RBA beyond 4 GB, you should specify a 32-bit odd value based on the over 4-GB RBA rule.

For example, to specify the hexadecimal value x'10000F000' as a 32-bit odd value, specify as follows:

   BLOCKDUMP=(0000F001,001)

The value BDUMP=(0000F000) is equivalent to BLOCKDUMP=(0000F000,001).

How to specify multiple DATABASE statements for a HALDB

Multiple DATABASE statements specified for a HALDB are allowed, but there are some points to be careful.

  • When multiple DATABASE statements are specified for a HALDB, you must specify the partition name by partition selection order. The partition selection order is the order returned from the partition selection.
  • When HASH=NO and EPSCHK=YES are specified in the PROCCTL data set and a logical relationship or a PSINDEX database is defined in a HALDB, you cannot check the subset partitions of the HALDB.

    Because logical pointers and index pointers point to target segments across databases or partition boundaries, all partitions and databases must be checked at once. The examples presented in this topic are for the HALDBs without logical relationships or PSINDEX databases.

  • The same partition can be specified in different DATABASE statements. When you specify PART=*ALL or NUM=, however, make sure it is as follows:
Example: Error case
//PROCCTL DD *
    PROC TYPE=ALL
    DATABASE DB=HALDB1,PART=*ALL
    DATABASE DB=HALDB1,PART=HALDBP1
/*

This is an error; the specification for HALDBP1 on PART= is a duplicate.

//PROCCTL DD *
    PROC TYPE=ALL
    DATABASE DB=HALDB1,PART=HALDBP1,NUM=2
    DATABASE DB=HALDB1,PART=HALDBP2
/*

Suppose HALDB1 has two partitions in the following order: HALDBP1, HALDBP2. This is an error; the specification for HALDBP2 on PART= is a duplicate.

Example: Normal case
//PROCCTL DD *
    PROC TYPE=ALL
    DATABASE DB=HALDB1,PART=HALDBP1,NUM=2
    DATABASE DB=HALDB1,PART=HALDBP4
/*

Suppose HALDB1 has four partitions in the following order: HALDBP1, HALDBP2, HALDBP3, HALDBP4. This is valid. The partition name HALDBP1, HALDBP2, and HALDBP4 are processed. The partition name HALDBP3 is skipped.

//PROCCTL DD *
    PROC TYPE=ALL
    DATABASE DB=HALDB1,PART=HALDBP1,DD=(A,B,C)
    DATABASE DB=HALDB1,PART=HALDBP2,DD=*ALL
/*

Suppose HALDB1 has two partitions in the following order: HALDBP1, HALDBP2. This is valid. The data set group A, B, and C of HALDBP1 are processed. All data set groups in HALDBP2 are processed.

//PROCCTL DD *         
    PROC TYPE=ALL
    DATABASE DB=HALDB1,PART=HALDBP1,DD=(A,B),SCANGROUP=01 
    DATABASE DB=HALDB1,PART=HALDBP1,DD=C,SCANGROUP=02

To read the data set groups in parallel, the same partition name is specified in two DATABASE statements. Each data set group can be specified in only one statement.