Monday, September 12, 2011

IDCAMS - Repro Command

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 article 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.

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
The below example 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.

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)
/*

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)
/*

REPRO Examples
The below example 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.

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)
/*
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.

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)

Thursday, June 30, 2011

ISPF - TIP #020

Here is another tip on ISPF 3.4 option.
From the ISPF 3.4 option listing, I can directly Edit/Browse/view the member without listing all the members and then select the particular member.
Solution:
To do that, In the Line command issue, E / (member)use for Browse (B) and view (V) Command - Enter "/" to select action Message Volume

ISPF - TIP #019

I have data which is of length 160. For some reasons, I want to wrap the data in each record to 80characters and have the next 80 characters in the next line. So basically what I am looking for is ,“Is there command similar to Wordwrap (as in Notepad or MS WORD) in mainframe?”
Solution:
Yes, with ISPF, one can wrap the data as required.To do that,
1.Open the dataset in ISPF EDIT mode.
2.In the first line, issue the line command: TF80 (as in this case I want to wrap to 80 chars perline)
3.All the subsequent lines will wrap to 80 chars per line.

ISPF - TIP #018

Is there an easy way to search a member in Multiple PDS?


Solution:


Go to 3.4 (where all the datasets will be displayed) .


In the Command line type ==> M memname. For example: M sortpgm


This command will not work for the migrated PDS.


So ensure all the PDS are inDisk.Now the message "MEMBER(S): memname found" will apppear in the right side ofthe panel.

ISPF - TIP #017

I have to compare one input file field with one output file field.
The input file field in is column1 to 10 and the output file field is in column 40 to 50.
How can I do it?
Solution:
1. Use the standard 3.13 ISPF option. In the same screen itself, in the command line issue, E
2. then type,
CMPCOLN 40:50
CMPCOLO 1:10
3. press PF3 and exit
4.In the New dataset , type in the output dataset
5. In the Old dataset , type in the input dataset

ISPF - TIP #016

Here is a one simple one.....



I want to search a string like 'abc' (including quote).In my pgm there may be more abc strings.



But i don't want to retrieve all of them.i need the abc enclosed with quotes.



How to search is in 3.14 option?



Solution:



In the ISPF 3.14 , search with ‘’’abc’’’ string.(i.e. with 3 quotes at both sides of the string)

Tuesday, June 21, 2011

Abend s322!!

Abend is a error that happens while we are running a job. There are so many abends which may come when we are running a job. This article discusses about the Abend code s322.

Abend s322 occurs when the job doesn't end within the given CPU time. CPU time is the time which we specify in the TIME attribute of a job card.

For example, if we give TIME =(5,0) i.e 5 minutes and 0 seconds. If the job doesn't end within 5 minutes, then Abend 322 will occur as a result of it.

Solution:

To avoid this Abend, always specify TIME=NOLIMIT in the job card. This will allow the job to take the maximum CPU time to complete a job.