100% found this document useful (3 votes)
227 views

JCL Lab PGM

The document provides 15 examples of JCL programs for various tasks like creating temporary and permanent data sets, using restart and referback parameters, concatenating data sets, and using utilities like IEBGENER. The examples demonstrate how to write JCL to perform common data processing tasks in z/OS mainframe systems.

Uploaded by

badsoft
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
100% found this document useful (3 votes)
227 views

JCL Lab PGM

The document provides 15 examples of JCL programs for various tasks like creating temporary and permanent data sets, using restart and referback parameters, concatenating data sets, and using utilities like IEBGENER. The examples demonstrate how to write JCL to perform common data processing tasks in z/OS mainframe systems.

Uploaded by

badsoft
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 17

SAMPLE PROGRAMS:

--------------------------------------1.PROGRAM TO CREATE A PDS USING JCL.


000100 //MTPLB22J JOB 345,FRST,CLASS=A,MSGCLASS=A,MSGLEVEL=(0,0),
000200 //
NOTIFY=MTPLB22
000300 //STEP1 EXEC PGM=IEFBR14
000400 //DD1 DD DSN=MTPLB22.COBOL.SOURCE5,
000500 //
DISP=(NEW,CATLG,DELETE),
000600 //
SPACE=(TRK,(5,5,2),RLSE),
000700 //
VOL=SER=MTBLR1,
000800 //
UNIT=SYSDA,
000900 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
001100 //SYSPRINT DD SYSOUT=*
001200 //SYSIN DD DUMMY
---------------------------------------------------------------------------------2.PROGRAM TO CREAT A TEMPERORY DATA SET.
000100 //MTPLB22J JOB 345,FRST,CLASS=A,MSGCLASS=A,MSGLEVEL=(,1),
000200 //
NOTIFY=MTPLB22
000300 //STEP1 EXEC PGM=IEFBR14
000500 //DD1 DD DISP=(NEW,CATLG,CATLG),
000600 //
SPACE=(TRK,(5,5,2),RLSE),
000700 //
VOL=SER=MTBLR1,
000800 //
UNIT=SYSDA,
000900 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
001100 //SYSPRINT DD SYSOUT=*
001200 //SYSIN DD DUMMY
---------------------------------------------------------------------------------3. PROGRAM TO KNOW THE USE OF RESTART PARAMETER IN JOB CARD
STATEMENT.
000100 //MTPLB22J JOB 345,FRST,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)
000200 //
NOTIFY=MTPLB22,RESTART=STEP2
000300 //STEP1 EXEC PGM=IEFBR14
000400 //DD1 DD DSN=MTPLB22.COBOL.DUMMY,
000500 //
DISP=(NEW,CATLG,DELETE),
000600 //
SPACE=(TRK,(5,5,2),RLSE),
000700 //
VOL=SER=MTBLR1,
000800 //
UNIT=SYSDA,
000900 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
000910 //STEP2 EXEC PGM=IEFBR14
001000 //DD2 DD DSN=MTPLB22.COBOL.DUMMY1,
001010 //
DISP=(NEW,CATLG,DELETE),
001020 //
SPACE=(TRK,(5,5,2),RLSE),
001030 //
VOL=SER=MTBLR1,
001040 //
UNIT=SYSDA,
001050 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)

001100 //SYSPRINT DD SYSOUT=*


001200 //SYSIN DD DUMMY
---------------------------------------------------------------------------------4. PROGRAM TO KNOW THE USE OF REFERBACK PARAMETER IN DD
STATEMENT.
000100 //MTPLB22J JOB 345,FRST,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),
000200 //
NOTIFY=MTPLB22
000300 //STEP1 EXEC PGM=IEFBR14
000400 //DD1 DD DSN=MTPLB22.COBOL.DUMMY1,
000500 //
DISP=(NEW,CATLG,DELETE),
000600 //
SPACE=(TRK,(5,5,2),RLSE),
000700 //
VOL=SER=MTBLR1,
000800 //
UNIT=SYSDA,
000900 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
001000 //STEP2 EXEC PGM=IEFBR14
001010 //DD1 DD DSN=*.STEP1.DD1,
001100 //SYSPRINT DD SYSOUT=*
001200 //SYSIN DD DUMMY
---------------------------------------------------------------------------------5.PROGRAM TO KNOW THE USAGE OF STEPLIB AND JOBLIB.
000100 //MTPLB22J JOB 345,FRST,CLASS=A,MSGCLASS=A,
000200 //
NOTIFY=MTPLB22
000210 //JOBLIB DD DSN=MTPLB22.COBOL.DUMMY1,DISP=SHR
000300 //STEP1 EXEC PGM=IEFBR14
000400 //STEPLIB DD DSN=MTPLB22.COBOL.DUMMY1,
000500 //
DISP=SHR
001100 //SYSPRINT DD SYSOUT=*
001200 //SYSIN DD DUMMY
--------------------------------------------------------------------------------6. PROGRAM TO KNOW THE USAGE OF UTILITY 'IEBGENER' IN DD
STATEMENT.
THIS WILL CREATE TWO RECORDS IN A NEW PDS 'DUMMY1' AND INSIDE
THE MEMBER 'CBM1'
000100 //MTPLB22J JOB ,,CLASS=A,NOTIFY=MTPLB22
000200 //STEP1 EXEC PGM=IEBGENER
000300 //SYSPRINT DD SYSOUT=*
000400 //SYSUT1 DD *
000500 FIRST RECORD
000600 SECOND RECORD
000800 //SYSUT2 DD
DSN=MTPLB22.COBOL.DUMMY1(CBM1),DISP=(NEW,CATLG,CATLG),
000810 //
SPACE=(TRK,(5,5,1),RLSE),UNIT=SYSDA,VOL=SER=MTBLR1,
000820 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
000900 //SYSIN DD DUMMY
--------------------------------------------------------------------------------

7. PROGRAM TO PRINT THE OUTPUT IN REQUIRED FORMAT USING


GENERATE MAXFIELD.
000100 //MTPLB22J JOB 234,ASDF,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),
000200 //
NOTIFY=MTPLB22
000300 //STEP1 EXEC PGM=IEBGENER
000400 //SYSPRINT DD SYSOUT=*
000500 //SYSUT1 DD DSN=MTPLB22.UTILITY.TEST,DISP=SHR
000600 //SYSUT2 DD SYSOUT=*
000610 //SYSIN DD *
000700
GENERATE MAXFLDS=2
000710
RECORD FIELD=(10,1,,1),
000800
FIELD=(5,10,,15)
000900 /*
001000 //
---------------------------------------------------------------------------------IMPORTANT SHORTCUTS
hilight jcl- to highlight the jcl or cob statement in the program. commands line
command.
bnds-set the boundary for the commands. i.e. command statement will only work in
the specified columns <
>.
))n -to move block to right (n stands for the number of lines u want to select)
) -to move a single line to right.
((n- to move a block to left. (n stands for the number of lines u want to select)
( -to move a single line to left
---------------------------------------------------------------------------------8. CONCATENATION OF TWO SDS TO A NEW SDS WHICH IS CREATE IN THIS
PROGRAM
000100 //MTPLB22J JOB 345,DATACONCAT,CLASS=A,MSGCLASS=A,
000200 //
MSGLEVEL=(1,1),NOTIFY=MTPLB22
000300 //STEP1 EXEC PGM=IEBGENER
000400 //SYSUT1 DD DSN=MTPLB22.UTILITY.TEST,DISP=SHR
000500 //
DD DSN=MTPLB22.CON.CON1,DISP=SHR
000600 //SYSUT2 DD DSN=MTPLB22.OUTPUT.DATCON,DISP=(NEW,CATLG,DELETE),
000700 //
SPACE=(TRK,(5,5,),RLSE),VOL=SER=MTBLR1,
000800 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB),UNIT=SYSDA
000900 //SYSPRINT DD SYSOUT=*
001000 //SYSIN DD DUMMY
---------------------------------------------------------------------------------9. PROGRAM WHICH CAN TELL US THAT WE CAN HAVE MORE THAN JOB
STATEMENTS IN A PROGRAM.WE CAN HAVE 255 JOB STATEMENTS IN A
MEMBER. EACH JOB CAN HAVE 255 EXEC STATEMENTS AND EACH EXEC
STATEMENT CAN HAVE 3273 DD STATEMENTS.
000100 //MTPLB22J JOB 345,PGM1,CLASS=A,MSGCLASS=A,
000200 //
MSGLEVEL=(1,1),NOTIFY=MTPLB22
000300 //STEP1 EXEC PGM=IEBGENER

000400 //SYSUT1 DD *
000500 9837489783784798732984798237489723984798
000510 9837489783784798732984798237489723984798
000600 //SYSUT2 DD SYSOUT=*
000900 //SYSPRINT DD SYSOUT=*
001000 //SYSIN DD DUMMY
001100 //MTPLB22J JOB 379,PGM2,CLASS=A,MSGCLASS=A,
001200 //
MSGLEVEL=(1,1),NOTIFY=MTPLB22
001300 //STEP2 EXEC PGM=IEBGENER
001500 //SYSUT1 DD *
001600 AAAAAAAAAAAAAAAAAAAAAAA
001700 BBBBBBBBBBBBBBBBBBBBBBBB
001800 //SYSUT2 DD SYSOUT=*
002000 //SYSPRINT DD SYSOUT=*
002100 //SYSIN DD DUMMY
---------------------------------------------------------------------------------10.CONCATENATION OF TWO SDS AND PUTTING IT TO A NEW PDS WITH A
NEW MEMBER IN THE PROGRAM.
000100 //MTPLB22J JOB 345,DATACONCAT,CLASS=A,MSGCLASS=A,
000200 //
MSGLEVEL=(1,1),NOTIFY=MTPLB22
000300 //STEP1 EXEC PGM=IEBGENER
000400 //SYSUT1 DD DSN=MTPLB22.UTILITY.TEST,DISP=SHR
000500 // DD DSN=MTPLB22.CON.CON1,DISP=SHR
000600 //SYSUT2 DD
DSN=MTPLB22.OUTPUT.DATCONP(NEW),DISP=(NEW,CATLG,DELETE),
000700 //
SPACE=(TRK,(5,5,1),RLSE),VOL=SER=MTBLR1,
000800 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB),UNIT=SYSDA
000900 //SYSPRINT DD SYSOUT=*
001000 //SYSIN DD DUMMY
--------------------------------------------------------------------------------11.CONCATENATION OF TWO PDS AND PUTTING IT TO A NEW PDS WITH A
NEW MEMBER IN THE PROGRAM.
000100 //MTPLB22J JOB 345,DATACONCAT,CLASS=A,MSGCLASS=A,
000200 //
MSGLEVEL=(1,1),NOTIFY=MTPLB22
000300 //STEP1 EXEC PGM=IEBGENER
000400 //SYSUT1 DD DSN=MTPLB22.CON.TEST1(MEM1),DISP=SHR
000500 // DD DSN=MTPLB22.CON.TEST2(MEMA),DISP=SHR
000600 //SYSUT2 DD
DSN=MTPLB22.OUTPUT.DATPDA(NEW),DISP=(NEW,CATLG,DELETE),
000700 //
SPACE=(TRK,(5,5,1),RLSE),VOL=SER=MTBLR1,
000800 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB),UNIT=SYSDA
000900 //SYSPRINT DD SYSOUT=*
001000 //SYSIN DD DUMMY
--------------------------------------------------------------------------------12.CONCATENATION OF TWO PDS AND PUTTING IT TO A NEW SDS IN THE
PROGRAM.

000100 //MTPLB22J JOB 345,DATACONCAT,CLASS=A,MSGCLASS=A,


000200 //
MSGLEVEL=(1,1),NOTIFY=MTPLB22
000300 //STEP1 EXEC PGM=IEBGENER
000400 //SYSUT1 DD DSN=MTPLB22.CON.TEST1(MEM1),DISP=SHR
000500 // DD DSN=MTPLB22.CON.TEST2(MEMA),DISP=SHR
000600 //SYSUT2 DD DSN=MTPLB22.OUTPUT.DATP,DISP=(NEW,CATLG,DELETE),
000700 //
SPACE=(TRK,(5,5,),RLSE),VOL=SER=MTBLR1,
000800 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB),UNIT=SYSDA
000900 //SYSPRINT DD SYSOUT=*
001000 //SYSIN DD DUMMY
--------------------------------------------------------------------------------13. CONCATENATION OF PDS HAVING TWO MEMBERS AND ANOTHER PDS
HAVING ONLY ONE MEMBER TO A NEW SDS.
000100 //MTPLB22J JOB 345,DATACONCAT,CLASS=A,MSGCLASS=A,
000200 //
MSGLEVEL=(1,1),NOTIFY=MTPLB22
000300 //STEP1 EXEC PGM=IEBGENER
000400 //SYSUT1 DD DSN=MTPLB22.CON.TEST1(MEM1),DISP=SHR
000410 //
DD DSN=MTPLB22.CON.TEST1(MEM2),DISP=SHR
000500 // DD DSN=MTPLB22.CON.TEST2(MEMA),DISP=SHR
000600 //SYSUT2 DD DSN=MTPLB22.OUTPUT.DAT,DISP=(NEW,CATLG,DELETE),
000700 //
SPACE=(TRK,(5,5,),RLSE),VOL=SER=MTBLR1,
000800 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB),UNIT=SYSDA
000900 //SYSPRINT DD SYSOUT=*
001000 //SYSIN DD DUMMY
---------------------------------------------------------------------------------14.CONCATENATION OF PDS HAVING TWO MEMBER IN EACH TO A NEW PDS
MEMBER WITH NAME 'NEW'
000100 //MTPLB22J JOB 345,DATACONCAT,CLASS=A,MSGCLASS=A,
000200 //
MSGLEVEL=(1,1),NOTIFY=MTPLB22
000300 //STEP1 EXEC PGM=IEBGENER
000400 //SYSUT1 DD DSN=MTPLB22.CON.TEST1(MEM1),DISP=OLD
000410 //
DD DSN=MTPLB22.CON.TEST1(MEM2),DISP=OLD
000500 //
DD DSN=MTPLB22.CON.TEST2(MEMA),DISP=SHR
000510 //
DD DSN=MTPLB22.CON.TEST2(MEMB),DISP=SHR
000600 //SYSUT2 DD DSN=MTPLB22.OUTPUT.DAT(NEW),DISP=(NEW,CATLG,DELETE),
000700 //
SPACE=(TRK,(5,5,1),RLSE),VOL=SER=MTBLR1,
000800 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB),UNIT=SYSDA
000900 //SYSPRINT DD SYSOUT=*
001000 //SYSIN DD DUMMY
---------------------------------------------------------------------------------15.CONCATENATION OF PDS HAVING TWO MEMBERS AND AN SDS TO A NEW
PDS MEMBER WITH NAME AS 'DAT1(NEW)'
000100
000200
000300
000400

//MTPLB22J JOB 345,DATACONCAT,CLASS=A,MSGCLASS=A,


//
MSGLEVEL=(1,1),NOTIFY=MTPLB22
//STEP1 EXEC PGM=IEBGENER
//SYSUT1 DD DSN=MTPLB22.CON.TEST1(MEM1),DISP=OLD

000410 //
DD DSN=MTPLB22.CON.TEST1(MEM2),DISP=OLD
000500 //
DD DSN=MTPLB22.UTILITY.TEST,DISP=SHR
000600 //SYSUT2 DD DSN=MTPLB22.OUTPUT.DAT1,DISP=(NEW,CATLG,DELETE),
000700 //
SPACE=(TRK,(5,5,),RLSE),VOL=SER=MTBLR1,
000800 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB),UNIT=SYSDA
000900 //SYSPRINT DD SYSOUT=*
001000 //SYSIN DD DUMMY
---------------------------------------------------------------------------------16.CONCATENATION OF PDS HAVING TWO MEMBERS ,AN SDS AND ANOTHER
PDS WITH A MEMBER TO A OLD PDS MEMBER WITH NAME AS
'DATCONP(NEW)'
000100 //MTPLB22J JOB 345,DATACONCAT,CLASS=A,MSGCLASS=A,
000200 //
MSGLEVEL=(1,1),NOTIFY=MTPLB22
000300 //STEP1 EXEC PGM=IEBGENER
000400 //SYSUT1 DD DSN=MTPLB22.CON.TEST1(MEM1),DISP=OLD
000410 //
DD DSN=MTPLB22.CON.TEST1(MEM2),DISP=OLD
000500 //
DD DSN=MTPLB22.UTILITY.TEST,DISP=SHR
000510 //
DD DSN=MTPLB22.CON.TEST2(MEMB),DISP=SHR
000600 //SYSUT2 DD DSN=MTPLB22.OUTPUT.DATCONP(NEW),DISP=OLD
000700 //SYSPRINT DD SYSOUT=*
000800 //SYSIN DD DUMMY
---------------------------------------------------------------------------------17. TO FORMAT THE OUTPUT WITH ITEM HEADING. USING THE IEBPTPCH
KNOW THE USAGE.
000100
000200
000300
000400
000500
000600
000700
000800
000900
001100
001200
001300

//MTPLB22J JOB 345,'IEBPTPCH',CLASS=A,MSGCLASS=A,


//
MSGLEVEL=(1,1),NOTIFY=MTPLB22
//STEP1 EXEC PGM=IEBPTPCH
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=MTPLB22.UTILITY.TEST,DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD *
PRINT TYPORG=PS,MAXFLDS=2
TITLE ITEM=('STUDENT NAME
ADDRESS',1)
RECORD FIELD=(5,1,,4),FIELD=(7,7,,19)
/*
//

18. TO LIST THE VTOC INFORMATION OF THE SPECIFIED VOL SER NUMBER
USING IEHLIST UTILITY.
000100
000200
000300
000400
000500
000600
000700
000810

//MTPLB22J JOB 234,'IEHLIST',CLASS=A,MSGCLASS=A,


//
MSGLEVEL=(1,1),NOTIFY=MTPLB22
//STEP1 EXEC PGM=IEHLIST
//SYSPRINT DD SYSOUT=*
//DD1 DD DISP=OLD,UNIT=SYSDA,VOL=SER=MTBLR1
//SYSIN DD *
LISTVTOC FORMAT,VOL=SYSDA=MTBLR1
/*

000900 //
19.TO LIST THE PDS NAME FOR THE SPECIFIED VOL SER NAME.
000100
000200
000300
000400
000500
000600
000700
000800
000900

//MTPLB22J JOB 234,'IELSTPDS',CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),


//
NOTIFY=MTPLB22
//STEP1 EXEC PGM=IEHLIST
//SYSPRINT DD SYSOUT=*
//DD1 DD DISP=SHR,UNIT=SYSDA,VOL=SER=MTBLR1
//SYSIN DD *
LISTPDS DSNAME=(MTPLB32.DEEN.JCL),VOL=SYSDA=MTBLR1
/*
//

O/P
DIRECTORY INFO FOR SPECIFIED PDS ON VOL MTBLR1
MTPLB22.DONTDEL.PDS1
MEMBERS
TTRC
VARIABLE USER DATA ---(USER DATA AND TTRC ARE
I------------IELIST 0000290F 0100000701 04070F0104 070F231100 0A000A0000
D4E3D-----------IELISTPD 0001100F 0102002801 04070F0104 070F234600 0900090001
D4E3D----------IEPCH
0000220F 0101005401 04070F0104 070F225900 0C000D0003
D4E3D-----------OF THE 00005 DIRECTORY BLOCKS ALLOCATED TO THIS PDS, 00004 ARE(IS)
COMPLETELY UNUSED
NOTE:'----------' IN THE ABOVE LINE CONVEYS THAT THERE ARE SOME MORE
INFORMATION CONCERNED TO THAT PARTICULAR LINE.
20. TO COPY ONE PDS MEMBERS TO ANOTHER PDS MEMBER USING IEBCOPY
UTILITY.
000100
000200
000300
000400
000500
000600
000700
000800
000900

//MTPLB22J JOB ,,CLASS=A,NOTIFY=MTPLB22


//STEP1 EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//INPUT DD DSN=MTPLB22.DONTDEL.PDS1,DISP=SHR
//OUTPUT DD DSN=MTPLB22.HELLO.SOURCE,DISP=SHR
//SYSIN DD *
COPY OUTDD=OUTPUT,INDD=INPUT
/*
//

21.TO COPY A PARTICULAR MEMBER FROM ONE PDS TO ANOTHER PDS USING
IEBCOPY UTILITY
000100 //MTPLB22J JOB ,,CLASS=A,NOTIFY=MTPLB22
000200 //STEP1 EXEC PGM=IEBCOPY
000300 //SYSPRINT DD SYSOUT=*

000400
000500
000600
000700
000710
000800
000900

//INPUT DD DSN=MTPLB22.DONTDEL.PDS1,DISP=SHR
//OUTPUT DD DSN=MTPLB22.HELLO.SOURCE,DISP=SHR
//SYSIN DD *
COPY OUTDD=OUTPUT,INDD=INPUT
SELECT MEMBER=IEBCOPY
/*
//

22.TO COPY A PARTICULAR MEMBER FROM ONE PDS AND FROM THE SAME PDS
IF U WANT TO COPY ANOTHER MEMBER WITH A DIFFERENT NAME THEN THIS
PROGRAM WILL HELP U.
000100
000200
000300
000400
000500
000600
000700
000710
000720
000800
000900

//MTPLB22J JOB ,,CLASS=A,NOTIFY=MTPLB22


//STEP1 EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//INPUT DD DSN=MTPLB22.DONTDEL.PDS1,DISP=SHR
//OUTPUT DD DSN=MTPLB22.HELLO.SOURCE,DISP=SHR
//SYSIN DD *
COPY OUTDD=OUTPUT,INDD=INPUT
SELECT MEMBER=IEPCH
SELECT MEMBER=((IEBCOPY,NEWCOPY,R))
/*
//

THE SAME PROGRAM CAN BE WRITEN IN THIS FORM ALSO. THE ONLY
DIFFERENT IS HERE WE ARE USING A SINGLE SELECT MEMBER STATEMENT
AND COPYING A MEMBER AND RENAMING A MEMBER AND COPY IT ALSO.
000100
000200
000300
000400
000500
000600
000700
000720
000800
000900

//MTPLB22J JOB ,,CLASS=A,NOTIFY=MTPLB22


//STEP1 EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//INPUT DD DSN=MTPLB22.DONTDEL.PDS1,DISP=SHR
//OUTPUT DD DSN=MTPLB22.HELLO.SOURCE,DISP=SHR
//SYSIN DD *
COPY OUTDD=OUTPUT,INDD=INPUT
SELECT MEMBER=(IEPCH,(IEBCOPY,NEWCOPY,R))
/*
//

23.IF WE WANT TO COPY THE MEMBERS OF A PDS EXCLUDING SOME MEMBERS


THEN THIS WILL HELP US.
000100
000200
000300
000400
000500
000600
000700
000800
000900
001000

//MTPLB22J JOB ,,CLASS=A,NOTIFY=MTPLB22


//STEP1 EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//INPUT DD DSN=MTPLB22.DONTDEL.PDS1,DISP=SHR
//OUTPUT DD DSN=MTPLB22.HELLO.SOURCE,DISP=SHR
//SYSIN DD *
COPY OUTDD=OUTPUT,INDD=INPUT
EXCLUDE MEMBER=(IEPCH,(IEBCOPY,NEWCOPY,R))
/*
//

24.TO UPDATE A MEMBER OF PDS USING IEBUPDTE UTILITY


000001
000002
000003
000004
000005
000006
000007
000008
000009
000010
000011

//MTPLB22J JOB 234,'IEBUPDTE',CLASS=A,MSGCLASS=A,


//
MSGLEVEL=(1,1),NOTIFY=MTPLB22
//STEP1 EXEC PGM=IEBUPDTE
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=MTPLB22.DONTDEL.PDS1,VOL=SER=MTBLR1,UNIT=SYSDA,
//
DISP=OLD
//SYSIN DD *
./ CHANGE NAME=TEST,UPDATE=INPLACE
AAAAA
00000102
./ ENDUP
/*

NOTE: BY DEFAULT IN THE PROFILE NUMBER IS ON. BUT WE HAVE TO CHANGE


THE PROFILE TO NUMBER TO OFF FOR BOTH THE INPUT AND OUTPUT FILE.
25.USING IDCAMS UTILITY WE CAN DELETE A SDS
000100
000200
000300
000400
000500

//MTPLB22J JOB ,,CLASS=A,NOTIFY=MTPLB22


//STPE1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//SYSIN DD *
DELETE MTPLB22.UTILITY.TEST

26.TO DELETE MEMBER OF A DIFFERENT PDS USING IDCAMS IN THE PRESENT


PDS.
000100
000200
000300
000400
000500

//MTPLB22J JOB ,,CLASS=A,NOTIFY=MTPLB22


//STPE1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//SYSIN DD *
DELETE MTPLB22.HELLO.SOURCE(DUMMY)

27.PROGRAM TO KNOW THE USAGE OF THE SORT UTILITY.


000100
000200
000300
000400
000500
000510
000600
000700
000800
000900
001000

//MTPLB22J JOB 234,'SORTING',CLASS=A,MSGCLASS=A,


//
MSGLEVEL=(1,1),NOTIFY=MTPLB22
//STEP1 EXEC PGM=ICEMAN
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=MTPLB22.DONTDEL.SEQL1,DISP=OLD
//*SORTOUT DD DSN=MTPLB22.DONTDEL.SEQL1,DISP=SHR
//SORTOUT DD DSN=MTPLB22.DONTDEL.SEQL2,SPACE=(TRK,(5,5)),
//
DISP=(NEW,CATLG,DELETE),VOL=SER=MTBLR1,
//
UNIT=SYSDA,DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
//SYSIN DD *
SORT FIELDS=(1,3,CH,A)

I/P
000001 FIRST
000002 SECOND

000003 THIRD
000004 FOURTH
000005 FIFTH
O/P FOR SORT COMMAND AS 'SORT FIELDS=(1,2,CH,A)
000001 FIRST
000002 FIFTH
000003 FOURTH
000004 SECOND
000005 THIRD
O/P FOR SORT COMMAND AS 'SORT FIELDS=(1,3,CH,A)
000001 FIFTH
000002 FIRST
000003 FOURTH
000004 SECOND
000005 THIRD
NOTE: HERE WE ARE NOT GIVING THE '/*' AND '//' STATEMENTS IN THE
LAST. NOTE THAT THIS ALSO WORKS COZ BY DEFAULT THE SYSTEM WILL
ASSIGN THE END VALUES OF THE JCL.NOT ONLY THIS PROGRAM ANY
PROGRAM WILL WORK LIKE THIS.
28.TO SORT THE RECORDS FROM SEQL1 FILE AND PUT THE OUTPUT IN THE
SEQL2 FILE WHICH IS ALREADY EXISTING. HERE THE SORT IS DONE FROM 1
ST POSITION AND FOR 4 CHARACTERS IT IS SORTED IN THE DESCENDING
ORDER.BUT IN THE ABOVE PROGRAM WE SAW HOW TO PUT THE OUTPUT IN A
NEWLY CREATED SDS FILE.
000100
000200
000300
000400
000500
000510
000900
001000

//MTPLB22J JOB 234,'SORTING',CLASS=A,MSGCLASS=A,


//
MSGLEVEL=(1,1),NOTIFY=MTPLB22
//STEP1 EXEC PGM=ICEMAN
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=MTPLB22.DONTDEL.SEQL1,DISP=OLD
//SORTOUT DD DSN=MTPLB22.DONTDEL.SEQL2,DISP=OLD
//SYSIN DD *
SORT FIELDS=(1,4,CH,D)

I/P
000001
000002
000003
000004
000005

FIRST
SECOND
THIRD
FOURTH
FIFTH

O/P FOR SORT COMMAND AS 'SORT FIELDS=(1,4,CH,D)


000001 THIRD
000002 SECOND
000003 FOURTH
000004 FIRST
000005 FIFTH

29.TO SORT THE RECORDS STARTING FROM THE 3RD POSITION AND SORT
FOR 2 CHARACTERS. IN THIS PROGRAM WE ARE DIVIRTING THE OUTPUT TO
THE OUTPUT SPOOL INSTEAD OF PUTING IT TO A SDS.
000100
000200
000300
000400
000500
000510
000900
001000

//MTPLB22J JOB 234,'SORTING',CLASS=A,MSGCLASS=A,


//
MSGLEVEL=(1,1),NOTIFY=MTPLB22
//STEP1 EXEC PGM=ICEMAN
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=MTPLB22.DONTDEL.SEQL1,DISP=OLD
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=(3,2,CH,D)

I/O
I/P
000001
000002
000003
000004
000005

FIRST
SECOND
THIRD
FOURTH
FIFTH

O/P
TO SEE THE OUTPUT,SINCE WE HAVE DIVERTED IT TO THE OUTPUT SPOOL WE HAVE
TO TYPE THE COMMAND 'TSO SDSF ST' AND THEN SEE IN THE SPOOL.
FOURTH
FIRST
THIRD
FIFTH
SECOND
30.TO KNOW THE USAGE OF MERGE SORT.
000100
000200
000300
000400
000500
000600
000700
000800
000900
001000
001100

//MTPLB22J JOB 234,'MERGING',CLASS=A,MSGCLASS=A,


//
MSGLEVEL=(1,1),NOTIFY=MTPLB22
//STEP1 EXEC PGM=ICEMAN
//SYSOUT DD SYSOUT=*
//SORTIN1 DD DSN=MTPLB22.DONTDEL.SEQL1,DISP=OLD
//SORTIN2 DD DSN=MTPLB22.DONTDEL.SEQL2,DISP=OLD
//SORTOUT DD SYSOUT=*
//SYSIN DD *
MERGE FIELDS=(1,2,CH,A)
/*
//

I/P
SEQL1.
000001
000002
000003
000004
000005

ELEVEN
FOURTEEN
TEN
THIRTEEN
TWELVE

SEQL2.
000001
000002
000003
000004
000005

FIRST
FIFTH
FOURTH
SECOND
THIRD

IMP NOTE: HERE BOTH THE SORTIN1 AND SORTIN2 FILES SHOULD BE SORTED
IN THE SAME ORDER BEFORE MERGING. IF U SORT 1ST FILE IN ONE ORDER
AND THE OTHER IN THE ANOTHER FORMAT THEN U GET MAXCC=16 OR 20
ERROR.
O/P
ELEVEN
FIRST
FIFTH
FOURTH
FOURTEEN
SECOND
TEN
THIRTEEN
THIRD
TWELVE
31.MERGING TWO FILES HAVING ONLY NUMBERS AS THE INPUT.
000100
000200
000300
000400
000500
000600
000700
000800
000900
001000
001100
I/P
SQL1
000001
000002
000003
000004
000005
SQL2
000001
000002
000003
000004
000005

//MTPLB22J JOB 234,'MERGING',CLASS=A,MSGCLASS=A,


//
MSGLEVEL=(1,1),NOTIFY=MTPLB22
//STEP1 EXEC PGM=ICEMAN
//SYSOUT DD SYSOUT=*
//SORTIN1 DD DSN=MTPLB22.DONTDEL.SEQL1,DISP=OLD
//SORTIN2 DD DSN=MTPLB22.DONTDEL.SEQL2,DISP=OLD
//SORTOUT DD SYSOUT=*
//SYSIN DD *
MERGE FIELDS=(1,2,CH,A)
/*
//

12
15
19
55
60
10
16
18
23
46

O/P
10
12
15
16
18
19
23
46
55
60
32.THIS PROGRAM SHOWS HOW TO CREATE A SDS USING IN-STREAM
FUNCTION.
000100
000200
000300
000400
000500
000600
000700
000800
001000
001200
001500

//MTPLB22J JOB ,,NOTIFY=MTPLB22


//INPROC PROC
//STEP1 EXEC PGM=IEFBR14
//DD1 DD DSN=MTPLB22.DONTDEL.PROC,DISP=(NEW,CATLG,DELETE),
//
SPACE=(TRK,(5,5)),VOL=SER=MTBLR1,UNIT=SYSDA,
//
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
//SYSPRINT DD SYSOUT=*
//
PEND
//JCLSTEP EXEC PROC=INPROC
//SYSIN DD DUMMY
//

33. TO CREATE TWO SDS USING TWO INSTREAM PROCEDURES IN THE SAME
MEMBER
000100
000200
000300
000400
000500
000600
000700
000902
000910
000920
000930
000940
000950
000982
000983
000984
000985

//MTPLB22J JOB ,,NOTIFY=MTPLB22


//INPROC1 PROC
//STEP1 EXEC PGM=IEFBR14
//DD1 DD DSN=MTPLB22.DONTDEL.PROC99,DISP=(NEW,CATLG,DELETE),
//
SPACE=(TRK,(5,5)),VOL=SER=MTBLR1,UNIT=SYSDA,
//
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
//SYSPRINT DD SYSOUT=*
//
PEND
//INPROC2 PROC
//STEP2 EXEC PGM=IEFBR14
//DD1 DD DSN=MTPLB22.DONTDEL.PROC88,DISP=(NEW,CATLG,DELETE),
//
SPACE=(TRK,(5,5)),VOL=SER=MTBLR1,UNIT=SYSDA,
//
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
//
PEND
//CALL1 EXEC PROC=INPROC1
//CALL2 EXEC PROC=INPROC2
//SYSIN DD DUMMY

OR
000100 //MTPLB22J JOB ,,NOTIFY=MTPLB22
000200 //INPROC1 PROC

000300
000400
000500
000600
000700
000902
000903
000910
000920
000930
000940
000950
000982
000983
000985

//STEP1 EXEC PGM=IEFBR14


//DD1 DD DSN=MTPLB22.DONTDEL.PROC11,DISP=(NEW,CATLG,DELETE),
//
SPACE=(TRK,(5,5,5)),VOL=SER=MTBLR1,UNIT=SYSDA,
//
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
//SYSPRINT DD SYSOUT=*
//
PEND
//CALL1 EXEC PROC=INPROC1
//INPROC2 PROC
//STEP2 EXEC PGM=IEFBR14
//DD1 DD DSN=MTPLB22.DONTDEL.PROC22,DISP=(NEW,CATLG,DELETE),
//
SPACE=(TRK,(5,5,10),RLSE),VOL=SER=MTBLR1,UNIT=SYSDA,
//
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
//
PEND
//CALL2 EXEC PROC=INPROC2
//SYSIN DD DUMMY

35.TO CREATE A PDS OR SDS USING CATLOGED PROCEDURES.


THE FIRST PROGRAM IS AN INSTREM PROCEDURE IN ONE MEMBER OF A
PDS.WHICH GOES AS FOLLOWS.IT IS A GOOD PRACTICE THAT U HAVE THE
MEMBER NAME AND THE PROCEDURE NAME AS SAME. FOR EXAMPLE HERE THE
PROCEDURE NAME IS 'NEWPROC' AND THE MEMEBER NAME IS ALSO
'NEWPROC'.
THE BELOW PROGRAM IS STORED IN MTPLB22.DONTDEL.PDS1(NEWPROC).
000200
000300
000400
000500
000600
000700
000800

//NEWPROC PROC
//STEP1 EXEC PGM=IEFBR14
//DD1 DD DSN=MTPLB22.DONTDEL.PROC1,DISP=(NEW,CATLG,DELETE),
//
SPACE=(TRK,(5,5)),VOL=SER=MTBLR1,UNIT=SYSDA,
//
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
//SYSPRINT DD SYSOUT=*
//
PEND

THIS IS THE ACTUAL PROGRAM WHERE WE ARE CALLING THE ABOVE


INSTREAM PROCEDURE. IN THIS PROGRAM WE ARE CALLING THE ABOVE
PROGRAM. SO THIS IS A CATLOG PROCEDURE HERE.NOTE THAT WE ARE
CALLING THE INSTREAM PROCEDURE BY ITS MEMBER NAME.THAT IS WHY IT
IS GOOD PRACTICE THAT MEMBER NAME AND THE PROCEDURE NAME SHOULD
BE SAME. EVEN THIS PROGRAM IS STORES IN
MTPLB22.DONTDEL.PDS1(CATPROC).
000100
000200
001000
001100
001200
001500

//MTPLB22J JOB ,,CLASS=A,NOTIFY=MTPLB22


//DD1 JCLLIB ORDER=(MTPLB22.DONTDEL.PDS1)
//STEP1 EXEC PROC=NEWPROC
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
//

O/P AN SDS WILL BE CREATED BY THE NAME MTPLB22.DONTDEL.PROC1.


36.WE CAN HAVE TWO INSTREM PROCEDURES IN THE SAME PDS FOR
CREATING SDS AND PDS. AND U CAN CALL THAT AS A CATLOG PROCEDURE IN

SOME OTHER MEMBER


FIRST PROGRAM TO CREATE AN SDS.
000200 //NEWPROC PROC
000300 //STEP1 EXEC PGM=IEFBR14
000400 //DD1 DD DSN=MTPLB22.DONTDEL.PROC1,DISP=(NEW,CATLG,DELETE),
000500 //
SPACE=(TRK,(5,5)),VOL=SER=MTBLR1,UNIT=SYSDA,
000600 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
000700 //SYSPRINT DD SYSOUT=*
000800 //
PEND
SECOND PROGRAM TO CREATE AN PDS.
000200 //NEWPROC1 PROC
000300 //STEP1 EXEC PGM=IEFBR14
000400 //DD1 DD DSN=MTPLB22.DONTDEL.PROC2,DISP=(NEW,CATLG,DELETE),
000500 //
SPACE=(TRK,(5,5,10),RLSE),VOL=SER=MTBLR1,UNIT=SYSDA,
000600 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
000700 //SYSPRINT DD SYSOUT=*
000800 //
PEND
THIS IS THE ACTUAL MEMBER WHERE WE ARE CALLING THE TWO INSTREAM
PROCEDURES.
000100
000200
001000
001010
001100
001200
001500

//MTPLB22J JOB ,,CLASS=A,NOTIFY=MTPLB22


//DD1 JCLLIB ORDER=(MTPLB22.DONTDEL.PDS1)
//STEP1 EXEC PROC=NEWPROC
//STEP2 EXEC PROC=NEWPROC1
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
//

NOTE : HERE BOTH THE INSTREM PROCEDURES ARE STORED IN THE SAME
PDS. AND THE CATLOG PROCEDURE IS ALSO SAVED IN THE SAME PDS.
O/P : WE HAVE ONE SDS WITH THE NAME MTPLB22.DONTDEL.PROC1 AND ONE PDS
WITH THE NAME MTPLB22.DONTDEL.PROC2
37.HERE WE HAVE STORED NEWPROC IN THE PRESENT PDS AND NEWPROC1
IN A DIFFERENT PROCEDURE I.E. MTPLB22.HELLO.SOURCE.
THE FIRST PROGRAM IS NEWPROC1 STORED IN MTPLB22.DONTDEL.PDS1
000200
000300
000400
000500
000600
000700
000800
000910

//NEWPROC PROC
//STEP1 EXEC PGM=IEFBR14
//DD1 DD DSN=MTPLB22.DONTDEL.PROC1,DISP=(NEW,CATLG,DELETE),
//
SPACE=(TRK,(5,5)),VOL=SER=MTBLR1,UNIT=SYSDA,
//
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
//SYSPRINT DD SYSOUT=*
//
PEND
//*INPROC2 PROC

SECOND PROCEDURE IS STORED IN A DIFFERENT PDS

I.E.MTPLB22.HELLO.SOURCE AND THE MEMBER NAME IS NEWPROC1.


000200 //NEWPROC1 PROC
000300 //STEP1 EXEC PGM=IEFBR14
000400 //DD1 DD DSN=MTPLB22.DONTDEL.PROC2,DISP=(NEW,CATLG,DELETE),
000500 //
SPACE=(TRK,(5,5,10),RLSE),VOL=SER=MTBLR1,UNIT=SYSDA,
000600 //
DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)
000700 //SYSPRINT DD SYSOUT=*
000800 //
PEND
THIS IS THE CATLOG PROCEDURE WHICH CREATES ONE PDS AND ONE SDS.
000100
000200
001000
001010
001100
001200
001500

//MTPLB22J JOB ,,CLASS=A,NOTIFY=MTPLB22


//DD1 JCLLIB ORDER=(MTPLB22.DONTDEL.PDS1,MTPLB22.HELLO.SOURCE)
//STEP1 EXEC PROC=NEWPROC
//STEP2 EXEC PROC=NEWPROC1
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
//

O/P : WE HAVE ONE SDS WITH THE NAME MTPLB22.DONTDEL.PROC1 AND ONE PDS
WITH THE NAME MTPLB22.DONTDEL.PROC2
38.PROGRAM TO OVERRIDE EXEC STATEMENT.HERE WE HAVE AN INSTREAM
PROCEDURE WHICH HAS SOME EXEC PARAMETERS. BUT WHILE CALLING THAT
INSTREAM PROCEDURE WE ARE TRYING TO OVERRIDE THE VALUES DEFINED
IN THAT INSTREAM PROCEDURE.FOR EXAMPLE IN INSTREAM PROCEDURE
OVRPROC IN EXEC STATEMENT
000100
000200
000300
000400
000500
000600
000700
000800
000900
001000

//MTPLB22J JOB 234,'OVERRIDING',CLASS=A,MSGCLASS=A,


//
MSGLEVEL=(1,1),TIME=1440,NOTIFY=MTPLB22,
//
REGION=100K,TYPRUN=SCAN
//OVRPROC PROC
//STEPA EXEC PGM=IEBGENER,TIME=(0,0),REGION=1K
//SYSUT1 DD DUMMY
//SYSUT2 DD DUMMY
// PEND
//STEP1 EXEC OVRPROC,TIME.STEPA=10,REGION.STEPA=
//

39.TO KNOW THE USAGE OF OVERRIDING. IN THIS PROGRAM WE ARE TRYING


TO OVERRIDE THE DD STATEMENTS VALUES. WE HAVE ONE SDS WITH SOME
DD PARAMETERS. USING THIS PROGRAM WE ARE TRYING TO CREATE AN PDS
WITH USING THE SAME PAREMETERS AS USED FOR SDS BUT WITH ONLY
CHANGE IN SPACE PARAMETERS.
000100
000200
000300
000400
000600
000700

//MTPLB22J JOB ,,CLASS=A


//OVRDD PROC
//STEPA EXEC PGM=IEFBR14
//DD1 DD DSN=MTPLB22.DONTDEL.SEQL1,DISP=SHR
// PEND
//STEP1 EXEC OVRDD

000800 //STEPA.DD1 DD DSN=MTPLB22.DONTDEL.OVRDD,DISP=(,CATLG),


000810 // SPACE=(TRK,
(1,1,5)),UNIT=SYSDA,DCB=(LRECL=2,BLKSIZE=20,RECFM=FB)
000900 //
40.

You might also like