//******************************************************* //* THIS IS THE JCL FOR MVS LAB 2 FROM DAT2330 WINTER 2000. //* IT IS PROVIDED HERE AS ANOTHER EXAMPLE FOR THIS TERM. //* //* THERE IS ONE DDNAME GUESS IN STEP THREE. //* A WRONG DDNAME GUESS MEANS A RUN-TIME ERROR (NOT A JCL ERROR). //* SINCE I HAVE THE COBOL SOURCE, I COULD READ THE SOURCE TO FIND THE DDNAME. //* IF I DON'T UNDERSTAND COBOL, I WOULD HAVE TO ACTUALLY RUN THIS JOB //* TO HAVE THE PROGRAM GENERATE AN ERROR MESSAGE ABOUT THE DDNAME NEEDED. //* //* I HAD TO MAKE UP (CHOOSE) TWO OUTPUT DATASET NAMES. NO COMMENTS //* ARE NEEDED FOR THAT CHOICE. (SO IGNORE THIS COMMENT.) //******************************************************* //* REAL-WORLD NOTE: WE SHOULD SCAN THIS JCL BEFORE WE SUBMIT TO CLASS=F, //* SINCE THE JOB MAY BE HELD UP FOR A LONG TIME BEFORE IT RUNS IN THAT QUEUE. //* NOTE: SCANNING THE JCL WILL *NOT* HELP FIX THE DDNAME GUESS. //******************************************************* //COMBINER JOB MVSLAB2,'IAN ALLEN',CLASS=F, // MSGLEVEL=(1,0),MSGCLASS=L,PRTY=7 //************************************************************* //* STEP ONE - copy first tape to disk //* the secondary extent size was not given - choosing 10 blocks //************************************************************* //TAP2DSK1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A,DEST=MVS1.LESLIE # <100 lines //OUT DD DSN=$CHOOSE1,DISP=(NEW,PASS), // BLKSIZE=4030,RECFM=FB, // UNIT=SYSDA, // SPACE=(4030,(231,10)) //IN DD DSN=TESTSET1,DISP=(OLD,DELETE), // LABEL=(,AL), // UNIT=SYSSQ,VOL=SER=200200 //SYSIN DD * REPRO INFILE(IN) OUTFILE(OUT) /* //************************************************************* //* STEP TWO - copy second tape to disk //* the secondary extent size was not given - choosing 10 blocks //************************************************************* //TAP2DSK2 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A,HOLD=YES # <100 lines //OUT DD DSN=$CHOOSE2,DISP=(NEW,PASS), // BLKSIZE=4050,RECFM=FB, // UNIT=SYSDA, // SPACE=(4050,(134,10)) //IN DD DSN=TESTSET2,DISP=(OLD,CATLG), // UNIT=SYSSQ,VOL=SER=200300 //SYSIN DD * REPRO INFILE(IN) OUTFILE(OUT) /* //************************************************************* //* STEP THREE - a PROC, containing three internal steps //* NOTE: I think the compiler listing will be longer than 500 lines. //* I'm guessing the $GUESS1 DDname because it was not given. //* An incorrect guess will cause a run-time error. //************************************************************* //COMBINE2 EXEC PROC=COBCLG //COMP.SYSPRINT DD SYSOUT=B,HOLD=YES # >500 lines //COMP.SYSIN DD * [...much COBOL source goes here...] /* //LKEDIT.SYSLIB DD DSN=MYTEAM.COBOL.TESTLIB,DISP=(SHR,KEEP) //RUN.$GUESS1 DD SYSOUT=L,FLASH=INVENTRY # 2560 lines //RUN.DATAOUT DD DSN=TESTOUT,DISP=(NEW,PASS), // UNIT=SYSDA, // BLKSIZE=3920,RECFM=FB, // SPACE=(3920,(375,38)) //RUN.BACKUP2 DD DSN=DATABACK,DISP=(NEW,KEEP), // BLKSIZE=1960,RECFM=FB, // LABEL=(,AL), // UNIT=SYSSQ,VOL=SER=200400 //RUN.DATAIN1 DD DSN=$CHOOSE1,DISP=(OLD,DELETE) //RUN.DATAIN2 DD DSN=$CHOOSE2,DISP=(OLD,DELETE) //************************************************************* //* STEP FOUR - print the disk dataset //************************************************************* //DUMPDSK EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A # <100 lines //OUT DD SYSOUT=(D,,GREEN1), # 2*6000 lines // BURST=YES,COPIES=2 //IN DD DSN=TESTOUT,DISP=(OLD,CATLG) //SYSIN DD * REPRO INFILE(IN) OUTFILE(OUT) /* //