Académique Documents
Professionnel Documents
Culture Documents
Table of Contents
Examples of GDG's 6
Defining VSAM 7
IEFBR14 16
SORT Examples 18
Fileaid 24
JCL Examples of DD Statements for Existing data
VSAM
//ddname DD DSN=dataset-name,DISP=SHR
Example:
//INFILE DD DSN=MY.DATASET.DATA,DISP=SHR
“SEQUENTIAL”
File is not present.
//ddname DD DUMMY,
// DCB=(LRECL=rec-len,BLKSIZE=blk-size,RECFM=rec-format)
Example:
//INFILE DD DUMMY,
// DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
Example:
//INFILE DD *
Linda
Ellen
/*
Example:
//INFILE DD DSN=MY.DATASET.DATA(0),DISP=SHR
Example:
//INFILE DD DSN=MY.DATASET.DATA(M1),DISP=SHR
Example:
//INFILE DD DSN=&&TEMP,DISP=(OLD,DELETE)
Sample DD Statements for Creating data
VSAM
//ddname DD DSN=dataset-name,DISP=SHR
Example:
//INFILE DD DSN=MY.DATASET.DATA,DISP=SHR
“SEQUENTIAL”
Example:
//INFILE DD DUMMY,
// DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
Spooled to printer
//ddname dd SYSOUT=printer-class
Example:
//OUTFILE DD SYSOUT=*
Example:
//OUTFILE DD DSN=MY.DATASET.DATA,DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(TRK,1)
Tape, non-gdg.
//ddname DD DSN=dataset-name,DISP=(NEW,CATLG,DELETE),
// UNIT=tapeunit
//* other parameters may be required by your company
Example:
//ddname DD DSN=MY.DATASET.DATA,DISP=(NEW,CATLG,DELETE),
// UNIT=TAPE
//* other parameters may be required by your company
Example:
//OUTFILE DD DSN=MY.DATASET.DATA(+1),DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(TRK,1),
// DCB=MODEL.DSCB optional at some companies. find its name
Disk, new or existing PDS member. Existing member will be overwritten
//ddname DD DSN=dataset-name(member-name),DISP=SHR
Example:
//OUTFILE DD DSN=MY.DATASET.DATA(M1),DISP=SHR
Temporary disk..
//ddname DD DSN=&&dataset-name,DISP=(NEW,PASS,DELETE),
// UNIT=diskunit,SPACE=(TRK,1)
Example:
//OUTFILE DD DSN=&&TEMP,DISP=(NEW,PASS,DELETE),
// UNIT=SYSDA,SPACE=(TRK,1)
Example:
//OUTFILE DD UNIT=SYSDA,SPACE=(TRK,1)
Tape, gdg.
//ddname DD DSN=dataset-name(+1),DISP=(NEW,CATLG,DELETE),
// UNIT=tapeunit,
// DCB=model-dscb optional at some companies
Example:
//OUTFILE DD DSN=MY.DATASET.DATA(+1),DISP=(NEW,CATLG,DELETE),
// UNIT=TAPE,
// DCB=MODEL.DSCB optional at some companies. find out it
Examples of GDG’s
//* GDG5DEL THIS WILL REMOVE THE GD GROUP FROM THE CATALOG
//* BE SURE TO DO GDG4DEL FIRST
//GDG5DEL EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE userid.SAMPLE.GDG.BASE GDG
/*
Defining VSAM
DEFINE CLUSTER -
NAME(userid.VSAM.KSDS) -
CYLINDERS(1,1) -
KEYS(10,0) /* length displacement */ -
RECORDSIZE(80,80) /* avg max */ -
INDEXED) /* ksds */
/*
UNIQUE the cluster will not be part of a dataspace containing other clusters
SUBALLOCATE opposite of unique
REPLICATE copy each index record on the track as many times as it will fit
NOREPLICATE opposite of unique
REUSE if there is data in the cluster, a repro or load will clobber the
existing data
NOREUSE can do only one repro or load on this cluster
DEFINE CLUSTER +
NAME(userid.VSAM.ESDS) -
CYLINDERS(1,1) -
RECORDSIZE(80,80) -
NONINDEXED)
//* DEFINE A VSAM RRDS
//DEFRRDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE (userid.VSAM.RRDS) CLUSTER
DEFINE CLUSTER -
NAME(userid.VSAM.RRDS) -
CYLINDERS(1,1) -
RECORDSIZE(80,80) -
NUMBERED)
/*
/*
//INDD DD * for KSDS, records must be in order
ELENA
LINDA
NADIA
SUSAN
/*
Examples of IDCAMS to Print
Example of JCL to print the file ABCCO.TEST.DATA (could be sequential, VSAM, PDS
member)
Notes: Change CHARACTER to DUMP in order to print in both character and hex
Change CHARACTER to HEX in order to print in hex
Examples of IDCAMS to copy
Example of JCL to copy the file ABCCO.TEST.DATA (could be sequential, VSAM, PDS
member)
to the existing file ABCCO.SAMPLE.DATA
Notes:
IDCAMS will copy any of the following types:
Sequential
PDS member
VSAM
ISAM
to any of the following:
Sequential
PDS member
VSAM
ISAM
This JCL will clobber any data that already exists in the output file.
However, if the output file is VSAM and you want to clobber it,
you must add the keyword REUSE, for example:
REPRO INFILE(INFILE) OUTFILE(OUTFILE) REUSE
and you must have defined the VSAM cluster with REUSE.
The ISPF Search. Lower overhead, won’t tie up your terminal during search.
The world’s safest compress for PDS’s. Can’t destroy your library. Creates a backup
first. If the compress works, it deletes the backup.
If the compress fails, it keeps the backup.
//* to sort
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
* sort by name
SORT FIELDS=(10,9,CH,A),DYNALLOC=(SYSDA,6),FILSZ=E2000
/*
//* END OF JOB
//* COPY. START WITH 4TH RECORD. STOP AFTER PRINTING 2 RECORDS
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY,SKIPREC=3,STOPAFT=2 STOP AFTER PRINTING 2
/*
//* COPY BUT ONLY IF LITERAL CT IS IN COLUMN 19 OF DATA
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY COPY BUT
INCLUDE COND=(19,2,CH,EQ,C'CT') ONLY IF CT IN COL 19
/*
//* COPY BUT NOT IF LITERAL CT IS IN COLUMN 19 OF INPUT
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY COPY BUT
OMIT COND=(19,2,CH,EQ,C'CT') NOT IF CT IN COL 19
/*
//*
//*
//* FILEAID TO DROP LINES
//* IN: SEQ
//* OUT: SEQ
//* COPY A FILE BUT DROP LINES WITH A 1 IN POSITION 1
//* OR MINUTES EXECUTION TIME ANYWHERE ON THE LINE
//FILEAI1 EXEC PGM=FILEAID
//SYSPRINT DD SYSOUT=*
//SYSLIST DD SYSOUT=*
//DD01 DD *
1 DROP THIS RECORD
X DON'T DROP THIS ONE
Z MINUTES EXECUTION TIME WILL BE DROPPED
/*
//DD01O DD SYSOUT=*
//SYSIN DD *
$$DD01 DROP OUT=0,
IF=(01,EQ,C'1'),
ORIF=(01,00,C'MINUTES EXECUTION TIME')
/*
//*
//* FILEAID TO COPY MEMBERS CONTAINING A DATA STRING
//* IN: PDS
//* OUT: PDS
//* COPY ONLY MEMBERS CONTAINING PGM=MYPROG ANYWHERE ON THE LINE
//* AND // AND EXEC ON THE SAME LINE
//FILEAI2 EXEC PGM=FILEAID
//SYSPRINT DD SYSOUT=*
//SYSLIST DD SYSOUT=*
//DD01 DD DATA
DONT COPY ME
// EXEC COPY ME PGM=MYPROG
NO COPY ME
/*
//DD01O DD DISP=(NEW,CATLG), <-the output
// UNIT=SYSDA,LRECL=80,RECFM=FB,BLKSIZE=27920,
// SPACE=(TRK,(1,1,10),RLSE)
//SYSIN DD *
$$DD01 COPYMEM OUT=0,
IF=(01,00,C'PGM=MYPROG'),
AND=(01,03,C'//'),AND=(01,00,C'EXEC')
/*
//*
//*
//* Fabat02.jcl sample JCL for fileaid batch
//* COPY ALL RECORDS. IF THERE'S A 8 IN COLUMN 5, PUT A G IN COL 5
//*
//STEP1 EXEC PGM=FILEAID
//SYSPRINT DD SYSOUT=*
//SYSLIST DD SYSOUT=*
//SYSTOTAL DD SYSOUT=*
//DD01 DD *
000006 RECORD 1 LARRY
000054 RECORD 2 CURLY
000041 RECORD 3 MOE
000028 RECORD 4 LOU
000082 RECORD 5 LAUREL
/*
//DD01O DD SYSOUT=*
//SYSIN DD *
$$DD01 COPYALL IF=(5,EQ,C'8'),R=(5,C'G')
/*
//* COPY ALL RECORDS. IF THERE'S A 8 IN COLUMN 5, PUT A G IN COL 5
//*
//* FILEAID TO COPY A FILE
//* IN: SEQ
//* OUT: SEQ
//* JUST PLAIN COPY
//FILEAI3 EXEC PGM=FILEAID
//SYSPRINT DD SYSOUT=*
//SYSLIST DD SYSOUT=*
//DD01 DD *
GABE
LINDA
//DD01O DD SYSOUT=*
//SYSIN DD *
$$DD01 COPYALL
/*
//*
//*
//* FILEAID TO COPY A FILE
//* PUT AN EXCLAMATION IN POSITION 1
//* SHIFT THE REMAINDER OF THE LINE OVER BY 1
//* IN: SEQ
//* OUT: SEQ
//FILEAI4 EXEC PGM=FILEAID
//SYSPRINT DD SYSOUT=*
//SYSLIST DD SYSOUT=*
//DD01 DD *
HELLO THERE
AND A GOOD DAY TO YOU
//DD01O DD SYSOUT=*
//SYSIN DD *
$$DD01 COPYALL MOVE=(1,C'!'),
MOVE=(2,79,1)
/*
//*
//* FILEAID TO COPY A FILE AND CHANGE A DATA STRING
//* REPLACES ALL OCCURENCES OF ABCD WITH WXYZ
//* IN: SEQ
//* OUT: SEQ
//FILEAI5 EXEC PGM=FILEAID
//SYSPRINT DD SYSOUT=*
//SYSLIST DD SYSOUT=*
//DD01 DD *
HELLO NO CHANGE HERE
ABCD CHANGE ME
ABCDEF CHANGE ME TOO
//DD01O DD SYSOUT=*
//SYSIN DD *
$$DD01 COPYALL REPLALL=(1,0,C'ABCD',C'WXYZ')
/*
//*
//*
//*
//* fileaid to copy a library
//* in: pds
//* out: pds
//* just plain copy a library, all members
//FILEAID EXEC PGM=FILEAID
//SYSPRINT DD SYSOUT=*
//SYSLIST DD SYSOUT=*
//DD01 DD DISP=SHR, <-the input
// DSN=the.input.dsn
//DD01O DD DISP=(NEW,CATLG), <-the output
// UNIT=SYSDA,LIKE=the.input.dsn,
// SPACE=(TRK,(1,1,10),RLSE)
//SYSIN DD *
$$DD01 COPYMEM,OUT=0
/*