FABHFSU JCL examples

Use the following JCL examples to prepare your FABHFSU JCL.

Example 1: Running FABHFSU in ULU region

The FABHULU procedure can be used to run FABHFSU in the ULU region. The DBD name must be specified on the DBD= EXEC parameter and on the DBD control statement in CARDIN DD. The DBD must be a physical DBD.

Because the job runs in the ULU region, PSB name '*' is specified for PSB control statements. In this example, two PSB statements are coded.

The first PSB statement specifies the UL format and the DD name of OUT1 for the output data set. The output data set produced by the PSB statement can be reloaded by the IMS HD Reorganization Reload utility or a compatible utility.

The second PSB statement specifies the VN format and the DD name of OUT2 for the output data set. The output data set is intended to be processed by an application program.

In the following example, SKILHDAM DD specifies the database to be unloaded.

Figure 1. Running FABHFSU in the ULU region
//    EXEC  FABHULU,MBR=FABHFSU,DBD=SKILLINV
//CARDIN    DD  *
DBDSKILLINV
PSB*       OUT1      UL
PSB*       OUT2      VN
END
/*
//PRNTOUT   DD  SYSOUT=A
//SKILHDAM  DD  DSN=IMSDB.SKILLINV.DB,DISP=SHR
//OUT1      DD  DSN=IMSDB.UNLOAD1,DISP=(,KEEP),UNIT=TAPE
//OUT2      DD  DSN=IMSDB.UNLOAD2,DISP=(,KEEP),UNIT=TAPE

Example 2: Running FABHFSU in DLI region

The FABHDLI procedure can be used to run FABHFSU in the DLI region. The PSB name must be specified on the PSB= EXEC parameter. The DBD control statement must be coded in CARDIN DD and must specify the DBD name for the database to be processed. The DBD must be a physical DBD.

The three options, that is, sequence check option (Y), sequence error option (A), and sequence error print option (Y) which are specified in the DBD statement, mean:

  • Y: sequence check is to be done.
  • A: sequence errors are to be processed.
  • Y: the diagnostic data is to be printed in the HSSRTRAC data set.

Any incorrect pointers are bypassed because the DBD statement also specifies the pointer bypass option (1).

In this example, two PSB statements are coded.

All segments defined in the DBD are sensitive to the output defined by the OUT1 DD, because '*' is specified in the PSB name field of the first PSB statement. If no sequence errors or pointer errors are found, the output data set produced by the PSB statement can be reloaded by the IMS HD Reorganization Reload utility or a compatible utility, because the unload format UL is specified.

The second PSB statement specifies the VB format and the DD name of OUT2 for the output data set. Only segments of the types defined in the first DB PCB of the PSB OUT2PSB for the SKILLINV database are unloaded, because the PSB statement specifies the PSB name and the PCB Number field is left blank. A user exit routine, OUT2EXIT, is specified on the PSB statement.

The OUT1 and OUT2 DD statements specify the data sets for unloading.

In the following example, it is assumed that the RECON data sets and the database data sets are dynamically allocated.

Figure 2. Running FABHFSU in the DLI region
//    EXEC FABHDLI,MBR=FABHFSU,PSB=OUT2PSB,DBRC=Y
//CARDIN    DD  *
DBDSKILLINV         YAY     1
PSB*       OUT1       UL
PSBOUT2PSB OUT2       VBOUT2EXIT
END
/*
//PRNTOUT   DD  SYSOUT=A
//OUT1      DD  DSN=IMSDB.UNLOAD1,DISP=(,KEEP),UNIT=TAPE
//OUT2      DD  DSN=IMSDB.UNLOAD2,DISP=(,KEEP),UNIT=TAPE