Clients who support their applications often will copy data from their databases from one environment to another for testing or development activities, to report against older data, or for many other reasons. It is very easy to use the BACKUP command of the Datacom/DB DBUTLTY program to take a backup of the whole database. This backup data can then be loaded into the target environment with a single LOAD command. When using the Datacom/DB DBUTLTY program and the BACKUP command to take a backup of the whole database, and then loading the data from the backup file into the target environment, it is possible for one or more tables to not be loaded, and the job to produce a message "TABLE NOT LOADED". Why does this happen, and how can it be corrected?
Here is an example report showing this error situation:
In this case, Table TBS was not loaded (Box A), although the input file shows there were 68,915 records. Looking at the description of these tables further, Table TBS was defined with Datacom ID 2 in the source system (Input Box B), but it was defined with Datacom ID 46 in the target system (Output Box C). As noted in the Datacom/DB DBUTLTY documentation for the LOAD command:
If you load data from a backup, the LOAD function restores the data only if the table IDs are identical when LOADID=YES (the default). LOADID=NO can be used to match on table names. LOADID=NO cannot be specified if:
REMAP= can be used to force matching on different table names. This feature is available only for areas that are loaded as URI.
In this situation, there are several alternatives to correct it. One or more of these should be considered in each circumstance, to use the best process for the given situation.
Changing the Datacom-ID
The Datacom-ID for the table is stored in the Datadictionary, and it is also present in the Database directory (CXX). This field can be changed using the online DDOL transaction, or through batch DDUPDATE transactions. In DDOL, the tables in a database can be displayed via the DISPLAY DATABASE databasename status command. Here is an example:
In this display, the column DB-Id contains the Datacom-ID of the table. Here, table PNC (DEMO-DEM-PNC) has the Datacom-ID of 006. This information should be checked for all environments in which this table/database is defined. To change it, type the "ATT" margin command in the line number for the occurrence on a display panel and press PF4 (PROCESS). Set the Datacom-ID to the new value and then press PF9 (APPLY). If there are no errors, Datadictionary displays the Attribute Display Panel with the message SUCCESSFUL ATTRIBUTE UPDATE. Proceed with your process to copy the definition to PROD status if necessary and then catalog it to the Directory (CXX).
To update this value in batch mode using DDUPDATE, you will need to use the following transactions:
-USR DATACOM-INSTALL,NEWUSER
-BTG TABLE,tablename(status)
3150 @@@ ###
-END
(Replace the @@@ with the 3-character Datacom short name, and ### with the desired Datacom-ID)
Run the necessary steps to copy the definition to PROD status if necessary and then catalog it to the Directory (CXX).