FDRREORG Examples


All examples in this section are found in the JCL library installed with FDR. The member names are EX3011x.

REORG using temporary backups example

The following example can be used to reorganize all “CICSPROD” and “PROD” data sets on any volume with a VOLSER beginning with “CICS” or “PROD” that have split more than 10% of the control areas or more than 20% of the control intervals. The name of the backup data sets is the name of the selected data set appended with “.BACKUP”. Each backup data set is deleted after the selected data set is reorganized.

//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    BACKUP=TEMP,BACKUPUNIT=SYSDA,
          BACKUPINDEX=++BACKUP
 SELECT   VOL=(CICS*,PROD*),
          DSN=(CICSPROD.**,PROD.**),
          DSTYPE=VSAM,
          IFANY,
          CASPLITR>10,CISPLITR>20
/*

REORG using permanent backups example

In this run, BACKUP=PERM is used to keep the backup data sets. If FDRREORG is run at a later date with the same control cards, any backup data sets that were kept from a previous run must be deleted first or the data set is not reorganized. FDRREORG does not create a backup using the name of an existing cataloged data set.

//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    BACKUP=PERM,
          BACKUPUNIT=SYSDA,
          BACKUPINDEX=++BACKUP
 SELECT   VOL=(CICS*,PROD*),
          DSN=(CICSPROD.**,PROD.**),
          DSTYPE=VSAM,
          CASPLITR>10,CISPLITR>20
/*

REORG using ALWAYSBACKUP example

To combine an application level backup with reorganization, the ALWAYSBACKUP operand can be used. With this operand, all data sets that pass the basic selection criteria are backed up, and any data sets that meet the reorganization criteria are also reorganized. Use of the ALWAYSBACKUP operand requires that the backup data sets be kept. BACKUP=TEMP, if specified or defaulted, is treated as a operand error. In the following example, all “CICSPROD.PAYROLL” and “PROD.PAYROLL” VSAM KSDS data sets or AIXs are backed up. If any data sets are encountered that have a CI or CA split ratio greater than 10, they are reorganized after the backup.

//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    BACKUP=GDG,BACKUPUNIT=TAPE,
          BACKUPINDEX=++BACKUP
 SELECT   VOL=(CICS*,PROD*),
          DSN=(CICSPROD.PAYROLL.**,PROD.PAYROLL.**),
          ALWAYSBACKUP,
          DSTYPE=VSAM,
          IFANY,
          CASPLITR>10,CISPLITR>10
/*

REORG using GDG backups on tape example

This example selects data sets with high-level index of “ACCOUNT” from the catalog. In this run, BACKUP=GDG is used to keep the backup data sets as Generation Data Groups (GDGs). Using this method allows the data sets to be kept without having to delete old backups first. FDRREORG dynamically defines the GDG base record if one does not already exist. The backup files use tape.


//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    BACKUP=GDG,BACKUPUNIT=3590,
          BACKUPINDEX=++BACKUP
 SELECT   CATDSN=ACCOUNT.**,
          DSTYPE=VSAM,
          IFANY,
          CASPLITR>5,CISPLITR>10
/*

REORG specific data sets example

The following example demonstrates how to select specific data sets for reorganization whether they require reorganization or not. All VSAM, IAM, or PDS data sets with a second index level of “ACCOUNT” is selected from volumes “ACCT01”, “ACCT09”, and “ACCT10”.


//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    NODEFAULTS
 SELECT   DSN=*.ACCOUNT.**,
          VOL=(ACCT01,ACCT09,ACCT10)
/*

REORG VSAM if any splits occur example

The following examples reorganize any VSAM file with an ending index level of “CLUSTER” and have experienced any CI or CA splits.

//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    NODEFAULTS
 SELECT   DSN=**.CLUSTER,VOL=PAY*,
          DSTYPE=VSAM,
          NCISPLITS>0,NCASPLITS>0
/*

REORG using NOREORG example

FDRREORG can be used to take application level backups by using the NOREORG option. With this option, all data sets that meet the selection criteria are backed up but not reorganized. Use of the NOREORG option requires that the backup data sets be kept. BACKUP=TEMP, if specified or defaulted, is treated as a operand error. In the following example, all “CICSPROD.PAYROLL” and “PROD.PAYROLL” VSAM KSDS data sets or AIXs are backed up.

Warning

Important

The RECOVER statement is not designed to restore these backups. You can use an IDCAMS REPRO JOB to reload these data sets (except for IAM RRDS data sets).

//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    NODEFAULTS,BACKUP=GDG,BACKUPUNIT=tape,
          BACKUPINDEX=++BACKUP
 SELECT   VOL=(CICS*,PROD*),
          DSN=(CICSPROD.PAYROLL.**,PROD.PAYROLL.**),
          DSTYPE=VSAM,
          NOREORG
/*

REORG using an EXCLUDE example

This example selects data sets starting with “CICSPROD” or “PROD” with the exception of any data sets that have a second level qualifier of PAYROLL. Control cards are processed in the order processed. If the EXCLUDE statement is placed after the SELECT statement, the “CICSPROD.PAYROLL” and “PROD.PAYROLL” data sets are reorganized because they are selected before the EXCLUDE statement is processed. The backup data set name uses the IBM RACF user id as its high level index and goes to the SMS STORCLAS of TEMPDISK.

//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    BACKUP=TEMP,BACKUPSTORCLASS=TEMPDISK,
          BACKUPINDEX=&RACFUID.++BACKUP
 EXCLUDE  DSN=(CICSPROD.PAYROLL.**,PROD.PAYROLL.**)
 SELECT   VOL=(CICS*,PROD*),
          DSN=(CICSPROD.**,PROD.**),
          DSTYPE=VSAM,
          IFANY,
          CASPLITR>10,CISPLITR>20
/*

REORG using CRDAYS example

The following example selects VSAM files with an additional filter limiting the selection to data sets created within the last two days. This might be useful if new data sets were defined with incorrect free space parameters that have been modified to the correct values with an IDCAMS ALTER statement. By reorganizing these data sets, they are reloaded using the new free space parameters.

//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    BACKUP=TEMP,BACKUPUNIT=SYSDA,
          BACKUPINDEX=++BACKUP
 SELECT   VOL=(CICS*,PROD*),
          DSN=(CICSPROD.**,PROD.**),
          DSTYPE=VSAM,
          CRDAYS<=2        <---select if created in last 2 days
/*

You could also achieve the same results by using specific dates as shown in the following example. This example also demonstrates how to specify a low and high range for selection.


REORG     BACKUP=TEMP,BACKUPUNIT=SYSDA,
          BACKUPINDEX=++BACKUP
SELECT    VOL=(CICS*,PROD*),
          DSN=(CICSPROD.**,PROD.**),
          DSTYPE=VSAM,
          CRDATE>=98001,CRDATE<=98002  <---date range
                      or
          CRDATE>=1998001,CRDATE<=1998002

REORG using last reference data as filters example

The last reference date can also be used as a filter. Use LRDATE= if you want to filter on a specific date. Use LRDAYS= to filter based on days since last reference.

The following example selects partitioned data sets that have been referenced within the last seven days and are more than 80% full. This allows FDR to bypass PDSs that have not been referenced in some time and most likely do not require compression.

//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSIN    DD *
 REORG    
 SELECT   ALLDSN,VOL=TSO*,
          DSTYPE=PDS,
          LRDAYS<=7,  <---referenced in last 7 days
          PDSFULL>80  <---must be more than 80% full
/*

Compress PDSs using FDRCOPY for performance example

The following example uses FDRCOPY to compress a large number of PDS data sets. FDRCOPY can be used instead of FDRREORG to compress PDS data sets if the special features of FDRREORG (ex: extra selection criteria, etc.) are not required. FDRCOPY reduces the overhead of compressing large number of data sets yielding optimum performance.

//COMPRESS EXEC PGM=FDRCOPY,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
 REORG    TYPE=DSF
 SELECT   ALLDSN,VOL=*
/*

REORG large files to tape small files to DASD example

The following example reorganizes VSAM and IAM files based on default selection criteria. Files 100 cylinders or larger use tape as the backup medium. Files under 100 cylinders use DASD for the backups. Since a large number of volumes are processed, eight sub-tasks are used.

//REORG1   EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    DATA=USED,MAXTASKS=8,
          BACKUPUNIT=DISK
 SELECT   ALLDSN,VOL=MANY*,
          DSTYPE=(VSAM,IAM),
          CYLS<100
/*
//REORG2   EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
  REORG    DATA=USED,MAXTASKS=8,
           BACKUPUNIT=TAPE SELECT ALLDSN,VOL=MANY*,
           DSTYPE=(VSAM,IAM),
           CYLS>=100
/*

REORG unavailable data sets example

If data sets are in use at the time FDRREORG selects them for processing, they are normally bypassed. In some cases, it might be critical that certain data sets be reorganized before starting an on-line region, or before starting a production job stream. In other cases, the data set might become available before FDRREORG processing is complete. These situations can be handled by using the DSNRETRY= parameter. For data sets that you would like processed if they become available, you can use DSNRETRY=RETRY or DSNRETRY=ENQ. Specifying RETRY instructs FDRREORG to make repeated attempts to allocate the data set during the normal course of processing. If the data set is successfully allocated, it is processed. ENQ instructs FDRREORG to leave pending a SYSDSN enqueue for the data set. This ensures that FDRREORG obtains ownership of the data set as soon as it becomes available. If the data set enqueue is not obtained before the task that selected the data set completes, the pending SYSDSN enqueue is released and the data set is not processed. For those situations where it is critical that data sets be reorganized, you can specify DSNRETRY=WAIT. In this case, the task that selected the data set waits for the SYSDSN enqueue to be obtained and does not terminate until all data sets selected with DSNRETRY=WAIT have been processed. We have added RUNTIME=60 to the REORG statement that instructs FDRREORG to stop processing after 60 minutes. If RUNTIME= was not specified on the REORG statement, or an operator STOP (P) command would have to be issued in the event that a data set queued for retry processing with the wait option is unavailable for a long period of time.

The following example demonstrates how to use the various DSNRETRY= options. The first SELECT statement causes each task to wait for “CICSPROD.” data sets on CICSxx volumes that are not available when selected. The second SELECT statement causes each task to issue a SYSDSN enqueue for “PROD.” data sets on PRODxx volumes that are 1000 cylinders or smaller. These data sets are not processed if they do not become available before the task that selected the data sets completes its processing. The third SELECT statement causes each task to make repeated attempts to allocate “PROD.” data sets on PRODxx volumes that are larger than 1000 cylinders. A SYSDSN enqueue is not issued for these data sets and they are not processed if all allocation attempts are unsuccessful.

//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    BACKUP=TEMP,BACKUPUNIT=SYSDA,
          BACKUPINDEX=++BACKUP,
          DATA=USED,DSTYPE=VSAM,
          RUNTIME=60
 SELECT   VOL=(CICS*),
          DSN=(CICSPROD.**),
          IFANY,CASPLITR>10,CISPLITR>20,
          DSNRETRY=WAIT
 SELECT   VOL=(PROD*), DSN=(PROD.**),
          CYLS<=1000,
          IFANY,CASPLITR>10,CISPLITR>20,
          DSNRETRY=ENQ
 SELECT   VOL=(PROD*), DSN=(PROD.**),
          CYLS>1000,
          IFANY,CASPLITR>10,CISPLITR>20,
          DSNRETRY=RETRY
/*

Changing the space allocation of a VSAM cluster example

In the following example, the physical allocation of a VSAM cluster is changed. The data component is allocated with 100 cylinders primary and 20 cylinders secondary. The index component is allocated with 5 tracks primary and 1 track secondary.

//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    NODEFAULTS,NOUPDATES=YES
 SELECT   CATDSN=VSAM.CLUSTER,
          NEWCYLSDATA=(100,20),NEWTRKSINDEX=(5,1)
/*

Moving VSAM data sets example

In the following example, the data and index components of a VSAM cluster are redefined on volume “VSAM01”.

//MOVEVSAM EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    NODEFAULTS,NOUPDATES=YES
 SELECT   CATDSN=VSAM.DATASET,
          NEWVOLSDATA=VSAM01,NEWVOLSINDEX=VSAM01
/*

Moving VSAM Data Sets with Alternate Indexes example

In the following example, the data and index components of a VSAM cluster residing on a 3380 are redefined on volume “VSAM01” (a 3390 volume). By specifying MOVEAIX=YES, any Alternate Indexes (AIXs) of this VSAM cluster are also redefined on volume “VSAM01”. If MOVEAIX=YES is not specified, the default is NO and the Alternate Indexes (AIXs) are defined on their original volumes.

//MOVEVSAM EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    NODEFAULTS,NOUPDATES=YES,MOVEAIX=YES
 SELECT   CATDSN=VSAM.CLUSTER,
          NEWVOLSDATA=VSAM01,NEWVOLSINDEX=VSAM01
/*

Convert a non SMS-managed VSAM cluster to an SMS-managed cluster example

In the following example, a VSAM cluster is redefined as an SMS-managed cluster. The installation ACS routines can override the requested storage class or indicate that the cluster be defined as a non SMS-managed cluster.

//CONVERT  EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    NODEFAULTS,NOUPDATES=YES
 SELECT   CATDSN=VSAM.CLUSTER,NEWSTORCLASS=PROD
/*

Changing the space allocation of an IAM data set example

In the following example, the physical allocation of an IAM data set is changed. The file is allocated with 100 cylinders primary and 20 cylinders secondary.

//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    NODEFAULTS,NOUPDATES=YES
 SELECT   CATDSN=IAM.DATASET,NEWCYLSDATA=(100,20)
/*

Moving IAM data sets example

In the following example, an IAM data set is redefined on volume “IAM001”.

//MOVEIAM  EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    NODEFAULTS,NOUPDATES=YES
 SELECT   CATDSN=IAM.DATASET,NEWVOLSDATA=IAM001
/*

Convert a non SMS-managed IAM data set to an SMS-managed data set example

In the following example, an IAM data set is redefined as an SMS-managed data set. The installation ACS routines can override the requested storage class or indicate that the data set be defined as a non SMS-managed data set.

//CONVERT  EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    NODEFAULTS,NOUPDATES=YES
 SELECT   CATDSN=IAM.DATASET,NEWSTORCLASS=PROD
/*

Parallel Mode Reorganization example

In the following example, FDRREORG runs in parallel mode for a multi-volume IAM and VSAM file. A maximum of nine parallel tasks per data set are allowed as specified by the MAXP= operand. If the two data sets are using space on nine or more volumes, 18 tape drives are allocated assuming that the first volume of each data set are not the same.

//REORG    EXEC PGM=FDRREORG,REGION=0M
//SYSPRINT DD SYSOUT=*
//REORGPRT DD SYSOUT=*
//REORGRPT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 REORG    MODE=P,MAXP=9,BACKUPUNIT=3590,MAXT=2,
          BACKUPINDEX=++BACKUP?
 SELECT   CATDSN=(VSAM.CLUSTER,IAM.DATASET)
/*

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*

BMC AMI Storage FDR 6.1