Unloading a DEDB by using a generalized randomizer

If you use a generalized randomizer with a DEDB, any change in the number of root anchor points (RAPs) affects the distribution of records across the DEDB. Changes that affect the number of RAPs include the following:
  • Changes to the UOW or ROOT (change in RAA value)

  • Increasing or decreasing the total number of areas in the DEDB

These changes to the number of RAPs require that all areas in the DEDB be input to the unload process at the same time, preferably in the same command set.

The design flexibility of Fast Path Reorg/EP enables parallel processing of DEDBs in multiple ways. The product will not terminate processing if all areas in the DEDB are not defined to the unload process when a generalized randomizer is used.

Warning

Failure to include all existing areas as input to the unload process at the same time can cause records to be discarded because of re-randomization by the generalized randomizer. In this situation, Fast Path Reorg/EP issues message BMC111178W to indicate that it found a change in the structure of the database that affects the entire DEDB but not all areas were included in the process. For example, if the unload is processing one area at a time and a record moves from area1 to area2 because of re-randomization and there is no output file for area2 (no OAREA002 DD statement present in the JCL), the entire record is discarded.

Three different techniques are available to complete the unload process when a generalized randomizer is used.

Unloading the entire database

The simplest method to unload a DEDB when a generalized randomizer is used is to execute the unload with only the DBD keyword (without IAREA and OAREA keywords) as shown in the following figure. By default, all areas are processed by the UNLOAD command. Input areas are dynamically allocated.

Unloading entire area when using generalized randomizer

//PFP  EXEC  PGM=PFPMAIN,REGION=0M
//STEPLIB  DD DSN=BMC.PFP.LOAD,DISP=SHR
//         DD DSN=IMSVS.RESLIB,DISP=SHR
//NEWACB   DD DSN=IMSVS.NEW.ACBLIB,DISP=SHR
//IMSACB   DD DSN=IMSVS.OLD.ACBLIB,DISP=SHR
//OAREA001 DD DSN=PFP.UNLOAD.AREA1,DISP=(,CATLG)
//            UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//OAREA002 DD DSN=PFP.UNLOAD.AREA2,DISP=(,CATLG)
//            UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//OAREA003 DD DSN=PFP.UNLOAD.AREA3,DISP=(,CATLG)
//            UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//OAREA004 DD DSN=PFP.UNLOAD.AREA4,DISP=(,CATLG)
//            UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//PFPPRINT DD SYSOUT=*
//PFPSYSIN DD *
 UNLOAD DBD=DB400

Limiting the number of output files

If you have storage constraints (DASD or tape units) and want to limit the number of output files, specify the OFILECTL subcommand on the UNLOAD command as shown in the following figure.

Specify IAREA=ALL, or omit the IAREA keyword which will default to ALL. Specifying IAREA=ALL causes all areas to be read as input. Use the OFILECTL subcommand to specify the output file data set name, but do not specify the OAREA keyword to ensure that the data for all areas will be output to a single file. Input areas are dynamically allocated.

Specifying one output file when using generalized randomizer

//PFP      EXEC  PGM=PFPMAIN,REGION=0M
//STEPLIB  DD DSN=BMC.PFP.LOAD,DISP=SHR
//         DD DSN=IMSVS.RESLIB,DISP=SHR
//NEWACB   DD DSN=IMSVS.NEW.ACBLIB,DISP=SHR
//IMSACB   DD DSN=IMSVS.OLD.ACBLIB,DISP=SHR
//PFPPRINT DD SYSOUT=*
//PFPSYSIN DD *
 UNLOAD DBD=DB400
    OFILECTL DSNAME='PFP.UNLOAD.DB400',DISP=(NEW,CATLG),
             UNIT=SYSDA,SPACE=(CYL,45,15,RLSE)

To create more than one output file, specify multiple OFILECTL subcommands, each with an OAREA keyword that specifies the desired output area or areas, as shown in the following figure. You must specify unique area names on each OAREA keyword. Do not specify the same output area name on more than one OFILECTL subcommand.

Specifying multiple output files when using generalized randomizer

UNLOAD DBD=DB400,IAREA=ALL
OFILECTL OAREA=(AREA1,AREA3)
         DSNAME='PFP.UNLOAD.DB400A',DISP=(NEW,CATLG),
         UNIT=SYSDA,SPACE=(CYL,25,15,RLSE)
OFILECTL OAREA=(AREA2,AREA4)
         DSNAME='PFP.UNLOAD.DB400B',DISP=(NEW,CATLG),
         UNIT=SYSDA,SPACE=(CYL,25,15,RLSE)

Creating a separate unload file for each area

To create a separate unload file for the data that is contained in each area, specify the UNLOAD command with the OAREA keyword that specifies the area name as shown in the following figure. Repeat this process for each area in the DEDB. Because the input areas can be shared, all jobs can be executed concurrently.

Note

To select all areas for input, specify IAREA=ALL, or omit the IAREA keyword which will default to ALL.

Creating a separate unload file per area when using generalized randomizer

//PFP      EXEC  PGM=PFPMAIN,REGION=0M
//STEPLIB  DD DSN=BMC.PFP.LOAD,DISP=SHR
//         DD DSN=IMSVS.RESLIB,DISP=SHR
//NEWACB   DD DSN=IMSVS.NEW.ACBLIB,DISP=SHR
//IMSACB   DD DSN=IMSVS.OLD.ACBLIB,DISP=SHR
//AREA1    DD DSN=PFP.DB400.AREA1,DISP=SHR
//AREA2    DD DSN=PFP.DB400.AREA2,DISP=SHR
//AREA3    DD DSN=PFP.DB400.AREA3,DISP=SHR
//AREA4    DD DSN=PFP.DB400.AREA4,DISP=SHR
//OAREA001 DD DSN=PFP.DB400.UNLOAD,DISP=(,CATLG),
              UNIT=SYSDA,SPACE=(CYL,(15,5),RLSE)
//PFPPRINT DD SYSOUT=*
//PFPSYSIN DD *
 UNLOAD DBD=DB400,OAREA=AREA1


This version of the documentation is no longer supported. However, the documentation is available for your convenience. You will not be able to leave comments.

Comments