Altering IMS logical relationships

The steps in the table below outline the steps required to add or modify logical relationships by reorganizing a database.

The table below shows you what you need to do based on the logical relationships and pointers you are starting from in column 1, the databases you are reorganizing in column 2, and the logical relationships and pointers you are adding in columns 3 to 6. Column 1 is the FROM column. Columns 3 to 6 are the TO columns.

At the intersection between the existing and new logical relationships and pointers, the table provides the following information:
  • When a logically related database must be scanned
  • When both sides of a logical relationship must be reorganized
  • When the Prefix Resolution and Prefix Update utilities must be run

If the Prefix Resolution and Prefix Update utilities do not need to be run, the table cell contains finished.

The figure applies to reorganizations only. When initially loading databases, you must run the Prefix Resolution and Update utilities whenever work data sets are generated.

The following table covers all reorganization situations, whether or not database pointers are being changed. In using the figure, a bidirectional physically paired relationship should be treated as two unidirectional relationships. Unless otherwise specified, DBR should be specified for the reorganized databases when the Prereorganization utility is run.

The following two examples guide you in use of the table.

Example 1: Reorganizing a database with unidirectional symbolic pointers without changing pointers

Assume your database has unidirectional symbolic pointers and you are not changing pointers. On the left side of the table below, in the FROM column, find unidirectional symbolic pointers and follow the row across to the right until it intersects with the TO column of unidirectional symbolic pointers. The figure tells you what you must do to reorganize with one of the following:
  • The database containing the logical parent
  • The database containing the logical child
  • Both databases, if necessary

In all three situations, it is not necessary to run the Prefix Resolution or Update utilities (this is what is meant by finished).

Example 2: Changing bidirectional symbolic pointers to bidirectional direct pointers during a reorganization

Assume your database has bidirectional symbolic pointers and you need to change to bidirectional direct pointers. In the FROM column, find the row for bidirectional symbolic pointers. In the TO columns, find bidirectional direct pointers. Where the row and column intersect, the table below shows that:
  • Reorganizing only the logical parent database cannot be done, because a logical parent pointer must be created in the logical child segment in the logical child database.
  • Reorganizing the logical child database can be done. To scan the logical child database, you must scan the logical parent database. The control statements for the Prereorganization utility must specify DBIL for the logical child database. Also, the Prefix Resolution and Update utilities must be run.
  • Reorganizing both databases can also be done. In this case, the control statements for the Prereorganization utility must specify DBIL for the logical child database and DBR for the logical parent database. Again, the Prefix Resolution and Update utilities must be run.
Table 1. Steps required to convert logical relationships and pointers during a database reorganization
FROM: existing logical relationship and pointers Databases to be reorganized TO: new logical relationship and pointers
Unidirectional symbolic pointers Unidirectional direct pointers Bidirectional symbolic pointers Bidirectional direct pointers
Unidirectional with symbolic pointers Logical parent database only Finished1 Not valid, because symbolic LP pointers exist now and direct LP pointers must be added to the logical child database. 1. Scan logical child database.

2. Run prefix resolution and update.

Note: Logical child segment will not contain LT pointers unless it is reorganized.

Not valid, because direct LP and LT pointers must be put in the logical child database.
Logical child database only Finished 1. Scan logical parent database.

2. Run prefix resolution and update.

Specify DBIL for the logical child database.

Not valid, because a counter exists now and LCF/LCL pointers must be put into the logical parent database. Not valid, because a counter exists now and LCF/LCL pointers must be put into the logical parent database.
Both databases Finished2 Run prefix resolution and update.

Specify DBIL for the logical child database and DBR for the logical parent database.

Run prefix resolution and update.

Specify DBR for both databases.

Run prefix resolution and update.

Specify DBIL for the logical child database and DBR for the logical parent database.

Unidirectional with direct pointers Logical parent database only Not valid, because a direct LP pointer exists now and symbolic LP pointers must be added to the logical child database. 1. Scan logical child database.

2. Run prefix resolution and update.

Not valid, because a direct LP pointer exists now and symbolic LP pointers must be added to the logical child database. LT pointers must also be added to the logical child database. 1. Scan logical child database.

2. Run prefix resolution and update.

Note: Logical child segment will not contain LT pointers unless database is reorganized.

Logical child database only Finished Finished Not valid, because LCF/LCL pointers must be put in the logical parent database. Not valid, because LCF/LCL pointers must be put in the logical parent database.
Both databases Finished2 Run prefix resolution and update. Run prefix resolution and update. Run prefix resolution and update.
Bidirectional with symbolic pointers Logical parent database only Not valid, because the counter in the logical parent database will not be resolved and LT pointers exist now in the logical child database. Not valid, because symbolic LP and LT pointers exist now and a direct LP pointer must be added to the logical child database. 1. Scan logical child database.

2. Run prefix resolution and update.

Note: LCF/LCL pointers are not unloaded and reloaded.

Not valid, because a symbolic LP pointer exists now and a direct LP pointer must be added to the logical child database.
Logical child database only Not valid, because LCF/LCL pointers exist now in the logical parent database and a counter must be added to the logical parent database. Not valid, because LCF/LCL pointers exist now in the logical parent database and a counter must be added to the logical parent database. 1. Scan logical parent database.

2. Run prefix resolution and update.

1. Scan logical parent database.

2. Run prefix resolution and update.

3. Specify DBIL for the logical child database.

Both databases Run prefix resolution and update.

Specify DBIL for the logical child database and DBR for the logical parent database.

Run prefix resolution and update.

Specify DBIL for the logical child database and DBR for the logical parent database.

Run prefix resolution and update. Run prefix resolution and update.

Specify DBIL for the logical child database and DBR for the logical parent database.

Bidirectional with direct pointers Logical parent database only Not valid, because direct LP and LT pointers exist in the logical child database and symbolic LP pointers must be added. Not valid, because the counter in the logical parent database will not be resolved and LT pointers will not be removed from the logical child database. Not valid, because a direct LP pointer exists in the logical child database and the change is to symbolic LP pointers. 1. Scan logical child database.

2. Run prefix resolution and update.

Note: LCF/LCL pointers are not unloaded and reloaded.

Logical child database only Not valid, because LCF/LCL pointers exists in the logical parent database and a counter must be added to the logical parent database. Not valid, because LCF/LCL pointers exist now in the logical parent database and a counter must be added to the logical parent database. 1. Scan logical parent database.

2. Run prefix resolution and update.

1. Scan logical parent database.

2. Run prefix resolution and update.

Both databases Run prefix resolution and update.

Specify DBIL for the logical child database and DBR for the logical parent database.

Run prefix resolution and update.

Specify DBIL for the logical child database and DBR for the logical parent database.

Run prefix resolution and update. Run prefix resolution and update.
Note:
  1. The Prereorganization utility says to scan the logical child database and the DFSURWF1 records will be produced if scan is run.
  2. DFSURWF1 records are produced; however, the prefix resolution and update utilities need not be run.