Merging concatenated VSAM datasets

Overview

In previous versions of BSA, you could concatenate up to sixteen physical VSAM datasets to be used as one logical database. This was defined in the database definition file via ADD EXTEND. Concatenated datasets were used, for example, to overcome the 4 GB size limit of BSA V3 databases.

Important: Deprecated feature

Using concatenated VSAM datasets is deprecated and current versions of BSA provide only limited support for them. It is possible to continue to work with existing concatenated VSAM datasets, but current versions of BSA don't provide support for further enlargement.

We strongly recommend that all users who are still working with concatenated VSAM datasets merge these datasets. Use extended VSAM datasets if the total size is greater than 4 GB. This is defined via the SMS data class (DSNTYPE = EXT). For BQL databases, the maximum size of an extended VSAM dataset is 28 GB. Define secondary space and additional volumes for your merged VSAM dataset to enable the dynamic extension of this database (see "Dynamic database extension").

Who is affected

Use the database panels under option D.1 and D.2.4 to find out whether you are affected. The table displays a Y in column X if concatenated VSAM datasets are present. Otherwise this column is blank.

Procedure

The following steps are needed to merge concatenated VSAM datasets into one. The sample JCL is for a database with one extend (EXT01). All database access (STC(s) and batch jobs) must be stopped during this procedure.

Before you begin:

  • Create or adjust the data class (DSNTYPE = EXT) if the merged dataset is greater than 4 GB or if you want to enable dynamic database extension beyond 4 GB.
  • Look up the short name of the VSAM dataset under option D.1. You need to know the short name of the database, for example, JOBDATA or B93LIST, for the DEL EXTEND command used in step 3.

Following are the steps you need to carry out:

  1. Copy the contents of the VSAM datasets into sequential output files.

    +-------------------------------------------------------------+
    |//DBREPRO EXEC PGM=IDCAMS |
    |//IN1 DD DISP=OLD, |
    |// DSN=VSAM.BETA.DB |
    |//IN2 DD DISP=SHR, |
    |// DSN=VSAM.BETA.DB.EXT01 |
    |//OUT1 DD DISP=(,CATLG),SPACE=(CYL,(600,50),RLSE), |
    |// DSN=TEMP.BETA.DB, |
    |// DCB=(RECFM=FB,LRECL=4088,BLKSIZE=0) |
    |//OUT2 DD DISP=(,CATLG),SPACE=(CYL,(100,30),RLSE), |
    |// DSN=TEMP.BETA.DB.EXT01, |
    |// DCB=(RECFM=FB,LRECL=4088,BLKSIZE=0) |
    |//SYSPRINT DD SYSOUT=* |
    |//SYSIN DD * |
    |REPRO IFILE(IN1) OFILE(OUT1) |
    |REPRO IFILE(IN2) OFILE(OUT2) |
    |/* |
    +-------------------------------------------------------------+

  2. Rename the old VSAM datasets as a backup.

    +-------------------------------------------------------------+
    |//DBREN EXEC PGM=IDCAMS |
    |//* |
    |//SYSPRINT DD SYSOUT=* |
    |//SYSIN DD * |
    | ALTER VSAM.BETA.DB - |
    | NEWNAME(VSAM.BETA.DB.OLD) |
    | ALTER VSAM.BETA.DB.DATA - |
    | NEWNAME(VSAM.BETA.DB.OLD.DATA) |
    | ALTER VSAM.BETA.DB.EXT01 - |
    | NEWNAME(VSAM.BETA.DB.EXT01.OLD) |
    | ALTER VSAM.BETA.DB.EXT01.DATA - |
    | NEWNAME(VSAM.BETA.DB.EXT01.OLD.DATA) |
    |/* |
    +-------------------------------------------------------------+

  3. Delete the extends from the database definition file.

    You must carry out this step once for each extend. If you have more than one extend, you must carry out this step as often as the number of extends present.

    +-------------------------------------------------------------+
    |//DBFORM EXEC PGM=BST01RFF,REGION=0M,COND=(0,NE), |
    |// PARM=('S=nn,B01LST=nn,BnnLST=nn', |
    |// 'PGM=BST05CMD,SIGNON=NO') |
    |//* |
    |//STEPLIB DD DISP=SHR, |
    |// DSN=BETA.BSAV7.LOAD |
    |//SFFPARM DD DISP=SHR, |
    |// DSN=BETA.PARMLIB |
    |//BnnDEF DD DISP=SHR, |
    |// DSN=VSAM.BETA.DEF |
    |//* |
    |//BQLIN DD * |
    | DEFINE UPDATE FILE sname DEL EXTEND |
    |/* |
    |//SFFFDUMP DD SYSOUT=* |
    |//SYSUDUMP DD SYSOUT=* |
    |//* |
    |//BQLPRINT DD SYSOUT=* |
    |//SYSPRINT DD SYSOUT |
    +-------------------------------------------------------------+

  4. Create a database of the required size (primary and secondary space). If appropriate, list the potential volumes for it.

    +-------------------------------------------------------------+
    |//DBDEF EXEC PGM=IDCAMS |
    |//SYSPRINT DD SYSOUT=* |
    |//SYSIN DD * |
    | DEFINE CLUSTER( - |
    | NAME(VSAM.BETA.DB) - |
    | CYLINDERS(cyl,cyl) - |
    | SHAREOPTIONS(3 3) - |
    | VOL(vol1 vol2 vol3 vol4) - |
    | OWNER(Bnn) - |
    | UNIQUE - |
    | SPEED - |
    | NONINDEXED - |
    | ) - |
    | DATA( - |
    | NAME(VSAM.BETA.DB.DATA) - |
    | CONTROLINTERVALSIZE(4096) - |
    | RECORDSIZE(4088 4088) - |
    | ) |
    |/* |
    +-------------------------------------------------------------+

  5. Copy the contents from the sequential files created in step 1 to the new VSAM dataset created in step 4.

    +-------------------------------------------------------------+
    |//DBREPRO EXEC PGM=IDCAMS |
    |//IN1 DD DISP=OLD, |
    |// DSN=TEMP.BETA.DB |
    |// DD DISP=SHR, |
    |// DSN=TEMP.BETA.DB.EXT01 |
    |//OUT1 DD DISP=OLD,AMP=('AMORG,BUFND=181'), |
    |// DSN=VSAM.BETA.DB |
    |//SYSPRINT DD SYSOUT=* |
    |//SYSIN DD * |
    | REPRO IFILE(IN1) OFILE(OUT1) |
    |/* |
    +-------------------------------------------------------------+