0% found this document useful (0 votes)
135 views10 pages

Command of IDCAMS Repro - : Copying A Data Set Note

This document provides information on using the IDCAMS/REPRO utility to copy data sets in VSAM. It describes how REPRO can be used to copy VSAM and non-VSAM data sets, as well as individual members of partitioned data sets. The document includes examples of JCL and REPRO commands to copy VSAM data sets to sequential data sets and between VSAM data sets for backup purposes. It also discusses using REPRO to copy a subset of records by specifying SKIP and COUNT parameters.

Uploaded by

Sampad Sekhar
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
135 views10 pages

Command of IDCAMS Repro - : Copying A Data Set Note

This document provides information on using the IDCAMS/REPRO utility to copy data sets in VSAM. It describes how REPRO can be used to copy VSAM and non-VSAM data sets, as well as individual members of partitioned data sets. The document includes examples of JCL and REPRO commands to copy VSAM data sets to sequential data sets and between VSAM data sets for backup purposes. It also discusses using REPRO to copy a subset of records by specifying SKIP and COUNT parameters.

Uploaded by

Sampad Sekhar
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

Command of IDCAMS

REPRO –
Copying A Data Set

Note

The CFILE utility, which was used to copy sequential and ISAM data sets, is not supported.
Neither are ISAM data sets. All users with ISAM data sets should convert them to VSAM.

This document describes how to use IDCAMS/REPRO to copy a data set. It is intended as a
replacement for CFILE and is not intended as complete documentation on VSAM data sets or
the IDCAMS utility. For detailed information on IDCAMS and using VSAM data sets, see the
documentation section below.

IDCAMS is an IBM utility that allows you to create and manipulate VSAM data sets. It has
several commands. You can use the REPRO command of IDCAMS to copy VSAM and non-
VSAM data sets, VSAM clusters, and alternate indexes.

You cannot use REPRO to copy an entire partitioned data set (PDS) because REPRO does not
copy the information in the directories. You can, however, use REPRO to copy individual
members.

The IBM IEBCOPY utility should be used to copy an entire PDS.

The REPRO Command

The general form of the REPRO command is as follows:

REPRO parameter parameter -


parameter -
parameter

Parameters may be separated by either commas or blanks. You can continue the REPRO
statement by coding a hyphen (-) as the last character of a line. The command and parameters
may be typed anywhere betweeen columns 2-72.

JCL for Using IDCAMS and REPRO

Figure 18 shows the JCL for a basic job setup to access IDCAMS. The INFILE parameter names
the DD statement for the data set that is to be copied. The OUTFILE parameter names the DD
statement describing the output or target data set. You would replace "indd" and "outdd" with
DD names of your own choosing.
Figure 17. JCL to Use IDCAMS and the REPRO Command

//COPY JOB ,'your name',CLASS=class,TIME=(mm,ss),LINES=lines


/*ROUTE PRINT node.location
// EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//indd DD DSN= ... (describes the input data set)
//outdd DD DSN= ... (describes the output data set)
//SYSIN DD *
REPRO -
INFILE(indd) -
OUTFILE(outdd)
/*

REPRO Examples

Figure 19 shows how to use REPRO to copy a VSAM data set to a sequential data set. You could
use this to make a sequential backup copy of your VSAM data set. In this example, assume that
your VSAM data set has variable-length records. The maximum record size is 100 bytes and you
have embedded keys. When you specify your LRECL and BLKSIZE for your output data set,
make sure they are at least 4 bytes longer than the longest record in your VSAM data set.

Figure 18. Using REPRO to Copy a VSAM Data Set to A Sequential Data Set

//COPY JOB ,'your name',CLASS=class,TIME=(mm,ss),LINES=lines


/*ROUTE PRINT node.location
// EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//VSAM DD DSN=UF.userid.VSAM.DATASET,DISP=OLD
//SEQ DD DSN=UF.userid.SEQ.BACKUP,UNIT=SYSDA,
// SPACE=(TRK,(10,10)),
// DISP=(NEW,CATLG),
// DCB=(LRECL=104,BLKSIZE=1004,RECFM=VB)
//SYSIN DD *
REPRO -
INFILE(VSAM) -
OUTFILE(SEQ)
/*

Figure 20 shows an example of using REPRO to make a VSAM backup of your original VSAM
data set. This example assumes that you have already created the backup data set (using
IDCAMS). The OLD DD name defines your original VSAM data set. The NEW DD name defines
the output data set.

Figure 19. Using REPRO to Backup a VSAM Data Set

//COPY JOB ,'your name',CLASS=class,TIME=(mm,ss),LINES=lines


/*ROUTE PRINT node.location
// EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//OLD DD DSN=UF.userid.VSAM.DATASET,DISP=OLD
//NEW DD DSN=UF.userid.VSAM.BACKUP,DISP=OLD
//SYSIN DD *
REPRO -
INFILE(OLD) -
OUTFILE(NEW)
/*

Optional Keywords for the REPRO Command

Suppose you want only to make a backup of part of your data set. You can use the SKIP(n) and
COUNT(m) keywords on the REPRO command to delimit the records to be copied. The following
form of the REPRO command would copy the input data set beginning with the 100th record and
copy 500 records.

REPRO -
INFILE(VSAM) -
OUTFILE(SEQ) -
SKIP(99) -
COUNT(500)

Creating an Alternate Index for an Existing KSDS

You can create an alternate index over an existing KSDS by using IDCAMS using JCL. If
the data set already has an alternate index that is defined, it is erased and then redefined.
After the alternate index is built, SAS is invoked to read the data set using the alternate
index and to write the records to the procedure output file.

//DALTINDX JOB accounting information


//*
//* Define an alternate key for an existing KSDS.
//*
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//*
//* If an alternate index already exists, delete it.
//* Then define the alternate index.
//*
//SYSIN DD *
DELETE (dsname.KSDS.STUDENT.ALTINDEX) PURGE ALTERNATEINDEX
IF LASTCC=8 THEN SET MAXCC=0
DEFINE ALTERNATEINDEX (name(dsname.KSDS.STUDENT.ALTINDEX ) -
KEYS(2 69) VOLUMES(xxxx) RECSZ(34 34) -
RELATE(dsname.KSDS.STUDENT) UPGRADE -
REUSE -
NONUNIQUEKEY -
CISZ(2048) -
RECORDS(10 5))
IF MAXCC=0 THEN -
DEFINE PATH (NAME(dsname.KSDS.STUDENT.PATH ) -
PATHENTRY(dsname.KSDS.STUDENT.ALTINDEX ))
IF MAXCC=0 THEN -
BLDINDEX INDATASET(dsname.KSDS.STUDENT ) -
OUTDATASET(dsname.KSDS.STUDENT.ALTINDEX )

/*
//*
//* Invoke SAS to read the data set via the alternate index
//* defined in STEP1.
//*
//STEP2 EXEC SAS,PARM=' VSAMREAD '
//SYSUDUMP DD SYSOUT=A
//PATH DD DISP=SHR,DSN=dsname.KSDS.STUDENT.PATH
//SYSIN DD *

/* Read the KSDS via the alternate key. Write the records
*/
/* to the procedure output file, putting the observation
number */
/* before each observation.
*/

data one;
infile path;
input;
file print;
put _n_ @5 _infile_;
/*
//

To access the data set by the alternate index, you must have a DD statement that
references the data set name in the DEFINE PATH statement. Also note that the STEP2
EXEC statement that invokes SAS specifies the SAS system option VSAMREAD, which is
needed only if your installation's default value for this option is NOVSAMREAD.

Calculating Record Size

The AMS RECORDSIZE parameter requires the average and maximum record size, in
bytes, of the alternate index record. When you calculate the maximum record size, if the
alternate index record spans control intervals, the RECORDSIZE parameter can be larger
than the CONTROLINTERVALSIZE. Use the following formula to calculate the maximum
record size of spanned records:

MAXLRECL=CI/CA x (CISZ - 10)

MAXLRECL is the maximum spanned record size. CI/CA represents the number of control
intervals per control area. CA is the number of control areas. CISZ is the quantity control
interval size.

Use the following formulas to determine the average size of the alternate index record when
the alternate index supports ESDS or KSDS.

ESDS:
RECSZ= 5 + AIXKL + (n x 4)
KSDS:
RECSZ= 5 + AIXKL + (n x BCKL)

 AIXKL is the alternate-key length. (See the KEYS


parameter.)
 BCKL is the base cluster's prime-key length. (You can issue
the AMS LISTCAT command to determine the base cluster's
prime-key length.)

 n=1 when the UNIQUEKEY parameter is specified. (In this


case, RECSZ is also the maximum record size.)

 n is equal to the number of base cluster records that have


the same alternate index key when NONUNIQUEKEY is
specified.

In the preceding examples, the average record size for alternate key STATE was calculated
as follows:

5 + 2 + (3 x 4)= 19 for the ESDS


5 + 2 + (3 x 9)= 34 for the KSDS

Specifying the same value for average and maximum identifies the records as fixed length.
See IBM documentation for more information on calculating record size.

VSAM Data Access Types

Sequential Access

In sequential access, a series of records is retrieved in sequence. Sequence has a different


meaning for each of the three VSAM data set organizations:

 In an ESDS, sequential access means that a record is


retrieved by its entry sequence.

 In a KSDS, sequential access means that a record is


retrieved by its key sequence.

 In an RRDS, sequential access means that a record is


retrieved by its relative-record sequence.

In all three cases, a record is located by its position relative to the last record accessed.
Direct Access

Introduction to Direct Access

With direct access, data storage or retrieval depends only on the location of the record and
not on a reference to records previously accessed. Each record is stored or retrieved
directly, according to its logical address (its key or its relative-record number, or RRN), or
its address relative to the beginning of the data set (relative-byte address, or RBA). Thus,
there are two direct access modes: keyed by key or relative-record number, and
addressed by relative-byte address.

Keyed Direct Access

In keyed direct access, there are two methods in which records are retrieved or stored:

 an index that relates the record's key to its relative location in


the data set.

 a relative-record number (RRN) that identifies the record that


is wanted. The RRN is relative to the first record in the data
set.

SAS supports keyed access to logical records in both KSDS and RRDS data sets. Keyed
access to data records in KSDS data sets is by key; in RRDS data sets, keyed access is by
the relative-record number.

Addressed Direct Access

In addressed direct access, the entire data set is treated as a continuous stream of bytes. A
record is retrieved and stored directly by its address relative to the beginning of the data set
(relative-byte address, or RBA), which is dependent on the record's location relative to
records previously accessed. SAS supports addressed access to logical records in ESDS
and KSDS data sets. It also supports addressed access (read-only) to control intervals in all
three data set types.

Keyed Direct Access with an Alternate Index

An alternate key index, commonly called an alternate index (AIX), provides another way to
access a VSAM data set. The advantage of an alternate index is that you effectively
reorganize the data set instead of keeping separate copies organized in different ways for
different applications. Suppose you have a KSDS with the employee number as the prime
key. By building alternate indexes using employee names and department numbers, you
can access the same data set in three ways: by employee name, by employee number, or
by department number. The alternate key does not have to be unique; that is, there can be
more than one record with the same alternate key.

The following figure illustrates an alternate index with nonunique keys over a KSDS. The
base cluster records are sequenced by employee number, which is the prime key. The
alternate index records are sequenced by department number, which is the alternate key.
Each alternate index data record points to the prime key (employee number) in the base
cluster. Note that because the alternate keys are nonunique, there can be multiple base
records with the same department number.

KSDS with Alternate Index (Nonunique Alternate Keys)


Alternate indexes can be built over a KSDS or an ESDS. You define and build an alternate
index using the IBM utility program Access Method Services (AMS). The data set over
which an alternate index is built is called the base cluster. The alternate key can be any field
having a fixed length and a fixed position within each record. The alternate index itself is a
KSDS. The data component of an alternate index contains the alternate key, followed by a
pointer to the appropriate record or records in the base cluster. In a KSDS, the pointer is the
prime key; in an ESDS, the pointer is the RBA of the base record or records.

A path logically relates a base cluster and one of its alternate indexes. You define and
name a path to access the base cluster records through a specific alternate index with
AMS. See Using Alternate Indexes for VSAM Data Sets and IBM documentation for more
information on defining alternate indexes.

Skip Sequential Access

A combination of both direct and sequential access can be used in a two-step process
called skip sequential access. The process uses keyed direct access to find a starting point.
After the initial record is obtained, additional records are retrieved sequentially. Skip
sequential processing can be used with a KSDS, RRDS, and, if it has an alternate index, an
ESDS.
Skip sequential processing is useful for the following reasons:

 Skip sequential processing can improve performance and


reduce overhead, because a simple sequential retrieval is
faster than direct retrieval.

 It enables you to find records when you know the key, RBA,
or RRN of the first record you want, but do not know the key,
RBA, or RRN of the subsequent records.

 It enables you to process the data set sequentially, starting


at a record other than the first.

You might also like