Prism-CS Prism-CS Data Transfer


The Data Transfer component of Prism-CS™ automates the transfer of disk and tape application data from the VSE to the MVS, OS/390 or z/OS environments, using information collected during the JCL translation process, as well as from the VSE Catalogs (VSAM, Dynam, Epic, System Manager, etc) and the VSE VTOCs. The Data Transfer process can be easily customised by the conversion team.

Prism-CS utility programs automatically identify which files need to be transferred, and generate both VSE and MVS JCL streams to carry out the actual transfer of data. Transfer of disk and tape data sets is supported. Data on disk can consist of VSAM, SD or DA files, or data bases.

Disk files

Typically, VSE disk files are transferred to MVS via tape, using IDCAMS REPRO to stack multiple files onto a set of tape volumes. Prism-CS simplifies the transfer procedure and increases its reliability by automatically generating the job streams required to back up data files in VSE and restore them in MVS. Depending on local conditions, various utility programs may be used to back up VSE data files to tape (or shared DASD) and restore them into MVS data sets:

  • XFERD3V and XFERD3M, a pair of Prism-CS utility programs to unload data from VSAM and non-VSAM files in VSE and reload them into MVS data sets. The JCL example below is based on XFERD3.
  • IDCAMS REPRO, ICETOOL/SYNCTOOL or various CA-DYNAM or EPIC utilities
  • DrD or MaxBack, when available in VSE, back up disk files in VSE. DrD or Maxback back-up tapes can be restored in MVS using the DRDMVS or DUSPMVS utility programs
  • FAVER or DataBack, when available in both VSE and MVS

When available, shared DASD volumes can be used instead of tapes to speed the transfer up. As an alternative to intermediate disk and tape volumes, the Data Transfer component of Prism-CS can generate JCL streams to allocate MVS data sets and transfer the data using FTP. FTP jobs can run in VSE to "push" the data to MVS, or run in MVS to "pull" the data from VSE.

Transfer "in-place"

When the data transfer window is very narrow and the hardware configuration is appropriate, large disk files and even certain non-IBM data bases can be transferred "in-place" with the assistance of specific Prism-CS utilities in order to eliminate the delay inherent to tape transfer procedures. This delicate technique has proven irreplaceable in situations where an installation that functions 24x7 can only afford a few hours of down-time to perform the final switch-over.

Tape files

The format of VSE tape files is, for the most part, compatible with MVS. However, in a typical environment, an MVS job can not read VSE tapes directly because the data set name is different and volume information can't be found in the catalog. To be able to read a VSE tape, the MVS JCL must be temporarily modified to specify the VSE label used when the tape was created, volume information must be added, and sometimes DCB attributes must also be specified.

With the assistance of specific Prism-CS utilities, however, tapes files created in VSE can be catalogued and used as input to MVS jobs, transparently, without requiring any manual modification to the JCL.

Certain VSE tape files whose format is not compatible with MVS access methods can be copied to MVS disk or tape data sets using the COPY function of the Prism-CS XFERD3M utility.

When the content of a VSE tape library must be loaded into a "silo", a "robot" or an MVS Tape Manager, Prism-CS can be used to automatically generate JCL utility streams to copy the VSE tape data sets to the new environment.

Data Bases

Data bases are normally transferred from VSE to MVS using the corresponding unload and reload utility programs and intermediate tape storage. However, the format of some non-IBM data bases is compatible between VSE and MVS; these data bases can be transferred "in-place" to eliminate the delay inherent to tape transfer procedures. "In-place" transfer, which requires DASD to be shared between VSE and MVS, can be combined with the DASD sub-system's Snapshot or Flashcopy capabilities when they are available.

 

Sample Data Transfer JCL (XFERD3)

The VSE and MVS sample job streams below were automatically generated by the Prism-CS Data Transfer Utilities. These jobs represent the data transfer technique most-often used in recent conversion projects based on Prism-CS. Note that the two jobs below only transfer six files which makes them a very small example. In recent projects, data transfer jobs processed hundreds or thousands of files.

Both job streams were entirely generated by a COBOL sample exit routine which is only 600 lines long and can be easily tailored to comply with local requirements. This exit routine includes additional flexibility to use shared DASD instead of tape as intermediate storage, as well for segmenting the data transfer job-streams into multiple "batches" based on user-selected criteria, such as file size, catalog, on-line usage, etc.

The XFERD3 utility programs (XFERD3V in VSE and XFERD3M in MVS) offer enhancements for performance and error recovery. In 2006, a large conversion project in Asia used XFERD3 to transfer 7500 mostly VSAM-managed VSE files to z/OS in about five hours using a handful of 3490E and 3590 tape volumes.

VSE disk files records can be compressed by VSAM, VSE or a vendor product. XFERD3V always reads records in uncompressed format which allows them to be properly restored into MVS data sets.

Sample Data Transfer JCL (XFERD3V) - VSE JCL

The sample VSE JCL below consists of a single-step job which unloads six selected data files from disk to 3490E tape using the Prism-CS XFERD3V utility. The corresponding MVS JCL allocates MVS DASD data sets and reloads the data from tape to DASD.

* $$ JOB JNM=DEFAULT,CLASS=A,DEST=VSEPROD
/*
// JOB DEFAULT   Files=00006   Tracks=00003531
/*
// LIBDEF PHASE,SEARCH=XFERD3V.CIL
// UPSI 001 TAPE,NOCOMPRESS,SPANNED
// ASSGN SYS005,3490E
// TLBL TAPEOUT,'XFERD3V.DEFAULT',30
/*
// DLBL PRMASN,'BI040.PRM.ASN.INT.FILE',,SD				000150 (see note, below)
// EXTENT ,PS0244
// DLBL EOMDATE,'EOM.DATE.FILE',,SD					000200
// EXTENT ,POOL01
// DLBL FTPIN1,'FCDSTTR1.FILE',,SD					000400
// EXTENT ,PS0244
// DLBL FPRAMAT,'FPRA.MATURITY.FILE',,VSAM,CAT=PV0245			000001
// DLBL GLCKREG,'GL.CK.REGIS',,VSAM,CAT=PV0241				001100
// DLBL SISUBM,'SUBMIT.MASTER.FILE',,VSAM,CAT=PV0352			001680
/*
// EXEC XFERD3V,SIZE=AUTO
PRMASN,SAM,FB,00266,07980		    000150    00000150
EOMDATE,SAM,FB,00022,00220		    000200    00000350
FTPIN1,SAM,VB,00090,09000		    000400    00000750
FPRAMAT,KSDS				    000001    00000751
GLCKREG,KSDS				    001100    00001851
SISUBM,KSDS				    001680    00003531
/*
// MTC RUN,SYS005
/&
* $$ EOJ 

Note: The number in positions 73-78 of each DLBL statement is the size (in tracks) of the corresponding file.

Sample Data Transfer JCL (XFERD3M) - MVS JCL

The MVS JCL, which is generated at the same time as the VSE JCL above, is made up of six job steps:

  1. CLEANUP - Simple IEFBR14 step to delete existing data sets.
  2. DEFINECL - IDCAMS DEFINE commands to create VSAM clusters, using definitions gathered from application job streams by the JCL Translator, or generated by a Prism-CS utility program from VSE/VSAM Catalog listings.
  3. ALLOCATE - IEFBR14 to allocate non-VSAM data sets.
  4. RESTORE - Restore the data from the tape created in VSE into the VSAM and non-VSAM data sets created in the DEFINECL and ALLOCATE steps. This job step executes the XFERD3M utility program.
  5. AIXPATH - IDCAMS DEFINE ALTERNATEINDEX and DEFINE PATH commands for objects associated with the VSAM clusters which were defined and restored in previous steps.
  6. BLDIDX - IDCAMS BLDINDEX commands to build alternate indexes.
//DEFAULT  JOB (ACCT#),'XFERD3M.DEFAULT ',
//*RESTART=DEFINECL,  DEFINE VSAM CLUSTERS
//*RESTART=ALLOCATE,  ALLOCATE NON-VSAM DATA SETS
//*RESTART=RESTORE,   RESTORE DATA SETS
//*RESTART=AIXPATH,   DEFAIX/DEFPATH
//*RESTART=BLDIDX,    BLDINDEX
// NOTIFY=&SYSUID,REGION=6M,
// CLASS=A,MSGCLASS=X,COND=(4,LT)
//*
//*    DEFAULT   Files=00006   Tracks=00003531
//*
//CLEANUP EXEC PGM=IEFBR14						step 1
//PRMASN   DD DSN=MVS.BI040.PRM.ASN.INT.FILE,DISP=(MOD,DELETE),
//             SPACE=(1,0)
//EOMDATE  DD DSN=MVS.EOM.DATE.FILE,DISP=(MOD,DELETE),SPACE=(1,0)
//FTPIN1   DD DSN=MVS.FCDSTTR1.FILE,DISP=(MOD,DELETE),SPACE=(1,0)
//FPRAMAT  DD DSN=MVS.FPRA.MATURITY.FILE,DISP=(MOD,DELETE),SPACE=(1,0)
//GLCKREG  DD DSN=MVS.GL.CK.REGIS,DISP=(MOD,DELETE),SPACE=(1,0)
//SISUBM   DD DSN=MVS.SUBMIT.MASTER.FILE,DISP=(MOD,DELETE),SPACE=(1,0)
//*
//DEFINECL EXEC PGM=IDCAMS						step 2
//SYSPRINT DD SYSOUT=*

 DEF CL(NAME(MVS.FPRA.MATURITY.FILE) SPEED VOL(PV0245) RECORDS(50 10) -
   CISZ(1024) KEYS(36 0) SHR(2) RECSZ(80 80))
 IF MAXCC > 4 THEN CANCEL ;

 DEF CL(NAME(MVS.GL.CK.REGIS) SPEED VOL(PV0241) RECORDS(100000 5000) -
   RECSZ(550 550) FSPC(14 19) KEYS(9 30) SHR(2)) DATA(CISZ(4096))
 IF MAXCC > 4 THEN CANCEL ;

 DEF CL(NAME(MVS.SUBMIT.MASTER.FILE) SPEED VOL(PV0352) -
   RECORDS(210000 10000) FSPC(10 15) BUFSP(12000) SHR(4 3) KEYS(7 0) -
   RECSZ(400 400)) DATA(CISZ(4096))
 IF MAXCC > 4 THEN CANCEL ;
/*
//ALLOCATE EXEC PGM=IEFBR14						step 3
//*
//PRMASN   DD DSN=MVS.BI040.PRM.ASN.INT.FILE,DISP=(,CATLG),
// RECFM=FB,LRECL=00266,DSORG=PS,
// SPACE=(TRK,(0150,0015))
//*
//EOMDATE  DD DSN=MVS.EOM.DATE.FILE,DISP=(,CATLG),
// RECFM=FB,LRECL=00022,DSORG=PS,
// SPACE=(TRK,(0200,0020))
//*
//FTPIN1   DD DSN=MVS.FCDSTTR1.FILE,DISP=(,CATLG),
// RECFM=VB,LRECL=00090,DSORG=PS,
// SPACE=(TRK,(0400,0040))
//*
//RESTORE EXEC PGM=XFERD3M						step 4
//STEPLIB  DD DSN=PRISMCS.LOCAL.EXITLIB,DISP=SHR
//         DD DSN=GSFSOFT.PRISM-CS.LOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//TAPEIN   DD DSN=XFERD3V.DEFAULT,
// UNIT=TAPE,VOL=SER=(123456)
//*
//PRMASN   DD DSN=MVS.BI040.PRM.ASN.INT.FILE,DISP=OLD
//EOMDATE  DD DSN=MVS.EOM.DATE.FILE,DISP=OLD
//FTPIN1   DD DSN=MVS.FCDSTTR1.FILE,DISP=OLD
//FPRAMAT  DD DSN=MVS.FPRA.MATURITY.FILE,DISP=OLD
//GLCKREG  DD DSN=MVS.GL.CK.REGIS,DISP=OLD
//SISUBM   DD DSN=MVS.SUBMIT.MASTER.FILE,DISP=OLD
//*
//AIXPATH EXEC PGM=IDCAMS						step 5
//SYSPRINT DD SYSOUT=*

 DEL MVS.GL.CK.REGIS.ALTNDX AIX
 SET MAXCC=0
 DEF AIX(NAME(MVS.GL.CK.REGIS.ALTNDX) SPEED REL(MVS.GL.CK.REGIS) -
   KEYS(39 0) RECSZ(53 53) RECORDS(100000 5000) UNQK CISZ(4096) -
   VOL(PV0241) SHR(2))
 DEF PATH(NAME(MVS.GL.CK.REGIS.PATH) PENT(MVS.GL.CK.REGIS.ALTNDX))
 IF MAXCC > 4 THEN CANCEL ;

 DEL MVS.GL.CK.REGIS.ALTNDX2 AIX
 SET MAXCC=0
 DEF AIX(NAME(MVS.GL.CK.REGIS.ALTNDX2) SPEED REL(MVS.GL.CK.REGIS) -
   KEYS(20 51) RECSZ(34 34) RECORDS(100000 5000) UNQK UPG CISZ(4096) -
   VOL(PV0241) SHR(2))
 DEF PATH(NAME(MVS.GL.CK.REGIS.PATH2) PENT(MVS.GL.CK.REGIS.ALTNDX2))
 IF MAXCC > 4 THEN CANCEL ;

 DEL MVS.SUBMIT.MASTER.POLNO.AIX AIX
 SET MAXCC=0
 DEF AIX(NAME(MVS.SUBMIT.MASTER.POLNO.AIX) SPEED -
   REL(MVS.SUBMIT.MASTER.FILE) KEYS(9 310) VOL(PV0352) -
   RECORDS(210000 10000) RECSZ(50 50) SHR(4 3))
 DEF PATH(NAME(MVS.SUBMIT.MASTER.POLNO.AIX.PATH) -
   PENT(MVS.SUBMIT.MASTER.POLNO.AIX))
 IF MAXCC > 4 THEN CANCEL ;
/*
//*
//BLDIDX  EXEC PGM=IDCAMS						step 6
//SYSPRINT DD SYSOUT=*
//GLCKREG  DD DSN=MVS.GL.CK.REGIS,DISP=OLD,AMP='BUFSP=500000'
//GLCKREG1 DD DSN=MVS.GL.CK.REGIS.ALTNDX,DISP=OLD,AMP='BUFSP=500000'
//GLCKREG2 DD DSN=MVS.GL.CK.REGIS.ALTNDX2,DISP=OLD,AMP='BUFSP=500000'
//SISUBM   DD DSN=MVS.SUBMIT.MASTER.FILE,DISP=OLD,AMP='BUFSP=500000'
//SISUBM01 DD DSN=MVS.SUBMIT.MASTER.POLNO.AIX,DISP=OLD,
//	AMP='BUFSP=500000'

 BLDINDEX INFILE(GLCKREG ) OUTFILE(GLCKREG1 GLCKREG2) ;
 IF MAXCC > 0 THEN CANCEL ;

 BLDINDEX INFILE(SISUBM  ) OUTFILE(SISUBM01) ;
 IF MAXCC > 0 THEN CANCEL ;
/*
// 

Search key-words: MVS OS/390 os390 z/OS zOS disk tape transfer data-base SAM DAM VSAM convert labels vse z/vse zvse blp nl ltm over-ride override fast cut-over rapid cutover quick switchover