Sie sind auf Seite 1von 151

JCL PROGRAMS **************************** Bottom of Data **************************** 1)IEFBR14 CREATING PDS & PS //TCHN113A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC

PGM=IEFBR14 //DD1 DD DSN=TCHN113.PAT3.PDS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1,1),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) //STEP02 EXEC PGM=IEFBR14 //DD2 DD DSN=TCHN113.PAT4.PS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1,0),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) // **************************** Bottom of Data **************************** 2)IEBGENER COPYING DATAS FROM ONE TO ONE //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEBGENER //SYSUT1 DD DSN=TCHN260.SARANYA.PDS(COPY1),DISP=SHR //SYSUT2 DD DSN=TCHN260.SUGA.PS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* // **************************** Bottom of Data **************************** COPYING DATAS FROM ONE TO MANY //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEBGENER //SYSUT1 DD DSN=TCHN260.SARANYA.PDS(GENER3),DISP= //SYSUT2 DD DSN=TCHN260.KALAI.PDS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * GENERATE MAXNAME=3 MEMBER NAME=(MEM41,MEM52,MEM63) /* // **************************** Bottom of Data **************************** REFORMATTING //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEBGENER //SYSUT1 DD DSN=TCHN260.SARAN.PDS(INPUT),DISP=SHR //SYSUT2 DD DSN=TCHN260.SARAN.PDS(OUTPUT),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * GENERATE MAXFLDS=5,MAXLITS=7 RECORD FIELD=(3,'#**',,1), FIELD=(7,1,,4), FIELD=(1,'*',,11), FIELD=(7,9,,12),

FIELD=(3,'**#',,19) /* // *********************************** Top of Data ****************************** COPYING CONTENTS BY GIVING INPUT DIRECTLY //TCHN060E JOB (CHN10MF032,BALA),NOTIFY=TCHN060,CLASS=A,MSGCLASS=T, // MSGLEVEL=(1,1),TIME=5,REGION=5M //STEP1 EXEC PGM=IEBGENER //SYSUT1 DD * THIS PROGRAM IS USED TO PRINT THE CONTENT IN SPOOL AREA THIS CONTENTS ARE GOING TO BE PRINTED IN SPOOL /* //SYSUT2 DD SYSOUT=* //SYSIN DD * /* //SYSPRINT DD SYSOUT=* **************************** Bottom of Data **************************** CONCATENATION //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEBGENER //SYSUT1 DD DSN=TCHN260.SARANYA.PDS(COPY1),DISP=SHR // DD DSN=TCHN260.SUGA.PS,DISP=SHR // DD DSN=TCHN260.KALAI.PDS(COPY1),DISP=SHR //SYSUT2 DD DSN=TCHN260.LOKS.PS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* // **************************** Bottom of Data **************************** COPYING CONTENTS BY GIVING INPUT DIRECTLY WITH DELIMITER //TCHN060E JOB (CHN10MF032,BALA),NOTIFY=TCHN060,CLASS=A,MSGCLASS=T, // MSGLEVEL=(1,1),TIME=5,REGION=5M //STEP1 EXEC PGM=IEBGENER //SYSUT1 DD DSN=TCHN060.BAL.JCL1.PDS(MEM1),DISP=SHR // DD DATA,DLM='$$' THIS IS INSTREAM DATA THIS IS FOR CONCATENATE PROGRAM $$ //SYSUT2 DD DSN=TCHN060.BAL.JCL3.PDS(MEM1),DISP=SHR //SYSIN DD * /* //SYSPRINT DD SYSOUT=* **************************** Bottom of Data **************************** RECORD IDENT COPY THE CONTENTS TO MEM6 BEFOR MVS AND REMAINING TO MEM7 //TCHN639A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //*JCL TO CREATE MULTIPLE MEMBERS OUT OF SINGLE PS. //STEP1 EXEC PGM=IEBGENER //SYSUT1 DD DSN=TCHN639.SAMPLE1.PS,DISP=SHR //SYSUT2 DD DSN=TCHN639.SAMPLE2.PDS,DISP=SHR

//SYSPRINT DD SYSOUT=* //SYSIN DD * GENERATE MAXNAME=3,MAXGPS=1 MEMBER NAME=MEM6 RECORD IDENT=(3,'MVS',1) MEMBER NAME=MEM7 /* // **************************** Bottom of Data **************************** 3)IEBCOPY COPYING ALL MEMBERS //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEBCOPY //DD1 DD DSN=TCHN260.SARANYA.PDS,DISP=SHR //DD2 DD DSN=TCHN260.DEEP.PDS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * COPY INDD=DD1,OUTDD=DD2 /* // **************************** Bottom of Data **************************** COPYING SELECTED MEMBERS //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEBCOPY //DD1 DD DSN=TCHN260.SARANYA.PDS,DISP=SHR //DD2 DD DSN=TCHN260.KALAI.PDS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * COPY INDD=DD1,OUTDD=DD2 SELECT MEMBER=(CREATE,(A,A1,R)) /* // **************************** Bottom of Data **************************** EXCLUDING SELECTED MEMBERS //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEBCOPY //DD1 DD DSN=TCHN260.SARANYA.PDS,DISP=SHR //DD2 DD DSN=TCHN260.KALAI.PDS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * COPY INDD=DD1,OUTDD=DD2 EXCLUDE MEMBER=(CREATE) /* // **************************** Bottom of Data *************************** SELECT AND RENAME //TCHN639A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //* JCL PROGRAM TO COPY SELECTED MEMBERS AND RENAMING AV AS XXX WHILE //* WHILE COPYING //STEP1 EXEC PGM=IEBCOPY

//DD1 DD DSN=TCHN639.VSAM.JCL,DISP=SHR //DD4 DD DSN=TCHN639.SAMPLE.PDS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSIN DD * COPY I=DD1,O=DD4 SELECT MEMBER=(LISTCAT,(ALTERVOL,XXX,R)) /* // **************************** Bottom of Data *************************** SELECT AND REPLACE //TCHN639A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //* JCL PROGRAM TO COPY SELECTED MEMBERS AND RENAMING AV AS XXX WHILE //* WHILE COPYING //STEP1 EXEC PGM=IEBCOPY //DD1 DD DSN=TCHN639.VSAM.JCL,DISP=SHR //DD4 DD DSN=TCHN639.SAMPLE.PDS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSIN DD * COPY I=DD1,O=DD4 SELECT MEMBER=(LISTCAT,(ALTERVOL,,R)) /* // **************************** Bottom of Data *************************** STEP IN SIDE A PROCEDURE WHILE COPYING //TCHN060E JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //P1 PROC //STEP1 EXEC PGM=IEBCOPY //DD1 DD DSNAME=TCHN060.BAL.JCL1.PDS,DISP=SHR //DD2 DD DSNAME=TCHN060.BAL.JCL2.PDS,DISP=SHR //P1 PEND //STPE2 EXEC PROC=P1 //STEP1.SYSIN DD * COPY INDD=DD1,OUTDD=DD2 SELECT MEMBER=MEM3 /* //STEP1.SYSPRINT DD SYSOUT=* **************************** Bottom of Data **************************** 4)IEBCOMPR COMPARING 2 PS //TCHN206A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEBCOMPR //SYSUT1 DD DSN=TCHN206.SARAN.PS,DISP=SHR //SYSUT2 DD DSN=TCHN206.KALAI.PS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * COMPARE TYPORG=PS /* // **************************** Bottom of Data **************************** COMPARE 2 PDS //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M

//STEP01 EXEC PGM=IEBCOMPR //SYSUT1 DD DSN=TCHN260.SARAN.PDS,DISP=SHR //SYSUT2 DD DSN=TCHN260.LOKS.PDS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * COMPARE TYPORG=PO /* // **************************** Bottom of Data **************************** COMPARE 2 PDS MEMBERS //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEBCOMPR //SYSUT1 DD DSN=TCHN260.SARAN.PDS(I1),DISP=SHR //SYSUT2 DD DSN=TCHN260.LOKS.PDS(I2),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * COMPARE TYPORG=PS /* // **************************** Bottom of Data **************************** 5)SORT SORTING DATAS //TCHN260A JOB CLASS=A,PRTY=15,NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP01 EXEC PGM=SORT //SORTIN DD DSN=TCHN260.SARAN.PDS(INP1),DISP=SHR //SORTOUT DD DSN=TCHN260.SARAN.PDS(OUT1),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(6,5,CH,A) /* // **************************** Bottom of Data **************************** INREC //TCHN260B JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=SORT //SORTIN DD DSN=TCHN260.SARAN.JCL(IN),DISP=SHR //SORTOUT DD DSN=TCHN260.SARAN.JCL(OUT1),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * INREC FIELDS=(1:6,4) SORT FIELDS=(1,4,CH,A) /* // **************************** Bottom of Data **************************** OUTREC //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=SORT //SORTIN DD DSN=TCHN260.SARANYA.PDS(IN),DISP=SHR //SORTOUT DD DSN=TCHN260.SARANYA.PDS(OUT1),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=*

//SYSIN DD * SORT FIELDS=(6,4,CH,A) OUTREC FIELDS=(1:1,4) /* // **************************** Bottom of Data **************************** INCLUDE COND //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=SORT //SORTIN DD DSN=TCHN260.SARANYA.PDS(IN),DISP=SHR //SORTOUT DD DSN=TCHN260.SARANYA.PDS(OUT1),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * INCLUDE COND=(1,4,CH,GT,C'5100') SORT FIELDS=(6,4,CH,A) /* // **************************** Bottom of Data **************************** OMIT COND //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=SORT //SORTIN DD DSN=TCHN260.SARANYA.PDS(IN),DISP=SHR //SORTOUT DD DSN=TCHN260.SARANYA.PDS(OUT1),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * OMIT COND=(1,4,CH,GT,C'5100') SORT FIELDS=(6,4,CH,A) /* // **************************** Bottom of Data **************************** SKIP AND COUNT //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=SORT //SORTIN DD DSN=TCHN260.SARANYA.PDS(IN),DISP=SHR //SORTOUT DD DSN=TCHN260.SARANYA.PDS(OUT1),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=COPY,SKIPREC=5,STOPAFT=10 /* // **************************** Bottom of Data **************************** SORT WITHOUT DUPLICATES //TCHN310A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //*JCL TO REMOVE THE DUPLICATES WHILE SORTING. //STEP1 EXEC PGM=SORT //SORTIN DD DSN=TCHN310.I5.PS,DISP=SHR //SORTOUT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1,4,CH,A) SUM FIELDS=NONE /* //

**************************** Bottom of Data **************************** SORT WITH DUPLICATE RECORDS IN XSUM //TCHN639A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //*JCL TO RETAIN THE DUPLICATES.DUPLICATE FILE WILL BE REFERED IN //*SORTXSUM DSN. //STEP1 EXEC PGM=SORT //SORTIN DD DSN=TCHN639.I5.PS,DISP=SHR //SORTOUT DD SYSOUT=* //SORTXSUM DD DSN=TCHN639.I1.PS,DISP=SHR //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1,4,CH,A) SUM FIELDS=NONE,XSUM /* // //TCHN639A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M,PRTY=1 //*JCL TO RETAIN THE DUPLICATES.DUPLICATE FILE WILL BE REFERED IN //*SORTXSUM DSN. //STEP1 EXEC PGM=ICETOOL //SORTIN DD DSN=TCHN639.AAAA.PS,DISP=SHR //SORTOUT DD SYSOUT=* //SORTXSUM DD DSN=TCHN639.AAAB.PS,DISP=SHR //SYSOUT DD SYSOUT=* //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //TOOLIN DD * SELECT FROM(SORTIN) TO(SORTOUT) ON(1,4,CH)FIRST DISCARD(SORTXSUM) /* // **************************** Bottom of Data **************************** SORT WITH SUM IN DUPLICATES //MUTHU195 JOB CLASS=A,PRTY=15,NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP01 EXEC PGM=SORT //SORTIN DD DSN=TCOM123.VIJ.GAN(S1),DISP=SHR //SORTOUT DD DSN=TCOM123.VIJ.GAN(B1),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(5,5,CH,A) SUM FIELDS=(1,2,BI) /* // **************************** Bottom of Data **************************** MERGE //TCHN310A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //JCL TO MERGE THE INPUT FILES.MAXIMUM OF 99 FILES CAN BE MERGED. //*THE RULE IS INPUT FILE MUST BE IN ASCENDING OR DESCENDING SEQUENCE. //*MAKE THE CONTROL STATEMENT AS MERGE FILEDS AND THE UTILITY PROGRAM //*REMAINS SORT.GIVE THE SPEICAL DD NAMES SORTIN01,SORTIN02 FOR //*REFERING INPUT FILES. //STEP1 EXEC PGM=SORT //SORTIN01 DD DSN=TCHN310.FILE1.PS,DISP=SHR

//SORTIN02 DD DSN=TCHN310.FILE2.PS,DISP=SHR //SORTIN03 DD DSN=TCHN310.FILE3.PS,DISP=SHR //SORTOUT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * MERGE FIELDS=(1,3,BI,A) /* // **************************** Bottom of Data **************************** OUTFILE //TCHN310A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=SORT //*CREATING MULTIPLE FILES OUT OF MY SINGLE INPUT FILE. //SORTIN DD DSN=TCHN310.I5.PS,DISP=SHR //SORTOF1 DD DSN=TCHN310.P1.PS,DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(3,2),RLSE), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB) //SORTOF2 DD DSN=TCHN310.P2.PS,DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(3,2),RLSE), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB) //*INCLUDE COND=(10,5,CH,EQ,C'CHENN') //SORTOUT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1,14,CH,A) OUTFIL BUILD=(1,80,/,'NEW LINE') /* **************************** Bottom of Data **************************** OUTFILE //TCHN310A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=SORT //*CREATING MULTIPLE FILES OUT OF MY SINGLE INPUT FILE. //SORTIN DD DSN=TCHN310.I5.PS,DISP=SHR //SORTOF1 DD DSN=TCHN310.P1.PS,DISP=SHR //SORTOF2 DD DSN=TCHN310.P2.PS,DISP=SHR //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=COPY OUTFIL FILES=1,INCLUDE=(18,7,CH,EQ,C'CHENNAI') OUTFIL FILES=2,INCLUDE=(12,5,CH,GT,C'25000') /* // **************************** Bottom of Data **************************** 6)IEHLIST LIST PDS //TCHN260A JOB NOTIFY=TCHN260,TIME=5,REGION=5M //STEP1 EXEC PGM=IEHLIST //DD1 DD DSN=TCHN260.SARAN.JCL,DISP=SHR,VOL=SER=TCHN06,UNIT=3390 //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * LISTPDS DSN=TCHN260.SARAN.JCL,VOL=3390=TCHN06 /* //

**************************** Bottom of Data **************************** LISTCAT //TCHN260E JOB NOTIFY=&SYSUID,CLASS=A,TIME=5,REGION=5M //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * LISTCAT ENTRIES(TCHN260.SARAN.PS) /* // **************************** Bottom of Data **************************** LISTVTOC //TCHN260D JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IEHLIST //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //DD1 DD DISP=SHR,VOL=SER=TCHN02,UNIT=SYSDA //SYSIN DD * LISTVTOC FORMAT,DSNAME=TCHN260.SARAN.PS,VOL=SYSDA=TCHN02 /* // **************************** Bottom of Data **************************** 7)IEBEDIT //TCHN260A JOB CLASS=A,PRTY=15,NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP01 EXEC PGM=IEBEDIT //SYSUT1 DD DSN=TCHN260.SARANYA.PS,DISP=SHR //SYSUT2 DD SYSOUT=(*,INTRDR) //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * EDIT START=TCHN260A,TYPE=EXCLUDE,STEPNAME=(STEP02) /* // ****** **************************** Bottom of Data ********************* 8)IEHPROGM RENAMING MEMBER OF PDS //TCHN060B JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IEHPROGM //SYSPRINT DD SYSOUT=* //DD1 DD DISP=SHR,VOL=SER=TCHN01,UNIT=SYSDA //SYSIN DD * RENAME MEMBER=MEEM1,DSNAME=TCHN060.BAL.JCL1.PDS,VOL=SYSDA=TCHN01, X NEWNAME=MEM1 /* **************************** Bottom of Data **************************** RENAMING PDS //TCHN060B JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IEHPROGM //SYSPRINT DD SYSOUT=* //DD1 DD DISP=SHR,VOL=SER=TCHN01,UNIT=SYSDA

//SYSIN DD * RENAME DSNAME=TCHN060.BAL.JCL4.PDS,VOL=SYSDA=TCHN01, X NEWNAME=TCHN060.BAL.JCL1.PDS /* **************************** Bottom of Data **************************** RENAMING PS //TCHN060B JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=IEHPROGM //SYSPRINT DD SYSOUT=* //DD1 DD DISP=SHR,VOL=SER=TCHN03,UNIT=SYSDA //SYSIN DD * RENAME DSNAME=TCHN060.BAL.ONE.PS,VOL=SYSDA=TCHN03, X NEWNAME=TCHN060.BAL.CHANGE.PS /* **************************** Bottom of Data **************************** DELETING MEMBER //TCHN060B JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IEHPROGM //SYSPRINT DD SYSOUT=* //DD1 DD DISP=SHR,VOL=SER=TCHN03,UNIT=SYSDA //SYSIN DD * SCRATCH MEMBER=MEM1,DSNAME=TCHN060.BAL.TWO.PDS,VOL=SYSDA=TCHN03 /* **************************** Bottom of Data **************************** DELETING PDS //TCHN060B JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IEHPROGM //SYSPRINT DD SYSOUT=* //DD1 DD DISP=SHR,VOL=SER=TCHN04,UNIT=SYSDA //SYSIN DD * SCRATCH DSNAME=TCHN060.BAL.JCL3.PDS,VOL=SYSDA=TCHN04 /* **************************** Bottom of Data **************************** DELETING PS //TCHN060B JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IEHPROGM //SYSPRINT DD SYSOUT=* //DD1 DD DISP=SHR,VOL=SER=TCHN03,UNIT=SYSDA //SYSIN DD * SCRATCH DSNAME=TCHN060.BAL.CHANGE.PS,VOL=SYSDA=TCHN03 /* **************************** Bottom of Data **************************** 9)IEBUPDTE //TCHN639A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IEBUPDTE //SYSUT1 DD DSN=TCHN639.WRITE.PS,DISP=SHR //SYSUT2 DD DSN=TCHN639.WRITE.PS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * ./ CHANGE UPDATE=INPLACE

0003 THIS IS CHANGED /. ENDUP /* **************************** Bottom of Data **************************** IEBUPDTE //TCHN223A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP EXEC PGM=IEBUPDTE,PARM=NEW //SYSPRINT DD SYSOUT=* //SYSUT2 DD DSN=TCHN223.JAGAN.PDS2,DISP=SHR //SYSIN DD * ./ADD NAME=MEM5 ./ ENDUP /* // **************************** Bottom of Data **************************** IEBUPDTE //TCHN223W //STEP1 //SYSUT2 //SYSPRINT //SYSIN ./ADD 101 102 ./ENDUP /* // JOB NOTIFY=&SYSUID,TIME=5,REGION=5M EXEC PGM=IEBUPDTE DD DSN=TCHN223.JAGAN.PS1,DISP=OLD DD SYSOUT=* DD *

**************************** Bottom of Data **************************** 10)IEBPTPCH //TCHN223$ JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IEBPTPCH //SYSPRINT DD SYSOUT=* //SYSUT1 DD * 101 JAGAN CHENNAI 102 IMAN BANGALORE 103 NARESH DELHI /* //SYSUT2 DD DSN=TCHN223.JAGAN.TMP3,DISP=SHR //SYSIN DD * PRINT TYPORG=PS,MAXFLDS=4 TITLE ITEM=('EMPLOYEE DETAILS',20) TITLE ITEM=('ENO',1), ITEM=('ENAME',6),ITEM=('ELOC',14) RECORD FIELD=(3,1,,1),FIELD=(8,5,,6), FIELD=(15,14,,14) /* // **************************** Bottom of Data **************************** IEBPTPCH //TCHN223$ JOB NOTIFY=&SYSUID,TIME=5,REGION=5M

//STEP1 EXEC PGM=IEBPTPCH //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=TCHN223.JAGAN.TMP1,DISP=OLD //SYSUT2 DD DSN=TCHN223.JAGAN.TMP3,DISP=SHR //SYSIN DD * PRINT TYPORG=PS,MAXFLDS=4 TITLE ITEM=('EMPLOYEE DETAILS',20) TITLE ITEM=('ENO',1), ITEM=('ENAME',6),ITEM=('ELOC',14) RECORD FIELD=(3,1,,1),FIELD=(8,5,,6), FIELD=(15,14,,14) /* // **************************** Bottom of Data **************************** IEBPTPCH //TCHN223W JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IEBPTPCH //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=TCHN223.JAGAN.PDS1,DISP=SHR //SYSUT2 DD SYSOUT=* //SYSIN DD * PRINT TYPORG=PO /* // **************************** Bottom of Data **************************** COND PARAMETERS 1) TO CHECK WHETHER JOBLIB OVERRIDES STEPLIB //TCHN206B JOB 123,'SUNIL',NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN260.CONDN1.JCL,DISP=(NEW,CATLG,DELETE), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB), // SPACE=(TRK,(20,20),RLSE) /* //STEP2 EXEC PGM=IEFBR14,COND=(0,NE) //DD2 DD DSN=TCHN260.CONDN2.JCL,DISP=(NEW,CATLG,DELETE), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB), // SPACE=(TRK,(20,10,1),RLSE) /* //STEP3 EXEC PGM=IEFBR14,COND=((4,EQ)) //DD3 DD DSN=TCHN260.CONDN3.JCL,DISP=(NEW,CATLG,DELETE), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB), // SPACE=(TRK,(20,20,1),RLSE) /* //STEP4 EXEC PGM=IEFBR14,COND=(2,EQ,STEP1) //DD4 DD DSN=TCHN260.CONDN4.JCL,DISP=(NEW,CATLG,DELETE), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB), // SPACE=(TRK,(20,20),RLSE) /* // **************************** Bottom of Data **************************** 2)CHECK ONLY COND IN STEP1 & STEP2 //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEFBR14,COND=ONLY

//DD1 DD DSN=TCHN260.ABCD.PDS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1,1),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) //STEP02 EXEC PGM=IEFBR14 //DD2 DD DSN=TCHN260.WXYZ.PS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1,0),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) **************************** Bottom of Data **************************** 3)CHECK EVEN COND IN STEP1 & STEP2 //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEFBR14,COND=EVEN //DD1 DD DSN=TCHN260.ABCD.PDS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1,1),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) //STEP02 EXEC PGM=IEFBR14 //DD2 DD DSN=TCHN260.WXYZ.PS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1,0),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) **************************** Bottom of Data **************************** 4)CHECKING COND SYNTAX //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN260.ABCD.PDS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1,1),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) //STEP02 EXEC PGM=IEFBR14,COND=(0,LE,STEP01) //DD2 DD DSN=TCHN260.WXYZ.PS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1,0),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) **************************** Bottom of Data **************************** CHECKING MSGLEVEL //TCHN111A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,MSGLEVEL=(2,1),TIME=5,REGION=5M //STEP01 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN111.KALS.PDS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,1),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) //STEP02 EXEC PGM=IEFBR14 //DD2 DD DSN=TCHN111.MC.PS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,0),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) // **************************** Bottom of Data **************************** REFERBACK DCB AND DSN IN SAME STEP AND DIFFERENT STEP //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //STEP01 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN260.KALL.PDS,

// DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,1),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) //DD2 DD DSN=*.DD1, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,1),RLSE), // DCB=*.DD1 //STEP02 EXEC PGM=IEFBR14 //DD2 DD DSN=*.STEP01.DD1, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,1),RLSE), // DCB=*.STEP01.DD1 //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* // **************************** Bottom of Data **************************** RESTARTING FROM BEGINNING //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,RESTART=*,TIME=5,REGION=5M //STEP01 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN260.KALS.PDS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,1),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) //STEP02 EXEC PGM=IEFBR14 //DD2 DD DSN=TCHN260.MC.PS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,0),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) // **************************** Bottom of Data **************************** RESTART FROM PARTICULAR STEP //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,RESTART=STEP02,TIME=5,REGION=5M //STEP01 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN260.KALS.PDS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,1),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) //STEP02 EXEC PGM=IEFBR14 //DD2 DD DSN=TCHN260.MC.PS, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,0),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) // **************************** Bottom of Data **************************** PROCEDURE NESTED PROCEDURE //TCHN223A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //PROC1 //STEP1 //DD1 // // PROC EXEC PGM=IEFBR14 DD DSN=TCHN223.JAGAN.PS4,DISP=(NEW,KEEP), SPACE=&NARESH, DCB=(LRECL=80,BLKSIZE=800,RECFM=FB)

//PE1 PEND //PROC2 PROC //INV3 EXEC PROC1,NARESH=(TRK,(1,1),RLSE) //STEP2 EXEC PGM=IEBGENER //SYSUT1 DD DSN=TCHN223.JAGAN.PS1,DISP=OLD //SYSUT2 DD DSN=TCHN223.JAGAN.PS4,DISP=OLD //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //PE2 PEND //PROC3 PROC //INV2 EXEC PROC2 //STEP2.SYSUT1 DD DSN=TCHN223.JAGAN.PS2 //STEP3 EXEC PGM=IEFBR14 //DD3 DD DSN=TCHN223.JAGAN.PS4,DISP=(OLD) //PE3 PEND //INV1 EXEC PROC3 // INSTREAM PROCEDURE //TCHN111A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //INST1 PROC //STEP01 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN111.KAL.PS, // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800), // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,0),RLSE) //INST1 PEND //INST2 PROC //STEP02 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN111.KAL.PDS, // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800), // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,6),RLSE) //INST2 PEND //STEPAB EXEC PROC=INST1 //STEPAC EXEC PROC=INST2 //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* // **************************** Bottom of Data **************************** CATALOG PROCEDURE CATALOG MAIN PROGRAM //TCHN206A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M // JCLLIB ORDER=TCHN111.SARAN.JCL //STEP01 EXEC PROCE //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* // PROCE

//PROCE PROC //STEP01 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN260.KALL.PS, // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800), // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1,0),RLSE) // **************************** Bottom of Data **************************** OVERRIDE EXEC PROC1 //PROC1 PROC //S1 EXEC PGM=PROG1,COND=(4,GT) //DD1 DD DSN=FILE1,DISP=SHR Main Job //JOB1 JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //S2 EXEC PROC1,COND.S1=(0,EQ) //SYSOUT DD SYSOUT=* **************************** Bottom of Data **************************** DDOVERRIDE //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //INST1 PROC //STEP01 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN260.AA.PS, // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800), // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,0),RLSE) //INST1 PEND //STEPAB EXEC PROC=INST1 //STEP01.DD1 DD DSN=TCHN260.BB.PS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* // **************************** Bottom of Data **************************** SYMBOLIC OVERRIDE //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15,TIME=5,REGION=5M //INST1 PROC //STEP01 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN260.&A..&B, // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800), // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,16,0),RLSE) //INST1 PEND //INST2 PROC //STEP02 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN260.&C..&D, // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800), // DISP=(NEW,CATLG,DELETE),

// SPACE=(TRK,(1,16,6),RLSE) //INST2 PEND //STEPAB EXEC PROC=INST1,A=KAL,B=PS //STEPAC EXEC PROC=INST2,C=KAL,D=PDS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* // **************************** Bottom of Data **************************** SYMBOLIC OVERRIDE WHILE INVOKING //TCHN229A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //PROC1 PROC A=60,B=600,C=FB //STEP1 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN229.NEW.PS,DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(3,2),RLSE), // DCB=(LRECL=&A,BLKSIZE=&B,RECFM=&C) //PROC1 PEND //STEP2 EXEC PROC=PROC1 //STEP1.DD1 DD LRECL=80,BLKSIZE=800 **************************** Bottom of Data **************************** SYBOLIC OVERRIDE WITH SET STATEMENT CONCETENATION //TCHN434A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M // SET A=TCHN434 // SET B=JCL // SET C=SORT //*JCL TO CONCATENATE THE INPUT FILES IN SO //*MAXIMUM 255 FILES CAN BE CONCATENATED. //STEP1 EXEC PGM=SORT //SORTIN DD DSN=&A..&B.N.&C,DISP=SHR // DD DSN=&A..JCL.PDS(WHEN),DISP=SHR // DD DSN=&A..JCL.PDS(WHEN),DISP=SHR //SORTOUT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1,3,BI,A) /* // **************************** Bottom of Data **************************** GDG GDG BASE //TCHN260A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE GDG(NAME(TCHN260.TRAINING.GDG)LIMIT(3)EMPTYNOSCRATCH) /* // **************************** Bottom of Data ****************************

GDG MODEL //TCHN260A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IEFBR14 //DSCB DD DSN=TCHN260.GDG.MOD,DISP=(,CATLG,), // SPACE=(TRK,(3,2),RLSE), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=800) //SYSIN DD DUMMY **************************** Bottom of Data **************************** GDG GENERATION //TCHN260A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN260.FILE2.GDG(+3), // DISP=(,CATLG,), // SPACE=(TRK,(3,2),RLSE), // DCB=TCHN260.GDG.MOD // **************************** Bottom of Data **************************** ALTERING GDG //TCHN260A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * ALTER TCHN260.FILE2.GDG LIMIT(2) /* // **************************** Bottom of Data **************************** DELETING GDG //TCHN260A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DELETE TCHN260.FILE2.GDG /* // **************************** Bottom of Data **************************** DELETING GDG WITH PURGE //TCHN260A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DELETE TCHN260.FILE2.GDG PURGE /* // **************************** Bottom of Data **************************** DELETING GDG WITH FORCE //TCHN260A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DELETE TCHN260.FILE2.GDG FORCE /* //

**************************** Bottom of Data **************************** IF THEN ELSE //TCHN639A JOB NOTIFY=&SYSUID,CLASS=C,TIME=5,REGION=5M //STEP1 EXEC PGM=IEBCOMPR //SYSUT1 DD DSN=TCHN639.SAMPLE1.PS,DISP=SHR //SYSUT2 DD DSN=TCHN639.SAMPLE1.PS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSIN DD * COMPARE TYPORG=PO /* // IF (STEP1.RC EQ 0) THEN //STEP2 EXEC PGM=IEBGENER,COND=(4,EQ,STEP1) //SYSUT1 DD * SAME CONTENT /* //SYSUT2 DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY // ELSE //STEP3 EXEC PGM=IEBGENER,COND=(0,EQ) //SYSUT1 DD * DIFF CONTENT /* //SYSUT3 DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY /* // ENDIF // **************************** Bottom of Data **************************** JOBLIB //TCHN260A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //JOBLIB DD DSN=TCHN160.SARAN.LOAD,DISP=SHR //S1 EXEC PGM=A4 //SYSOUT DD SYSOUT=* //SYSIN DD * /* //S2 EXEC PGM=A5 //SYSIN DD * /* **************************** Bottom of Data **************************** PERFORMANCE INCREASED BY USING WORKFILE //TCHN117$ JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B, // REGION=5M,NOTIFY=&SYSUID,TIME=5 //STEP1 EXEC PGM=SORT //SORTIN DD * 101 RAJA 102 SURESH 103 GANESH //SORTWKF DD DSN=&&WORKFILE,DISP=(NEW,PASS), // SPACE=(TRK,(2,1)) //SORTOUT DD TCHN117.AISHU1.JCL5(SORTOUT),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FORMAT=CH,FIELDS=(1,3,A) /*

// **************************** Bottom of Data **************************** INCLUDE //TCHN120J JOB NOTIFY=&SYSUID,CLASS=A,MSGLEVEL=(1,1),REGION=5M,TIME=(5) // JCLLIB ORDER=TCHN120.ARUNJCL.PDS //STEP1 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN120.SDS.PS,DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(3,2),RLSE), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB) //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //STEP2 EXEC PGM=IEFBR14 //I1 INCLUDE MEMBER=PROC1 //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* // //SP1 EXEC PGM=IEFBR14,COND=(0,EQ,STEP1) //DD1 DD DSN=TCHN120.BANU21.PS,DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(3,2),RLSE), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB) //SYSPRINT DD SYSOUT=* **************************** Bottom of Data **************************** LIKE //TCHN434A JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //*JCL TO SHOW THE USAGE OF LIKE PARAMETER. //STEP2 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN280.SWAMI.PS, // DISP=(NEW,CATLG,DELETE), // LIKE=TCHN280.I1.PS **************************** Bottom of Data **************************** PASS //TCHN223K JOB REGION=5M,TIME=5,NOTIFY=&SYSUID,TIME=5,REGION=5M //STEP1 //DD1 // // // //STEP2 //SYSUT1 //SYSUT2 //SYSPRINT //SYSIN /* // EXEC PGM=IEFBR14 DD DSN=TCHN223.JAGAN.PASS1,DISP=(NEW,PASS,DELETE), SPACE=(TRK,(1,1),RLSE), DCB=(BLKSIZE=800,RECFM=FB,LRECL=80) EXEC PGM=IEBGENER DD DSN=TCHN223.JAGAN.PS1,DISP=SHR DD DSN=TCHN223.JAGAN.PASS1,DISP=SHR DD SYSOUT=* DD *

**************************** Bottom of Data **************************** REFERBACK //TCHN225A JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=IEFBR14 //DD1 DD DSN=TCHN225.I1.PS,DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(3,3)),DCB=(LRECL=80,BLKSIZE=800,RECFM=FB) //DD2 DD DSN=TCHN225.I2.PS,DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(3,3)),DCB=*.DD1 //SYSPRINT DD SYSOUT=*

//SYSOUT DD SYSOUT=* // **************************** Bottom of Data **************************** VSAM PROGRAMS **************************** Bottom of Data **************************** KSDS CREATION WITH IDCAMS //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15 //STEP01 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * DEFINE CLUSTER(NAME(TCHN260.SA.KSDS2)TRK(5,6)KEYS(3,1)FREESPACE(40,40)RECSZ(80,80)CISZ(4096)INDEXED) /* // **************************** Bottom of Data **************************** KSDS CREATION WITHOUT IDCAMS //TCHN111A JOB NOTIFY=TCHN111,CLASS=A,PRTY=15 //STEP1 EXEC PGM=IEFBR14 //KSDSFILE DD DSN=TCHN111.EE.KSDS4, // DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(10,10),), // LRECL=50,KEYOFF=0,KEYLEN=9,RECORG=KS // **************************** Bottom of Data **************************** ESDS CREATION WITH IDCAMS //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15 //STEP01 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * DEFINE CLUSTER(NAME(TCHN260.SA.ESDS2)TRK(5 6)RECSZ(80 80)CISZ(32768)NONINDEXEDFOR(10)) DATA(NAME(TCHN26.SA1.ESDS.DATA)) /* // **************************** Bottom of Data **************************** ESDS CREATION WITHOUT IDCAMS //TCHN111A JOB NOTIFY=TCHN111,CLASS=A,PRTY=15 //STEP1 EXEC PGM=IEFBR14 //ESDSFILE DD DSN=TCHN111.EE.ESDS, // DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(10,10),), // LRECL=50,RECORG=ES

// **************************** Bottom of Data **************************** RRDS CREATION WITH IDCAMS //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15 //STEP01 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * DEFINE CLUSTER(NAME(TCHN260.SA.RRDS2)TRK(5,6)RECSZ(80,80)CISZ(512)NUMBERED) /* // **************************** Bottom of Data **************************** CREATION OF VRRDS //TCHN639$ JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B, // REGION=5M,NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE CL(NAME(TCHN639.SARANYA.VRRDS) TRACKS(2,1) VOLUMES(TCHN01) RECSZ(40,80) FSPC(10,10) CISZ(4096) NUMBERED) /* // **************************** Bottom of Data **************************** RRDS CREATIONWITHOUT IDCAMS //TCHN111A JOB NOTIFY=TCHN111,CLASS=A,PRTY=15 //STEP1 EXEC PGM=IEFBR14 //RRDSFILE DD DSN=TCHN111.EE.RRDS, // DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(10,10),), // LRECL=50,RECORG=RR // **************************** Bottom of Data **************************** LDS CREATION //TCHN260V JOB NOTIFY=TCHN260 //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE CLUSTER (NAME(TCHN260.LINEAR.CLU) TRK(2,2) LINEAR) /* // **************************** Bottom of Data **************************** ALTERING NAME

//TCHN260V JOB NOTIFY=TCHN260 //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * ALTER TCHN260.SA.KSDS NEWNAME(TCHN260.SARY.KSDS) /* // **************************** Bottom of Data **************************** ALTERING FREESPACE //TCHN260A JOB NOTIFY=TCHN260 //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * ALTER TCHN260.SA.KSDS.DATAFREESPACE(20 20) /* // **************************** Bottom of Data **************************** ADDING INHIBIT //TCHN639$ // //STEP1 //SYSPRINT //SYSIN JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B,TIME=5, REGION=5M,NOTIFY=&SYSUID EXEC PGM=IDCAMS DD SYSOUT=* DD * ALTER TCHN639.SARANYA.KSDS.DATA INHIBIT

/* // **************************** Bottom of Data **************************** ALTERING NAME //TCHN639$ JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B, // REGION=5M,NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * ALTER TCHN639.SARANYA.COBOLPGM NEWNAME(TCHN639.SARANYA.COBOL) /* // **************************** Bottom of Data **************************** ADDING VOLUMES //TCHN280A JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * ALTER TCHN280.KSDS.CLUSADD VOLUMES(TCHN05,TCHN06) /* // **************************** Bottom of Data **************************** REPRO

//TCHN260B JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15 //STEP01 EXEC PGM=IDCAMS //DD1 DD DSN=TCHN260.SA.RRDS2,DISP=SHR //DD2 DD DSN=TCHN260.SARAN.VSAM(NEW),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * REPRO INFILE(DD2) OUTFILE(DD1) /* // **************************** Bottom of Data **************************** REPRO REUSE //TCHN639$ JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B, // REGION=5M,NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //DD1 DD DSN=TCHN639.SARANYA.PS,DISP=SHR //DD2 DD DSN=TCHN639.SARANYA.REUKSDS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSIN DD * REPRO IFILE(DD1) OFILE(DD2) REUSE /* // **************************** Bottom of Data **************************** REPRO REPLACE //TCHN639$ JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B, // REGION=5M,NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //DD1 DD DSN=TCHN639.SARANYA.PS,DISP=SHR //DD2 DD DSN=TCHN639.SARANYA.REUKSDS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSIN DD * REPRO IFILE(DD1) OFILE(DD2) REPLACE /* // **************************** Bottom of Data **************************** REPRO WITH MODAL COMMAND //TCHN639$ JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B, // REGION=5M,NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //INPUTFI DD DSN=TCHN639.SARANYA.PS,DISP=SHR //BACKUP DD DSN=TCHN639.SARANYA.KSDS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSIN DD * REPRO IFILE(INPUTFI) OFILE(BACKUP) IF LASTCC = 0 THEN LISTCAT ENT(TCHN639.SARANYA.KSDS) ALL ELSE PRINT IDS(TCHN639.SARANYA.PS) CH

/* // **************************** Bottom of Data **************************** REPRO FROM ADDRESS AND TO ADDRESS //TCHN260B JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15 //STEP01 EXEC PGM=IDCAMS //DD1 DD DSN=TCHN260.SA.ESDS2,DISP=SHR //DD2 DD DSN=TCHN260.SARAN.VSAM(NEW),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * REPRO INFILE(DD2) OUTFILE(DD1) FROMADDRESS(0)TOADDRESS(160) /* // **************************** Bottom of Data **************************** REPRO FROM NUMBER AND TO NUMBER //TCHN260B JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15 //STEP01 EXEC PGM=IDCAMS //DD1 DD DSN=TCHN260.SA.RRDS2,DISP=SHR //DD2 DD DSN=TCHN260.SARAN.VSAM(NEW),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * REPRO INFILE(DD2) OUTFILE(DD1) FROMNUMBER(0)TONUMBER(160) /* // **************************** Bottom of Data **************************** REPRO FROM KEY TO KEY /TCHN260B JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15 //STEP01 EXEC PGM=IDCAMS //DD1 DD DSN=TCHN260.SA.KSDS2,DISP=SHR //DD2 DD DSN=TCHN260.SARAN.VSAM(NEW),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * REPRO INFILE(DD2) OUTFILE(DD1) FROMKEY(0)TOKEY(160) /* //

**************************** Bottom of Data **************************** DELETE ERASE //TCHN260A JOB NOTIFY=&SYSUID //STEP01 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=*

//SYSIN DD * DELETE TCHN260.SAR.ESDSERASE /* **************************** Bottom of Data **************************** DELETE FORCE //TCHN260A JOB NOTIFY=&SYSUID //STEP01 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * DELETE TCHN260.SAR.ESDSFORCE /* **************************** Bottom of Data **************************** EXPORT //TCHN260A JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B, // REGION=5M,NOTIFY=&SYSUID //EXPORT EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //BACKUP DD DSN=TCHN260.SARAN.PS3,DISP=SHR //SYSIN DD * EXPORT TCHN260.SA.RRDS2 OUTFILE(BACKUP) /* // **************************** Bottom of Data **************************** EXPORT TEMPORARY AND NOINHIBIT //TCHN639S JOB D52,'SARANYA B',NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //DD1 DD DSN=TCHN639.SARANYA.BACK,DISP=(NEW,CATLG), // SPACE=(TRK,(1,1)),DCB=(BLKSIZE=800), // UNIT=3390 //SYSIN DD * EXPORT TCHN639.SARANYA.KSDS1 OFILE(DD1) TEMPORARY NOINHIBITSOURCE /* **************************** Bottom of Data **************************** EXPORT PERMENANT //TCHN639A JOB D52,'SARANYA B',TIME=5,REGION=5M,CLASS=B, // PRTY=14,MSGCLASS=X,NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //********** THIS PROGRAM TO LOAD THE DATAS TO ANOTHER DATASET //******** TAKING BACKUP FROM CLUSTER WITH ANOTHER FILE(LOAD) //** TEMPORARY ---> KEEP THE SOURCE CLUSTER //*** PERMENANET --> SYSTEM DELETE'S THE SOURCE CLUSTER //SYSPRINT DD SYSOUT=* //DD1 DD DSN=TCHN639.SARANYA.BACKSDS,DISP=(NEW,CATLG), // SPACE=(TRK,(1,1)),DCB=(BLKSIZE=800), // UNIT=3390 //SYSIN DD * EXPORT TCHN639.SARANYA.KSDS -

OFILE(DD1) INHIBITSOURCE INHIBITTARGET

/* **************************** Bottom of Data **************************** IMPORT //TCHN639S JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B, // REGION=5M,NOTIFY=&SYSUID //IMPORT EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * IMPORT IDS(TCHN639.SARANYA.BACKSDS) ODS(TCHN639.SARANYA.KSDS) /* // **************************** Bottom of Data **************************** PRINT //TCHN260A JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * PRINT IDS(TCHN260.SA.RRDS2)CHARACTER SKIP(2)COUNT(2) /* // PRINT USING ADDRESS //TCHN280A JOB NOTIFY=&SYSUID //*TO PRINT THE ESDS RECORDS SELECTIVELY IN SPOOL. //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * PRINT INDATASET(TCHN280.ESDS2.CLUS) CHARFROMADDRESS(0)TOADDRESS(160) /* // **************************** Bottom of Data **************************** //TCHN280A JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * PRINT INDATASET(TCHN280.KSDS6.CLUS) CHARFROMKEY(E002)TOKEY(E004) /* // **************************** Bottom of Data ****************************

//TCHN280A JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * PRINT INDATASET(TCHN280.RRDS.CLUS) CHARFROMNUMBER(2)TONUMBER(5) /* // **************************** Bottom of Data **************************** //TCHN639P JOB ,'SARANYA B',MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B,TIME=5, // REGION=5M,NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * PRINT IDS(TCHN639.SARANYA.KSDS) DUMP /* // **************************** Bottom of Data ************ LISTCAT //TCHN108V JOB ,'SATHISH B',MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B,TIME=5, // REGION=5M,NOTIFY=&SYSUID //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * /* THIS IS HISTORY */ LISTCAT ENTRIES(TCHN108.SATHISH.RKSDS) ALL /* // **************************** Bottom of Data **************************** VERIFY //TCHN260A JOB NOTIFY=&SYSUID //VERIFY EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //DD1 DD DSN=TCHN260.SA.KSDS2,DISP=SHR //SYSIN DD * VERIFY FILE(DD1) /* // **************************** Bottom of Data **************************** ALTERNATE INDEX //TCHN260A JOB NOTIFY=&SYSUID,CLASS=A,PRTY=15 //STEP01 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * DEFINE CLUSTER(NAME(TCHN260.FA.KSDS4)TRK(5,6)KEYS(3,1)FREESPACE(40,40)RECSZ(80,80)CISZ(4096)-

INDEXED) /* //STEP02 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * REPRO IDS(TCHN260.SARAN.PS)ODS(TCHN260.FA.KSDS4) /* //STEP03 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * DEFINE AIX(NAME(TCHN260.FA.AIX)RELATE(TCHN260.FA.KSDS4)TRK(1 1)KEYS(1 5)CISZ(4096)RECSZ(80 80)NONUNIQUEKEYUPGRADE) /* //STEP04 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * DEFINE PATH(NAME(TCHN260.FA.PATH)PATHENTRY(TCHN260.FA.AIX)UPDATE) /* //STEP05 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * BLDINDEX IDS(TCHN260.FA.KSDS4)ODS(TCHN260.FA.AIX) /* // **************************** Bottom of Data ****************************

COBOL PROGRAMS **************************** Bottom of Data **************************** COBOL COMPILE //TCOM114M JOB NOTIFY=&SYSUID,REGION=5M,TIME=5 //STEP1 EXEC IGYWCL //COBOL.SYSIN DD DSN=TCOM114.SARAN.COBREM(COND4),DISP=SHR //LKED.SYSLMOD DD DSN=TCOM114.SARAN.LOADLIB(COND4),DISP=SHR COMPILE PROGRAM //TCHN002$ JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B, // REGION=5M,NOTIFY=&SYSUID //********************************************************************** //* INPUT AREA * //********************************************************************** // SET MEMBER=DYNSUB <- PROGRAM MEMBER NAME // SET SOURCE=TCHN002.THUSH.COBOL.CATP <- PROGRAM LIBRARY // SET LOADLIB=TCHN002.GENERAL.LOAD <- LOAD LIBRARY

// SET SLIB=TCHN002.SUDHA.GENERAL.COBOL <- COPY BOOK LIBRARY //********************************************************************** //* COMPILE THE COBOL PROGRAM * //********************************************************************** //COBCOMP EXEC PGM=IGYCRCTL, // PARM='LIB,XREF(FULL),SSRANGE,TEST(SYM),LIST' //SYSIN DD DSN=&SOURCE(&MEMBER),DISP=SHR <--INPUT SOURCE //SYSPRINT DD SYSOUT=* //SYSLIN DD DSNAME=&&LOADSET,UNIT=SYSDA, <--OUTPUT OBJECT // DISP=(MOD,PASS),SPACE=(TRK,(3,3)), // DCB=(BLKSIZE=3200) //SYSLIB DD DISP=SHR,DSN=&SLIB //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT4 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT5 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT6 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT7 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //********************************************************************** //* LINK EDIT THE COBOL PROGRAM * //********************************************************************** //LINKEDIT EXEC PGM=IEWL,COND=(4,LT,COBCOMP), // PARM='LET,AMODE=31,RMODE=ANY,REUS' //* PARM=DYNAM,RENT //SYSLIB DD DISP=SHR,DSN=CEE.SCEELKED // DD DISP=SHR,DSN=CEE.SCEERUN // DD DISP=SHR,DSN=&LOADLIB //SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DISP=SHR,DSN=&LOADLIB(&MEMBER) //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSUT1 DD SPACE=(1043,(50,50)),UNIT=SYSDA <-50 RECDS@1043BYTES EACH //* COMPILER OPTIONS: //* QUOTE -(DEFAULT) IF THE FIGURATIVE CONTANT QUOTE NEEDS TO REFER " //* APOST -IF THE FIGURATIVE CONTANT QUOTE NEEDS TO REFER ' **************************** Bottom of Data **************************** COBOL RUN //TCOM114N JOB NOTIFY=&SYSUID,REGION=5M,TIME=5 //STEP1 EXEC PGM=COND4 //STEPLIB DD DSN=TCOM114.SARAN.LOADLIB,DISP=SHR //SYSOUT DD SYSOUT=* //SYSIN DD * 56 /* // **************************** Bottom of Data **************************** ADDITION ID DIVISION. PROGRAM-ID. ADD1. DATA DIVISION. WORKING-STORAGE SECTION 01 A PIC 9(2). 01 B PIC 9(2). PROCEDURE DIVISION. ACCEPT A.

ACCEPT B. ADD A TO B. DISPLAY "A=" A. DISPLAY "B=" B. STOP RUN. **************************** Bottom of Data **************************** SUBTRACTION ID DIVISION. PROGRAM-ID. SUB1. DATA DIVISION. WORKING-STORAGE SECTION. 01 A PIC 9(2). 01 B PIC 9(2). PROCEDURE DIVISION. ACCEPT A. ACCEPT B. SUBTRACT 15 FROM A,B. DISPLAY "A=" A. DISPLAY "B=" B. STOP RUN. **************************** Bottom of Data **************************** MULTIPLICATION ID DIVISION. PROGRAM-ID. MUL. DATA DIVISION. WORKING-STORAGE SECTION. 01 A PIC 9(2). 01 B PIC 9(2). 01 C PIC 9(2). 01 D PIC 9(2). PROCEDURE DIVISION. ACCEPT A. ACCEPT B. ACCEPT C. ACCEPT D. MULTIPLY A BY B,C,D. DISPLAY "A=" A. DISPLAY "B=" B. DISPLAY "C=" C. DISPLAY "D=" D. STOP RUN. **************************** Bottom of Data **************************** DIVISION ID DIVISION. PROGRAM-ID. DIV1. DATA DIVISION. WORKING-STORAGE SECTION. 01 A PIC 9(2). 01 B PIC 9(1). PROCEDURE DIVISION. ACCEPT A. ACCEPT B. DIVIDE A BY B GIVING C. DISPLAY "A:" A. DISPLAY "B:" B.

STOP RUN. **************************** Bottom of Data **************************** FLOATING POINT ADDITION ID DIVISION. PROGRAM-ID. FPA. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC S9(2)V9(2) VALUE +23.34. 77 B PIC S9(2)V9(2) VALUE +34.33. 77 C PIC S9(2)V9(2). PROCEDURE DIVISION. ACCEPT A. ACCEPT B. ADD A TO B GIVING C. DISPLAY A. DISPLAY B. DISPLAY "C=" C. STOP RUN. **************************** Bottom of Data **************************** ONSIZE ERROR ID DIVISION. PROGRAM-ID. ONS. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC 9(2). 77 B PIC 9(2). 77 C PIC 9(2). PROCEDURE DIVISION. ACCEPT A. ACCEPT B. ADD A TO B GIVING C ON SIZE ERROR DISPLAY "ERROR". DISPLAY A. DISPLAY B. DISPLAY C. STOP RUN. **************************** Bottom of Data **************************** ROUNDED ID DIVISION. PROGRAM-ID. ROUND. DATA DIVISION. WORKING-STORAGE SECTION. 01 A PIC 9(2)V9(2) VALUE 45.37. 01 B PIC 9(2)V9(2) VALUE 33.98. 01 C PIC 9(2).9(1). PROCEDURE DIVISION. ADD A TO B GIVING C ROUNDED. DISPLAY A. DISPLAY B. DISPLAY "C=" C. STOP RUN. **************************** Bottom of Data **************************** PRECISION DATA TYPE ID DIVISION.

PROGRAM-ID. ADD1. DATA DIVISION. WORKING-STORAGE SECTION. 01 A PIC 99PP. 01 B PIC 99PP. 01 C PIC PP99. 01 D PIC PP99. 01 E PIC 99. 01 F PIC 9999V9999. PROCEDURE DIVISION. ACCEPT A. ACCEPT B. ACCEPT C. ACCEPT D. MOVE LENGTH OF A TO E. ADD A TO C GIVING F. DISPLAY "A=" A. DISPLAY "B=" B. DISPLAY "C=" C. DISPLAY "D=" D. DISPLAY "E=" E. DISPLAY "F=" F. STOP RUN. **************************** Bottom of Data **************************** SIMPLE PERFORM ID DIVISION. PROGRAM-ID. PERFORM1. DATA DIVISION. WORKING-STORAGE SECTION. 01 A PIC A(8) VALUE "NAN". PROCEDURE DIVISION. PERFORM NEW. NEW. DISPLAY "HELLO " A "DY". STOP RUN. **************************** Bottom of Data **************************** PERFORM THRU AND TIMES ID DIVISION. PROGRAM-ID. ADD1. DATA DIVISION. WORKING-STORAGE SECTION. 01 A PIC 9(2). 01 B PIC 9(2). 01 C PIC 9(2). PROCEDURE DIVISION. ACCEPT A. ACCEPT B. DISPLAY "THE GIVEN VALUES A = " A " & B = " B. PERFORM PARA1 THRU PARA2 2 TIMES. STOP RUN. PARA1. DISPLAY A. PARA2. DISPLAY B. **************************** Bottom of Data **************************** PERFORM VARYING AND AFTER

ID DIVISION. PROGRAM-ID. PARAU. DATA DIVISION. WORKING-STORAGE SECTION. 01 I PIC 9(1). 01 J PIC 9(1). PROCEDURE DIVISION. PERFORM PARA VARYING I FROM 1 BY 1 UNTIL I > 3 AFTER J FROM 1 BY 1 UNTIL J > 3. STOP RUN. PARA. DISPLAY "I J" I J. DISPLAY "WELCOME". **************************** Bottom of Data **************************** PERFORM WITH TEST AFTER AND WITH TEST BEFORE AND UNTIL ID DIVISION. PROGRAM-ID. ADD1. DATA DIVISION. WORKING-STORAGE SECTION. 01 I PIC 9(1) VALUE 1. PROCEDURE DIVISION. PERFORM PARA WITH TEST AFTER UNTIL I = 1. STOP RUN. PARA. DISPLAY I. COMPUTE I = I + 1. DISPLAY I. **************************** Bottom of Data **************************** EVALUATE ID DIVISION. PROGRAM-ID. EVEN. DATA DIVISION. WORKING-STORAGE SECTION. 01 MARKS PIC 9(2). PROCEDURE DIVISION. ACCEPT MARKS. EVALUATE MARKS WHEN 90 THRU 99 DISPLAY "DISTICTION" WHEN 80 THRU 89 DISPLAY "FIRST CLASS" WHEN 70 THRU 79 DISPLAY "SECOND CLASS" WHEN 60 THRU 69 DISPLAY "THIRD CLASS" WHEN 50 THRU 59 DISPLAY "WORSE". * WHEN OTHER DISPLAY "FAIL" * END-EVALUATE. STOP RUN. **************************** Bottom of Data **************************** IF ID DIVISION. PROGRAM-ID. IF1. DATA DIVISION. WORKING-STORAGE SECTION. 01 MARK PIC 9(2). PROCEDURE DIVISION. ACCEPT MARK.

IF MARK>=70 AND MARK<=99 DISPLAY"1ST DIVISION" ELSE IF MARK>=60 AND MARK<=69 DISPLAY"2ND DIVISION" ELSE IF MARK>=35 AND MARK<=59 DISPLAY"3RD DIVISION" ELSE IF MARK<=35 DISPLAY"FAIL" END-IF END-IF END-IF END-IF. STOP RUN. **************************** Bottom of Data **************************** COND IDENTIFICATION DIVISION. PROGRAM-ID. COND1. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS00-MARKS PIC 9(3). 88 PASS VALUES ARE 051 THRU 100. 88 NOT-CLEAR VALUES ARE 000 THRU 050. 01 WS00-DISP PIC X(20). PROCEDURE DIVISION. A0000-MAIN-PARA. ACCEPT WS00-MARKS. IF PASS MOVE 'PASSED COMPARE' TO WS00-DISP. IF NOT-CLEAR MOVE 'NOT CLEARED COMPARE' TO WS00-DISP. DISPLAY "INFORMATION IS" WS00-DISP. STOP RUN. **************************** Bottom of Data **************************** COND IDENTIFICATION DIVISION. PROGRAM-ID. COND. DATA DIVISION. WORKING-STORAGE SECTION. 01 CHAR PIC X. 88 VOWEL VALUE "A", "E", "I", "O", "U". 88 CONSONANT VALUE "B", "C", "D", "F" THRU "H" "J" THRU "N", "P" THRU "T", "V" THRU "Z". 88 DIGIT VALUE "0" THRU "9". PROCEDURE DIVISION. DISPLAY "ENTER ANY CHARACTER:". ACCEPT CHAR. EVALUATE TRUE WHEN VOWEL DISPLAY "LETTER" CHAR "VOW" WHEN CONSONANT DISPLAY "LETTER" CHAR "CON" WHEN DIGIT DISPLAY "LETTER" CHAR "DIG" WHEN OTHER DISPLAY "INVALID" END-EVALUATE. STOP RUN. **************************** Bottom of Data **************************** COND

ID DIVISION. PROGRAM-ID. EVEN. DATA DIVISION. WORKING-STORAGE SECTION. 01 MARKS PIC 9(2). 88 DISTINCTION VALUES ARE 90 THRU 99. 88 GRADE-A VALUES ARE 80 THRU 89. 88 GRADE-B VALUES ARE 70 THRU 79. 88 GRADE-C VALUES ARE 60 THRU 69. 88 GRADE-D VALUES ARE 50 THRU 59. 88 FAIL VALUES ARE 00 THRU 49. PROCEDURE DIVISION. ACCEPT MARKS. EVALUATE TRUE WHEN DISTINCTION DISPLAY "VGOOD" WHEN GRADE-A DISPLAY "GOOD" WHEN GRADE-B DISPLAY "BETTER" WHEN GRADE-C DISPLAY "OK" WHEN FAIL DISPLAY "FAIL" * WHEN OTHER DISPLAY "PROBLEM" END-EVALUATE. STOP RUN. **************************** Bottom of Data **************************** COND IDENTIFICATION DIVISION. PROGRAM-ID. COND1. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 77 WS00-MARKS PIC 9(3). 88 PASS VALUES ARE 051 THRU 100. 88 NOT-CLEAR VALUES ARE 000 THRU 050. 01 WS00-DISP PIC X(20). PROCEDURE DIVISION. A0000-MAIN-PARA. ACCEPT WS00-MARKS. IF PASS MOVE 'PASSED COMPARE' TO WS00-DISP. IF NOT-CLEAR MOVE 'NOT CLEARED COMPARE' TO WS00-DISP. DISPLAY "INFORMATION IS" WS00-DISP. STOP RUN. **************************** Bottom of Data **************************** DATE1 IDENTIFICATION DIVISION. PROGRAM-ID. DATEFN. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-CURRENT-DATE-DATA. 05 WS-CURRENT-DATE. 10 WS-CURRENT-YEAR PIC 9(04). 10 WS-CURRENT-MONTH PIC 9(02). 10 WS-CURRENT-DAY PIC 9(02). 05 WS-CURRENT-TIME. 10 WS-CURRENT-HOURS PIC 9(2). 10 WS-CURRENT-MINUTE PIC 9(2). 10 WS-CURRENT-SECOND PIC 9(2).

10 WS-CURRENT-MILLISECONDS PIC 9(2). 05 WS-DIFF-FROM-GMT PIC S9(04). 01 WS-FUTURE-DATE PIC 9(8). 01 WS-DATE-1 PIC 9(8). 01 WS-DATE-2 PIC 9(8). 01 WS-DAYS PIC 9(8). 01 WS-TODAY PIC 9(8). PROCEDURE DIVISION. MOVE FUNCTION CURRENT-DATE TO WS-CURRENT-DATE-DATA. DISPLAY WS-CURRENT-DATE-DATA. DISPLAY "TODAY DATE" WS-CURRENT-DATE. DISPLAY "TIME" WS-CURRENT-TIME. DISPLAY "GMT TIME" WS-DIFF-FROM-GMT. MOVE FUNCTION CURRENT-DATE(1:8) TO WS-TODAY. COMPUTE WS-FUTURE-DATE = FUNCTION DATE-OF-INTEGER (FUNCTION INTEGER-OF-DATE (WS-TODAY) + 150). DISPLAY "TODAY DATE" WS-TODAY. DISPLAY "DATE AFTER 150 DAYS" WS-FUTURE-DATE. MOVE WS-TODAY TO WS-DATE-2. MOVE WS-FUTURE-DATE TO WS-DATE-1. MOVE WS-FUTURE-DATE TO WS-DATE-1. DISPLAY "FUTURE DATE" WS-DATE-1. DISPLAY "TODAY DATE" WS-DATE-2. COMPUTE WS-DAYS = FUNCTION INTEGER-OF-DATE (WS-DATE-1) FUNCTION INTEGER-OF-DATE (WS-DATE-2) DISPLAY "DIFFERENCE OF DATES" WS-DAYS. STOP RUN. **************************** Bottom of Data **************************** DATE2 IDENTIFICATION DIVISION. PROGRAM-ID. DATEFN. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-INTEGER-DATE PIC 9(8). 01 WS-DATE PIC 9(8). 01 WS-DATA PIC 9(8). 01 WS-JULIAN-DATE PIC 9(8). 01 WS-JINT-DATE PIC 9(8). PROCEDURE DIVISION. MOVE FUNCTION CURRENT-DATE (1:8) TO WS-DATE. DISPLAY "INTEGER DATE" WS-DATE. COMPUTE WS-INTEGER-DATE = FUNCTION INTEGER-OF-DATE (WS-DATE) DISPLAY "GREGORIAN DATE" WS-INTEGER-DATE. COMPUTE WS-DATA = FUNCTION DATE-OF-INTEGER (WS-INTEGER-DATE) DISPLAY "INTEGER DATE" WS-DATA. COMPUTE WS-JULIAN-DATE = FUNCTION DAY-OF-INTEGER (WSINTEGER-DATE). DISPLAY "JULIAN DATE" WS-JULIAN-DATE. COMPUTE WS-JINT-DATE = FUNCTION INTEGER-OF-DAY (WSJULIAN-DATE). DISPLAY "INTEGER DATE AGAIN" WS-JINT-DATE. STOP RUN. **************************** Bottom of Data **************************** JUSTIFY ID DIVISION. PROGRAM-ID. JUSTIF.

DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC A(7) VALUE "SARANYA". 77 B PIC A(5). 77 C PIC A(5) JUSTIFIED RIGHT. 77 D PIC 9(5) VALUE 12345. 77 E PIC 9(3). PROCEDURE DIVISION. MOVE A TO B, C. MOVE D TO E. DISPLAY A, B, C, D, E. STOP RUN. **************************** Bottom of Data **************************** CORRESPONDING ID DIVISION. PROGRAM-ID. MOV. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC X(10). 77 B PIC X(10). 01 GRP1. 02 X PIC X(10). 02 Y PIC X(10). 01 GRP2. 02 M PIC X(10). 02 N PIC X(10). 01 EMP1. 02 ENO PIC X(10). 02 ENAME PIC X(10). 01 EMP2. 02 ENO PIC X(10). 02 SAL PIC X(10). PROCEDURE DIVISION. ACCEPT A. MOVE A TO B. ACCEPT X. ACCEPT Y. MOVE GRP1 TO GRP2. ACCEPT ENO OF EMP1. ACCEPT ENAME. MOVE CORR EMP1 TO EMP2. DISPLAY "A=" A. DISPLAY "B=" B. DISPLAY "X=" X. DISPLAY "Y=" Y. DISPLAY "M=" M. DISPLAY "N=" N. DISPLAY "ENO=" ENO OF EMP1. DISPLAY "ENAME=" ENAME. DISPLAY "ENO=" ENO OF EMP2. DISPLAY "SAL=" SAL. STOP RUN. **************************** Bottom of Data **************************** PARM ID DIVISION. PROGRAM-ID. PARM1.

DATA DIVISION. LINKAGE SECTION. 01 PARM. 05 PARM-LENGTH PIC S9(4) COMP. 05 PARM-DATA1 PIC X(4). PROCEDURE DIVISION USING PARM. DISPLAY PARM-DATA1. STOP RUN. **************************** Bottom of Data **************************** REDEFINES ID DIVISION. PROGRAM-ID. FLADD. DATA DIVISION. WORKING-STORAGE SECTION. 01 A. 02 A1 PIC 9(2). 02 A2 PIC 9(2). 01 B REDEFINES A. 02 B1 PIC 9(2). 02 B2 PIC 9(2). PROCEDURE DIVISION. ACCEPT A1. ACCEPT A2. DISPLAY A1. DISPLAY A2. DISPLAY B1. DISPLAY B2. STOP RUN. **************************** Bottom of Data **************************** REDEFINES ID DIVISION. PROGRAM-ID. REDEFINE. DATA DIVISION. WORKING-STORAGE SECTION. 01 A PIC X(10) VALUE "CTS". 01 B REDEFINES A PIC 9(10). PROCEDURE DIVISION. DISPLAY A SPACE B. ACCEPT B. DISPLAY A SPACE B. STOP RUN. **************************** Bottom of Data **************************** RENAME ID DIVISION. PROGRAM-ID. REN. DATA DIVISION. WORKING-STORAGE SECTION. 01 A. 02 A1 PIC 9(2) VALUE 10. 02 A2 PIC 9(2) VALUE 20. 02 A3 PIC 9(2) VALUE 30. 02 A4 PIC 9(2) VALUE 40. 66 B RENAMES A1 THRU A3. 66 C RENAMES A2 THRU A4. PROCEDURE DIVISION.

DISPLAY A. DISPLAY B. DISPLAY C. STOP RUN. **************************** Bottom of Data **************************** USAGE ID DIVISION. PROGRAM-ID. USAGEC. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC 9(8) USAGE IS COMP. 77 B USAGE IS COMP-1. 77 C USAGE IS COMP-2. 77 D PIC 9(8) USAGE IS COMP-3. PROCEDURE DIVISION. MOVE 12345678 TO A, B, C, D. DISPLAY A, B, C, D. DISPLAY LENGTH OF A. DISPLAY LENGTH OF B. DISPLAY LENGTH OF C. DISPLAY LENGTH OF D. STOP RUN. **************************** Bottom of Data **************************** SYNCH ID DIVISION. PROGRAM-ID. SYNC1. DATA DIVISION. WORKING-STORAGE SECTION. 01 A PIC S9(3). 01 B PIC S9(3). 01 C PIC S9(6) COMP SYNC. 01 D PIC 9(2). PROCEDURE DIVISION. ACCEPT A. ACCEPT B. ADD A TO B GIVING C. MOVE LENGTH OF C TO D. DISPLAY "A:" A. DISPLAY "B:" B. DISPLAY "C:" C. DISPLAY "D:" D. STOP RUN. **************************** Bottom of Data **************************** SIMPLE INSERTION ID DIVISION. PROGRAM-ID. FLADD. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC X(9) VALUE "001234560". 77 B PIC 9(6),9(3). 77 C PIC 9(6)B9(3). 77 D PIC 9(6)/9(3). 77 E PIC 9(6)09(3). 77 J PIC Z(9).

PROCEDURE DIVISION. MOVE A TO B, C, D, E. DISPLAY A. DISPLAY B. DISPLAY C. DISPLAY D. DISPLAY E. MOVE B TO F, G. DISPLAY F. DISPLAY G. MOVE C TO H, I. DISPLAY H. DISPLAY I. MOVE A TO J. DISPLAY J. STOP RUN. **************************** Bottom of Data **************************** SPECIAL INSERTION ID DIVISION. PROGRAM-ID. SPECINS. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC S9(6)V9(3) VALUE -123456.789. 77 B PIC +,+++,9(3).9(2). 77 C PIC ++++,9(3).9(2). 77 D PIC +,,+++9(3).9(2). 77 E PIC +,+++9(3).9(2). 77 F PIC +++9(4).9(2). 77 G PIC S9(6)V9(3) VALUE +123456.789. 77 H PIC +,+++,9(3).9(2). PROCEDURE DIVISION. MOVE A TO B, C, D, E, F. MOVE G TO H. DISPLAY A. DISPLAY B. DISPLAY C. DISPLAY D. DISPLAY E. DISPLAY F. DISPLAY G. DISPLAY H. STOP RUN. **************************** Bottom of Data **************************** FIXED INSERTION ID DIVISION. PROGRAM-ID. FLADD. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC S9(4) VALUE -1234. 77 B PIC ++++9. 77 C PIC ----9. 77 D PIC S9(4) VALUE +1234. 77 E PIC ++++9. 77 F PIC ----9. 77 G PIC ---9. PROCEDURE DIVISION.

MOVE MOVE MOVE MOVE STOP

A TO A TO D TO D TO RUN.

B. C. E. F.

**************************** Bottom of Data **************************** FLOATING POINT INSERTION ID DIVISION. PROGRAM-ID. FLADD. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC S9(4) VALUE -1234. 77 B PIC ++++9. 77 C PIC ----9. 77 D PIC S9(4) VALUE +1234. 77 E PIC ++++9. 77 F PIC ----9. 77 G PIC ---9. PROCEDURE DIVISION. MOVE A TO B. MOVE A TO C. MOVE D TO E. MOVE D TO F. MOVE D TO G. DISPLAY A. DISPLAY B. DISPLAY C. DISPLAY D. DISPLAY E. DISPLAY F. DISPLAY G. STOP RUN. **************************** Bottom of Data **************************** INTIALIZE ID DIVISION. PROGRAM-ID. INIT. DATA DIVISION. WORKING-STORAGE SECTION. 01 A. 02 B PIC 9(2) VALUE 23. 02 C PIC X(3) VALUE "A3R". 02 D PIC A(5) VALUE "ABCDE". PROCEDURE DIVISION. DISPLAY A. INITIALIZE A REPLACING NUMERIC BY 94. DISPLAY "A:" A. INITIALIZE A. DISPLAY "A:" A. INITIALIZE A REPLACING ALPHANUMERIC BY "SA94". DISPLAY "A:" A. INITIALIZE A REPLACING ALPHABETIC BY "SARA". DISPLAY "A:" A. STOP RUN. **************************** Bottom of Data **************************** INSPECT

ID DIVISION. PROGRAM-ID. INS1. DATA DIVISION. WORKING-STORAGE SECTION. 77 WS-STR PIC X(20) VALUE 'AAANAN RAM'. 77 WS-CT1 PIC 9(2) VALUE 00. 77 WS-CT2 PIC 9(2) VALUE 00. 77 WS-CT3 PIC 9(2) VALUE 00. 77 WS-CT4 PIC 9(2) VALUE 00. 77 WS-CT5 PIC 9(2) VALUE 00. 77 WS-CT6 PIC 9(2) VALUE 00. 77 WS-CT7 PIC 9(2) VALUE 00. PROCEDURE DIVISION. 000-MAIN-PARA. INSPECT WS-STR TALLYING WS-CT1 FOR ALL 'A', WS-CT2 FOR ALL 'N'. DISPLAY 'THE COUNT OF A IS : ' WS-CT1. DISPLAY 'THE COUNT OF N IS : ' WS-CT2. INSPECT WS-STR TALLYING WS-CT6 FOR CHARACTERS 'A' BEFORE INTIAL 'A'. INSPECT WS-STR TALLYING WS-CT7 FOR ALL 'A' BEFORE INTIAL 'A'. INSPECT WS-STR REPLACING ALL 'A' BY 'K'. INSPECT WS-STR REPLACING FIRST 'A' , 'L' BY 'K'. INSPECT WS-STR REPLACING FIRST 'A' , 'L' BY SPACES. INSPECT WS-STR REPLACING FIRST 'AN' BY 'KL'. INSPECT WS-STR CONVERTING 'AN' BY 'KL'. INSPECT WS-STR TALLYING WS-CT3 FOR ALL 'A' BEFORE INTIAL SPACE. INSPECT WS-STR TALLYING WS-CT4 FOR LEADING 'A' BEFORE INTIAL SPACE. INSPECT WS-STR TALLYING WS-CT5 FOR LEADING 'A' AFTER INTIAL SPACE. DISPLAY 'STRING' WS-STR. STOP RUN. **************************** Bottom of Data **************************** INSPECT ID DIVISION. PROGRAM-ID. INS2. DATA DIVISION. WORKING-STORAGE SECTION. 77 WS-STR PIC X(20) VALUE 'KANNAN RAM'. 77 WS-CT1 PIC 9(2) VALUE 10. PROCEDURE DIVISION. 000-MAIN-PARA. DISPLAY "STRING : " WS-STR. INSPECT WS-STR REPLACING CHARACTERS BY 'X' AFTER INITIAL SPACE. DISPLAY 'THE STRING AFTER REPLACING IS : ' WS-STR. STOP RUN. **************************** Bottom of Data **************************** REF MOD ID DIVISION. PROGRAM-ID. DOLLAR. DATA DIVISION.

WORKING-STORAGE SECTION. 01 A PIC X(9) VALUE "COGNIZANT". 01 B PIC X(10) VALUE "TECHNOLOGY". 01 C PIC X(25). PROCEDURE DIVISION. MOVE A TO C. MOVE "$" TO C(10:1). MOVE B TO C(11:10). DISPLAY "A:" A. DISPLAY "B:" B. DISPLAY "C:" C. STOP RUN. **************************** Bottom of Data **************************** REF MOD ID DIVISION. PROGRAM-ID. REF. DATA DIVISION. WORKING-STORAGE SECTION. 01 S1 PIC X(35) VALUE "COGNIZANT TECHNOLOGY SOLUTIONS". 01 S2 PIC X(6). PROCEDURE DIVISION. MOVE S1(5:6) TO S2. DISPLAY " REF MOD : " S2. STOP RUN. **************************** Bottom of Data **************************** REF MOD ID DIVISION. PROGRAM-ID. REFMODV. DATA DIVISION. WORKING-STORAGE SECTION. 01 S1 PIC X(30) VALUE "COGNIZANT TECHNOLOGY SOLUTIONS". 01 S2 PIC X(30). 01 I PIC 99. PROCEDURE DIVISION. PARA1. PERFORM PARA2 VARYING I FROM 1 BY 1 UNTIL I > 30. STOP RUN. PARA2. MOVE S1(I:) TO S2. DISPLAY S2. **************************** Bottom of Data **************************** STRING ID DIVISION. PROGRAM-ID. UNSTR. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC X(10) VALUE 'COGN IZANT'. 77 B PIC X(11) VALUE 'TECH NOLOGY'. 77 C PIC X(10) VALUE 'SOLU TIONS'. 77 D PIC X(30). 77 E PIC X(30). 77 F PIC X(30). 77 G PIC X(30). 77 H PIC X(30).

77 I PIC X(30). 77 J PIC X(30). 77 K PIC X(30). 77 L PIC X(30). 77 M PIC X(30). 77 N PIC X(30). 77 P1 PIC 99 VALUE 01. 77 P2 PIC 99 VALUE 05. 77 P3 PIC 99 VALUE 10. 77 P4 PIC 99 VALUE 20. 77 P5 PIC 99 VALUE 30. 77 P6 PIC 99 VALUE 01. PROCEDURE DIVISION. 000-MAIN-PARA. STRING A, B, C DELIMITED BY SIZE INTO D. STRING A, B, C DELIMITED BY SPACE INTO E. STRING A, B, C DELIMITED BY 'O' INTO F. STRING A, B, C DELIMITED BY SPACE INTO G ON OVERFLOW DISPLAY "ERROR" NOT ON OVERFLOW DISPLAY "NO ERROR" END-STRING. STRING A '-' , B '-' , C'-' DELIMITED BY 'O' INTO H. STRING A, B, C DELIMITED BY SIZE INTO I WITH POINTER P1. STRING A, B, C DELIMITED BY SIZE INTO J WITH POINTER P2. STRING A, B, C DELIMITED BY SIZE INTO K WITH POINTER P3. STRING A, B, C DELIMITED BY SIZE INTO L WITH POINTER P4. STRING A, B, C DELIMITED BY SIZE INTO M WITH POINTER P5. STRING A, B DELIMITED BY SIZE INTO N WITH POINTER P6. DISPLAY " A : " A. DISPLAY " B : " B. DISPLAY " C : " C. DISPLAY " D : " D. DISPLAY " E : " E. DISPLAY " F : " F. DISPLAY " G : " G. DISPLAY " H : " H. DISPLAY " I : " I. DISPLAY " J : " J. DISPLAY " K : " K. DISPLAY " L : " L. DISPLAY " M : " M. DISPLAY " N : " N. DISPLAY " P1 00 : " P1. DISPLAY " P2 05 : " P2. DISPLAY " P3 10 : " P3. DISPLAY " P4 20 : " P4. DISPLAY " P5 30 : " P5. DISPLAY " P6 01 : " P6. STOP RUN. **************************** Bottom of Data **************************** STRING ID DIVISION. PROGRAM-ID. UNSTR. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC X(10) VALUE 'COGNIZANT'. 77 B PIC X(11) VALUE 'TECHNOLOGY'. 77 C PIC X(9) VALUE 'SOLUTIONS'.

77 D PIC X(32) VALUE SPACES. PROCEDURE DIVISION. 000-MAIN-PARA. STRING A "-" DELIMITED BY SPACE B "-" DELIMITED BY SPACE C " " DELIMITED BY SPACE INTO D. DISPLAY " A : " A. DISPLAY " B : " B. DISPLAY " C : " C. DISPLAY " D : " D. STOP RUN. **************************** Bottom of Data **************************** UNSTRING ID DIVISION. PROGRAM-ID. UNSTR. DATA DIVISION. WORKING-STORAGE SECTION. 77 WS-STR PIC X(40) VALUE 'COGNIZANT TECHNOLOGY SOLUTIONS'. 77 WS-STR1 PIC X(10) VALUE SPACES. 77 WS-STR2 PIC X(10) VALUE SPACES. 77 WS-STR3 PIC X(10) VALUE SPACES. 77 P PIC 9(2) VALUE 04. 77 A PIC 9(2) VALUE 10. 77 Y PIC 9(2). PROCEDURE DIVISION. 000-MAIN-PARA. UNSTRING WS-STR DELIMITED BY SPACES INTO WS-STR1 WS-STR2 WS-STR3. DISPLAY WS-STR. DISPLAY WS-STR1. DISPLAY WS-STR2. DISPLAY WS-STR3. UNSTRING WS-STR DELIMITED BY SPACES INTO WS-STR1 WS-STR2 WS-STR3 WITH POINTER P ON OVERFLOW DISPLAY "OVERFLOW ERROR" NOT ON OVERFLOW DISPLAY "NO ERROR" END-UNSTRING. DISPLAY WS-STR1. DISPLAY WS-STR2. DISPLAY WS-STR3. DISPLAY "P 04 " P. UNSTRING WS-STR DELIMITED BY 'O' INTO WS-STR1 WS-STR2 WS-STR3 WITH POINTER A TALLYING IN T. DISPLAY WS-STR1. DISPLAY WS-STR2. DISPLAY WS-STR3. DISPLAY "A 10 " A. DISPLAY "T" T. STOP RUN. **************************** Bottom of Data **************************** UNSTRING ID DIVISION.

PROGRAM-ID. UNSTR. DATA DIVISION. WORKING-STORAGE SECTION. 77 WS-STR PIC X(40) VALUE 'COGNIZANT TECHNOLOGY SOLUTIONS'. 77 WS-STR1 PIC X(10) VALUE SPACES. 77 WS-STR2 PIC X(21) VALUE SPACES. 77 WS-STR3 PIC X(10) VALUE SPACES. PROCEDURE DIVISION. 000-MAIN-PARA. UNSTRING WS-STR DELIMITED BY "I" INTO WS-STR1 WS-STR2 WS-STR3. DISPLAY WS-STR. DISPLAY WS-STR1. DISPLAY WS-STR2. DISPLAY WS-STR3. STOP RUN. **************************** Bottom of Data **************************** DYNAMIC CALL ID DIVISION. PROGRAM-ID. DCALL. DATA DIVISION. WORKING-STORAGE SECTION. 01 A PIC 9(2) VALUE 00. 01 B PIC 9(2) VALUE 00. 77 PGM PIC X(8). PROCEDURE DIVISION. MAIN. ACCEPT PGM. DISPLAY "MAIN PGM". DISPLAY "A" A. DISPLAY "B" B. DISPLAY "MAIN CALLING SUB BY REFERENCE". CALL PGM USING BY REFERENCE A, B. CANCEL PGM. DISPLAY "PGM CANCELLED" DISPLAY "AFTER CALLING SUB THE FIRST TIME ". DISPLAY " A: " A. DISPLAY " B: " B. DISPLAY "MAIN CALLING SUB AGAIN BY CONTENT". CALL PGM USING BY CONTENT A, B. * CANCEL PGM. * DISPLAY "PGM CANCELLED" DISPLAY "AFTER CALLING SUB THE SECOND TIME ". DISPLAY " A: " A. DISPLAY " B: " B. DISPLAY "MAIN CALLING SUB AGAIN BY REFERENCE". CALL PGM USING BY REFERENCE A, B. DISPLAY "AFTER CALLING SUB THE THIRD TIME". DISPLAY " A: " A. DISPLAY " B: " B. STOP RUN. **************************** Bottom of Data **************************** SUB PROGRAM OF DYNAMIC CALL ID DIVISION.

PROGRAM-ID. SDCALL IS INITIAL PROGRAM. DATA DIVISION. WORKING-STORAGE SECTION. 01 C PIC 99 VALUE 00. 01 D PIC 99 VALUE 00. LINKAGE SECTION. 01 A PIC 99. 01 B PIC 99. PROCEDURE DIVISION USING A , B. DISPLAY "WE ARE INSIDE SUB PROGRAM" DISPLAY "A : " A. DISPLAY "B : " B. DISPLAY "C : " C. DISPLAY "D : " D. COMPUTE A = A + 10. COMPUTE B = B + 10. DISPLAY "AFTER ADDING 10 TO C AND D". DISPLAY "A : " A. DISPLAY "B : " B. MOVE A TO C. MOVE B TO D. DISPLAY "C : " C. DISPLAY "D : " D. * EXIT PROGRAM. * STOP RUN. GOBACK. **************************** Bottom of Data **************************** STATIC CALL PROCESS NODYNAM, LIST, SSRANGE IDENTIFICATION DIVISION. PROGRAM-ID. SCALL. DATA DIVISION. WORKING-STORAGE SECTION. 01 INREC. 05 A PIC 9(2). 05 B PIC 9(2). 05 C PIC 9(3). PROCEDURE DIVISION. ACCEPT A. ACCEPT B. ACCEPT C. DISPLAY "A IN MAIN BEFORE CALL" A. DISPLAY "B IN MAIN BEFORE CALL" B. DISPLAY "C IN MAIN BEFORE CALL" C. CALL 'SSCALL' USING INREC. DISPLAY "A IN MAIN AFTER CALL" A. DISPLAY "B IN MAIN AFTER CALL" B. DISPLAY "C IN MAIN AFTER CALL" C. STOP RUN. **************************** Bottom of Data **************************** SUB PROGRAM OF STATIC CALL IDENTIFICATION DIVISION. PROGRAM-ID. SSCALL. DATA DIVISION. LINKAGE SECTION.

01 INREC. 02 A PIC 9(2). 02 B PIC 9(2). 02 C PIC 9(3). PROCEDURE DIVISION USING INREC. ADD 10 TO A. ADD 20 TO B. DISPLAY "WE ARE INSIDE SUB PROGRAM". DISPLAY "A" A. DISPLAY "B" B. COMPUTE C = A * B. DISPLAY "C" C. DISPLAY "SUB CLOSED". EXIT PROGRAM. **************************** Bottom of Data **************************** NESTED CALL PROCESS DYNAM, LIST, SSRANGE IDENTIFICATION DIVISION. PROGRAM-ID. SCALL1. DATA DIVISION. WORKING-STORAGE SECTION. 01 INREC. 05 A PIC 9(2). 05 B PIC 9(2). 05 C PIC 9(3). PROCEDURE DIVISION. MOVE 123456 TO INREC. DISPLAY "A" A. DISPLAY "B" B. DISPLAY "C" C. DISPLAY "CALLING SUB". CALL 'SSCALL1' USING INREC. DISPLAY "AFTER CALLING". DISPLAY "A" A. DISPLAY "B" B. DISPLAY "C" C. STOP RUN. IDENTIFICATION DIVISION. PROGRAM-ID. SSCALL1. DATA DIVISION. LINKAGE SECTION. 01 INREC. 05 A PIC 9(2) VALUE 10. 05 B PIC 9(2) VALUE 10. 05 C PIC 9(3) VALUE 100. PROCEDURE DIVISION USING INREC. DISPLAY "INSIDE SUB". DISPLAY "A" A. DISPLAY "B" B. DISPLAY "C" C. COMPUTE C = A * B. DISPLAY C. END PROGRAM SSCALL1. END PROGRAM SCALL1. **************************** Bottom of Data **************************** NESTED CALL

PROCESS DYNAM, LIST, SSRANGE IDENTIFICATION DIVISION. PROGRAM-ID. SCALL1. DATA DIVISION. WORKING-STORAGE SECTION. *01 A IS GLOBAL PIC 9(2). *01 B IS GLOBAL PIC 9(2). *01 C IS GLOBAL PIC 9(3). 01 A PIC 9(2) IS GLOBAL. 01 B PIC 9(2) IS GLOBAL. 01 C PIC 9(3) IS GLOBAL. PROCEDURE DIVISION. MOVE 10 TO A. MOVE 10 TO B. MOVE 10 TO C. DISPLAY "A" A. DISPLAY "B" B. DISPLAY "C" C. DISPLAY "CALLING SUB". CALL 'SSCALL1'. DISPLAY "AFTER CALLING". DISPLAY "A" A. DISPLAY "B" B. DISPLAY "C" C. STOP RUN. IDENTIFICATION DIVISION. PROGRAM-ID. SSCALL1. DATA DIVISION. PROCEDURE DIVISION. DISPLAY "INSIDE SUB". DISPLAY "A" A. DISPLAY "B" B. DISPLAY "C" C. COMPUTE C = A * B. DISPLAY C. END PROGRAM SSCALL1. END PROGRAM SCALL1. **************************** Bottom of Data **************************** ARRAY OCCURS IDENTIFICATION DIVISION. PROGRAM-ID. ARROCC. DATA DIVISION. WORKING-STORAGE SECTION. 01 ARRAY VALUE '112233445566778899112233776763772346764764'. 02 TEMP OCCURS 12 TIMES PIC 9(5). PROCEDURE DIVISION. DISPLAY ARRAY. DISPLAY TEMP(5). STOP RUN. **************************** Bottom of Data **************************** ARRAY OCCURS DEPENDING ON IDENTIFICATION DIVISION. PROGRAM-ID. DEPEND. DATA DIVISION. WORKING-STORAGE SECTION. 01 M1 PIC 9.

01 ARR. 02 S1 PIC X(2) OCCURS 1 TO 9 TIMES DEPENDING ON M1. 01 I PIC 99 VALUE 1. PROCEDURE DIVISION. ACCEPT M1. PERFORM PARA VARYING I FROM 1 BY 1 UNTIL I > M1. STOP RUN. PARA. ACCEPT S1(I). DISPLAY "M" S1(I). **************************** Bottom of Data **************************** ARRAY WITH PERFORM LOOP IDENTIFICATION DIVISION. PROGRAM-ID. ARR. DATA DIVISION. WORKING-STORAGE SECTION. 01 NAMES VALUE "1234567890QWERTYUIOP". 05 CLA PIC X(2) OCCURS 10 TIMES. 01 I PIC 99 VALUE 1. PROCEDURE DIVISION. PERFORM PARA1 VARYING I FROM 1 BY 1 UNTIL I > 10. STOP RUN. PARA1. DISPLAY "CLA" CLA(I). **************************** Bottom of Data **************************** ARRAY INDEX IDENTIFICATION DIVISION. PROGRAM-ID. ARRIND. DATA DIVISION. WORKING-STORAGE SECTION. 01 FIRSTARRAY. 02 A OCCURS 2 TIMES INDEXED BY I1. 03 B OCCURS 3 TIMES INDEXED BY I2. 04 RES PIC 9. PROCEDURE DIVISION. MAINPARA. SET I1 TO 1. SET I2 TO 1. PERFORM ACCEPT-PARA VARYING I1 FROM 1 BY 1 UNTIL I1 > 2 AFTER I2 FROM 1 BY 1 UNTIL I2 > 3. PERFORM DISPLAY-PARA. STOP RUN. ACCEPT-PARA. ACCEPT RES(I1 I2). DISPLAY-PARA. DISPLAY "FIRST ARRAY". DISPLAY RES(1 1)" " RES(1 2)" " RES(1 3). DISPLAY RES(2 1)" " RES(2 2)" " RES(2 3). **************************** Bottom of Data **************************** MULTIDIMENSIONAL ARRAY IDENTIFICATION DIVISION. PROGRAM-ID. ARRTD. ENVIRONMENT DIVISION. DATA DIVISION.

WORKING-STORAGE SECTION. 01 CONTENTS. 02 ARRROW OCCURS 2 TIMES. 03 ARRCOL OCCURS 2 TIMES. 04 DATROW OCCURS 2 TIMES. 05 DAT PIC X OCCURS 3 TIMES PROCEDURE DIVISION. MOVE '1234567890ABCDEFGHIJKLMN' TO CONTENTS. DISPLAY ' ' DISPLAY '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' DISPLAY ' 4 DIMENSIONAL ARRAY DATA ' DISPLAY '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' DISPLAY CONTENTS. DISPLAY 'DATA(2,1,1,2) :' DAT(2 1 1 2) DISPLAY 'DATA(2,1,1,3) :' DAT(2 1 1 3) DISPLAY 'DATA(2,1,2,1) :' DAT(2 1 2 1) DISPLAY 'DATA(2,1,2,2) :' DAT(2 1 2 2) DISPLAY 'DATA(2,1,2,3) :' DAT(2 1 2 3) DISPLAY 'DATAROW(2,2,1) : ' DATROW(2 2 1) DISPLAY 'DATAROW(2,2,2) : ' DATROW(2 2 2) DISPLAY 'DATAROW(1,1,1) : ' DATROW(1 1 1) DISPLAY 'DATAROW(1,2,2) : ' DATROW(1 2 2) DISPLAY 'DATAROW(1,2,2) : ' DATROW(1 2 2) DISPLAY '1ST ROW ARRAY : ' ARRROW(1) DISPLAY '2ND ROW ARRAY : ' ARRROW(2) DISPLAY '1ST ROW 1ST COL ARR : ' ARRCOL(1 1) DISPLAY '1ST ROW 2ND COL ARR : ' ARRCOL(1 2) DISPLAY '2ND ROW 1ST COL ARR : ' ARRCOL(2 1) DISPLAY '2ND ROW 2ND COL ARR : ' ARRCOL(2 2) DISPLAY 'DAT(1,2,2,1) : ' DAT(1 2 2 1) DISPLAY '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' DISPLAY ' STOP RUN. **************************** Bottom of Data **************************** LINEAR SEARCH ID DIVISION. PROGRAM-ID. BINSE. DATA DIVISION. WORKING-STORAGE SECTION. 01 G1. 02 CITYDET OCCURS 3 TIMES INDEXED BY I. 03 PINNO PIC 9(2). 03 CITYNAME PIC A(4). 77 INP PIC A(4). PROCEDURE DIVISION. P1. PERFORM PARA1 VARYING I FROM 1 BY 1 UNTIL I > 3. SET I TO 1. ACCEPT INP. PERFORM SEARCHPARA. STOP RUN. PARA1. ACCEPT PINNO(I). ACCEPT CITYNAME(I). DISPLAY PINNO(I). DISPLAY CITYNAME(I). SEARCHPARA. SEARCH CITYDET AT END DISPLAY "NOT FOUND"

WHEN PINNO(I) = INP DISPLAY CITYNAME(I) END-SEARCH. **************************** Bottom of Data **************************** BINARY SEARCH ID DIVISION. PROGRAM-ID. BINSE. DATA DIVISION. WORKING-STORAGE SECTION. 01 G1. 02 CITYDET OCCURS 3 TIMES ASCENDING KEY PINNO INDEXED BY I. 03 PINNO PIC 9(2). 03 CITYNAME PIC A(4). 77 INP PIC A(4). PROCEDURE DIVISION. P1. PERFORM PARA1 VARYING I FROM 1 BY 1 UNTIL I > 3. ACCEPT INP. PERFORM SEARCHPARA. STOP RUN. PARA1. ACCEPT PINNO(I). ACCEPT CITYNAME(I). DISPLAY PINNO(I). DISPLAY CITYNAME(I). SEARCHPARA. SEARCH ALL CITYDET AT END DISPLAY "NOT FOUND" WHEN PINNO(I) = INP DISPLAY CITYNAME(I) END-SEARCH. **************************** Bottom of Data **************************** READING A SINGLE RECORD FROM SEQUENTIAL FILE IDENTIFICATION DIVISION. PROGRAM-ID. PSREAD. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPFILE ASSIGN TO DD1 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-FS. DATA DIVISION. FILE SECTION. FD EMPFILE RECORDING MODE IS F RECORD CONTAINS 80 CHARACTERS LABEL RECORDS ARE STANDARD DATA RECORD IS EMPREC. 01 EMPREC. 05 EMPNO PIC X(2). 05 FILLER PIC X(1). 05 EMPNAME PIC X(6). 05 FILLER PIC X(1). 05 EMPADDR PIC X(3). 05 FILLER PIC X(67). WORKING-STORAGE SECTION.

01 WS-FS PIC X(2). PROCEDURE DIVISION. 000-MAIN-PARA. PERFORM 100-OPEN-PARA. PERFORM 200-READ-PARA. PERFORM 300-CLOSE-PARA. PERFORM 400-EXIT-PARA. 100-OPEN-PARA. OPEN INPUT EMPFILE DISPLAY "FILE OPEN STATUS" WS-FS. 200-READ-PARA. READ EMPFILE. IF WS-FS = 00 THEN DISPLAY "EMPLOYEE NUMBER" EMPNO DISPLAY "EMPLOYEE NAME" EMPNAME DISPLAY "EMPLOYEE ADDRESS " EMPADDR END-IF. DISPLAY "FILE READ STATUS " WS-FS. 300-CLOSE-PARA. CLOSE EMPFILE. DISPLAY "FILE CLOSE STATUS " WS-FS. 400-EXIT-PARA. STOP RUN. **************************** Bottom of Data **************************** PS READ-ALL CONTENTS IDENTIFICATION DIVISION. PROGRAM-ID. PSALL. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPFILE ASSIGN TO DD2 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-FS. DATA DIVISION. FILE SECTION. FD EMPFILE RECORDING MODE IS F RECORD CONTAINS 80 CHARACTERS BLOCK CONTAINS 800 CHARACTERS LABEL RECORDS ARE STANDARD DATA RECORD IS EMPREC. 01 EMPREC. 05 EMPNO PIC X(2). 05 FILLER PIC X(1). 05 EMPNAME PIC X(6). 05 FILLER PIC X(1). 05 EMPADDR PIC X(3). 05 FILLER PIC X(67). WORKING-STORAGE SECTION. 77 WS-FS PIC X(2). PROCEDURE DIVISION. PERFORM 100-OPEN-PARA. PERFORM 200-READ-PARA UNTIL WS-FS = 10. PERFORM 300-CLOSE-PARA. PERFORM 400-EXIT-PARA. 100-OPEN-PARA. OPEN INPUT EMPFILE.

DISPLAY " FILE OPEN STATUS : " WS-FS. 200-READ-PARA. READ EMPFILE AT END GO TO 300-CLOSE-PARA. DISPLAY " FILE READ STATUS : " WS-FS. DISPLAY EMPREC. 300-CLOSE-PARA. CLOSE EMPFILE. DISPLAY "FILE CLOSE STATUS : " WS-FS. 400-EXIT-PARA. STOP RUN. **************************** Bottom of Data **************************** PS WRITE IDENTIFICATION DIVISION. PROGRAM-ID. PSREAD. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPFILE ASSIGN TO DD2 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-FS. DATA DIVISION. FILE SECTION. FD EMPFILE RECORDING MODE IS F. 01 EMPREC. 05 EMPNO PIC X(2). 05 FILLER PIC X(1). 05 EMPNAME PIC X(6). 05 FILLER PIC X(1). 05 EMPADDR PIC X(3). 05 FILLER PIC X(67). WORKING-STORAGE SECTION. 01 WS-FS PIC X(2). 01 INPLINE. 05 EN PIC X(2) VALUE 'EN'. 05 FILLER PIC X(1). 05 EM PIC X(6) VALUE 'EMNAME'. 05 FILLER PIC X(1). 05 EA PIC X(3) VALUE 'ADD'. PROCEDURE DIVISION. 000-MAIN-PARA. PERFORM 100-OPEN-PARA. PERFORM 200-LOAD-PARA 3 TIMES. PERFORM 400-CLOSE-PARA. PERFORM 500-EXIT-PARA. 100-OPEN-PARA. OPEN EXTEND EMPFILE DISPLAY "FILE OPEN STATUS" WS-FS. WRITE EMPREC FROM INPLINE. 200-LOAD-PARA. ACCEPT EMPNO. ACCEPT EMPNAME. ACCEPT EMPADDR. WRITE EMPREC. DISPLAY "FILE WRITE STATUS " WS-FS. 400-CLOSE-PARA. CLOSE EMPFILE. DISPLAY "FILE CLOSE STATUS " WS-FS.

500-EXIT-PARA. STOP RUN. **************************** Bottom of Data **************************** PS REWRITE IDENTIFICATION DIVISION. PROGRAM-ID. PSREWR. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPFILE ASSIGN TO DD2 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-FS. DATA DIVISION. FILE SECTION. FD EMPFILE RECORDING MODE IS F. 01 EMPREC. 05 EMPNO PIC 9(2). 05 FILLER PIC X(1). 05 EMPNAME PIC X(6). 05 FILLER PIC X(1). 05 EMPADDR PIC X(3). 05 FILLER PIC X(67). WORKING-STORAGE SECTION. 01 WS-FS PIC X(2). 01 WS-ADDR PIC X(3). 77 END-OF-FILE PIC X(1). 88 EOF VALUE IS 'Y'. PROCEDURE DIVISION. 000-MAIN-PARA. ACCEPT WS-ADDR. PERFORM 100-OPEN-PARA. PERFORM 200-READ-PARA UNTIL EOF. PERFORM 300-CLOSE-PARA. PERFORM 400-EXIT-PARA. 100-OPEN-PARA. OPEN I-O EMPFILE DISPLAY "FILE OPEN STATUS" WS-FS. 200-READ-PARA. MOVE 'TPT' TO WS-ADDR. READ EMPFILE AT END MOVE 'Y' TO END-OF-FILE. IF WS-FS = 00 IF EMPADDR = WS-ADDR ADD 10 TO EMPNO REWRITE EMPREC DISPLAY "FILE READ STATUS" WS-FS END-IF END-IF. DISPLAY "FILE READ STATUS1" WS-FS. 300-CLOSE-PARA. CLOSE EMPFILE. DISPLAY "FILE CLOSE STATUS " WS-FS. 400-EXIT-PARA. STOP RUN. **************************** Bottom of Data **************************** RRDS SEQ

IDENTIFICATION DIVISION. PROGRAM-ID. RRSEQ. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE ASSIGN TO DD1 ORGANIZATION IS RELATIVE ACCESS MODE IS SEQUENTIAL FILE STATUS IS FS. DATA DIVISION. FILE SECTION. FD INFILE. 01 INREC. 05 ENO PIC X(3). 05 ENAME PIC X(5). WORKING-STORAGE SECTION. 77 FS PIC X(2). PROCEDURE DIVISION. MAIN-PARA. OPEN INPUT INFILE. PERFORM READ-PARA UNTIL FS = 10. CLOSE INFILE. STOP RUN. READ-PARA. READ INFILE NEXT RECORD IF FS NOT EQUAL TO 10 DISPLAY INREC END-IF. **************************** Bottom of Data **************************** RRDS RAN IDENTIFICATION DIVISION. PROGRAM-ID. RRRAN. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE ASSIGN TO DD1 ORGANIZATION IS RELATIVE ACCESS MODE IS SEQUENTIAL RELATIVE KEY IS RRN FILE STATUS IS FS. DATA DIVISION. FILE SECTION. FD INFILE. 01 INREC. 05 ENO PIC X(2). 05 FILLER PIC X. 05 ENAME PIC X(6). 05 FILLER PIC X(71). WORKING-STORAGE SECTION. 77 FS PIC X(2). 77 RRN PIC X(2). PROCEDURE DIVISION. OPEN I-O INFILE. DISPLAY "FILE STATUS OPEN" FS. MOVE 02 TO RRN. PERFORM READ-PARA. CLOSE INFILE.

STOP RUN. READ-PARA. READ INFILE INVALID KEY DISPLAY "NOT FOUND". DISPLAY "FILE STATUS" FS. DISPLAY "EMPLOYEE NUMBER" ENO. DISPLAY "EMPLOYEE NAME" ENAME. **************************** Bottom of Data **************************** RRDS WRITE IDENTIFICATION DIVISION. PROGRAM-ID. PSREAD. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPFILE ASSIGN TO DD2 ORGANIZATION IS RELATIVE ACCESS MODE IS SEQUENTIAL RELATIVE KEY IS RRN FILE STATUS IS WS-FS. DATA DIVISION. FILE SECTION. FD EMPFILE. 01 EMPREC. 05 EMPNO PIC X(2). 05 FILLER PIC X(1). 05 EMPNAME PIC X(6). 05 EMPNAME PIC X(6). 05 FILLER PIC X(1). 05 EMPADDR PIC X(3). 05 FILLER PIC X(67). WORKING-STORAGE SECTION. 01 WS-FS PIC X(2). 01 RRN PIC 9(2). 01 EMPREC1. 05 EMPNO1 PIC X(2) VALUE '30'. 05 FILLER PIC X(1) VALUE SPACES. 05 EMPNAME1 PIC X(6) VALUE 'SARANY'. 05 FILLER PIC X(1) VALUE SPACES. 05 EMPADDR1 PIC X(3) VALUE 'CHN'. 05 FILLER PIC X(67) VALUE SPACES. PROCEDURE DIVISION. 000-MAIN-PARA. PERFORM 100-OPEN-PARA. PERFORM 200-LOAD-PARA. PERFORM 200-LOAD-PARA. PERFORM 400-CLOSE-PARA. PERFORM 500-EXIT-PARA. 100-OPEN-PARA. OPEN EXTEND EMPFILE. DISPLAY "FILE OPEN STATUS" WS-FS. 200-LOAD-PARA. MOVE EMPREC1 TO EMPREC. WRITE EMPREC INVALID KEY DISPLAY "INVALID KEY". DISPLAY "FILE WRITE STATUS " WS-FS. 400-CLOSE-PARA. CLOSE EMPFILE. DISPLAY "FILE CLOSE STATUS " WS-FS. 500-EXIT-PARA. STOP RUN.

**************************** Bottom of Data **************************** RRDS REWRITE IDENTIFICATION DIVISION. PROGRAM-ID. PSREWR. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPFILE ASSIGN TO DD2 ORGANIZATION IS RELATIVE ACCESS MODE IS RANDOM RELATIVE KEY IS RRN FILE STATUS IS WS-FS. DATA DIVISION. FILE SECTION. FD EMPFILE. 01 EMPREC. 05 EMPNO PIC X(2). 05 FILLER PIC X(1). 05 FILLER PIC X(1). 05 EMPNAME PIC X(6). 05 FILLER PIC X(1). 05 EMPADDR PIC X(3). 05 FILLER PIC X(67). WORKING-STORAGE SECTION. 01 WS-FS PIC X(2). 01 RRN PIC 9(2). PROCEDURE DIVISION. 000-MAIN-PARA. PERFORM 100-OPEN-PARA. PERFORM 200-READ-PARA. PERFORM 300-CLOSE-PARA. PERFORM 400-EXIT-PARA. 100-OPEN-PARA. OPEN I-O EMPFILE. DISPLAY "FILE OPEN STATUS" WS-FS. DISPLAY "FILE OPEN STATUS" WS-FS. MOVE 02 TO RRN. 200-READ-PARA. READ EMPFILE. MOVE 'CBE' TO EMPADDR. REWRITE EMPREC INVALID KEY DISPLAY "NOT DONE". DISPLAY "FILE REWRITE STATUS" WS-FS. 300-CLOSE-PARA. CLOSE EMPFILE. DISPLAY "FILE CLOSE STATUS " WS-FS. 400-EXIT-PARA. STOP RUN. **************************** Bottom of Data **************************** DELETE IN RRDS IDENTIFICATION DIVISION. PROGRAM-ID. DEL. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE ASSIGN TO DD2 ORGANIZATION IS RELATIVE ACCESS MODE IS RANDOM

RELATIVE KEY IS RRN FILE STATUS IS FS. DATA DIVISION. FILE SECTION. FD INFILE. 01 INREC. 05 ENO PIC X(2). 05 FILLER PIC X. 05 ENAME PIC X(6). 05 FILLER PIC X(71). WORKING-STORAGE SECTION. 77 FS PIC X(2). 77 RRN PIC 9(2). PROCEDURE DIVISION. OPEN I-O INFILE. DISPLAY "FILE STATUS OPEN" FS. MOVE 02 TO RRN. PERFORM READ-PARA. CLOSE INFILE. STOP RUN. READ-PARA. DELETE INFILE INVALID KEY DISPLAY "NOT FOUND". DISPLAY "FILE STATUS" FS. DISPLAY "EMPLOYEE NUMBER" ENO. DISPLAY "EMPLOYEE NAME" ENAME. **************************** Bottom of Data **************************** KSDS SEQUENTIAL READ IDENTIFICATION DIVISION. PROGRAM-ID. ESDSWRT. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE ASSIGN TO DD1 ORGANIZATION IS INDEXED ACCESS MODE IS SEQUENTIAL RECORD KEY IS ENO FILE STATUS IS FS. DATA DIVISION. FILE SECTION. FD INFILE. 01 INREC. 05 ENO PIC X(3). 05 ENAME PIC X(5). 05 FILLER PIC X(72). WORKING-STORAGE SECTION. 77 FS PIC X(2). 77 CHN PIC X VALUE 'Y'. PROCEDURE DIVISION. MAIN-PARA. OPEN INPUT INFILE. PERFORM READ-PARA UNTIL CHN = 'N'. CLOSE INFILE. STOP RUN. READ-PARA. READ INFILE AT END MOVE 'N' TO CHN. DISPLAY INREC. **************************** Bottom of Data ****************************

KSDS RAN IDENTIFICATION DIVISION. PROGRAM-ID. KSRAN. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE ASSIGN TO DD1 ORGANIZATION IS INDEXED ACCESS MODE IS RANDOM RECORD KEY IS ENO FILE STATUS IS FS. DATA DIVISION. FILE SECTION. FD INFILE. 01 INREC. 05 ENO PIC X(2). 05 FILLER PIC X. 05 ENAME PIC X(6). 05 FILLER PIC X(71). WORKING-STORAGE SECTION. 77 FS PIC X(2). PROCEDURE DIVISION. OPEN I-O INFILE. DISPLAY "FILE STATUS OPEN" FS. MOVE 10 TO ENO. PERFORM READ-PARA. CLOSE INFILE. STOP RUN. READ-PARA. READ INFILE INVALID KEY DISPLAY "NOT FOUND". DISPLAY "FILE STATUS" FS. DISPLAY "EMPLOYEE NUMBER" ENO. DISPLAY "EMPLOYEE NAME" ENAME. **************************** Bottom of Data **************************** KSDS USING START IDENTIFICATION DIVISION. PROGRAM-ID. KSDSRD. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE ASSIGN TO DD1 ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS ENO FILE STATUS IS FS. DATA DIVISION. FILE SECTION. FD INFILE. 01 INREC. 05 ENO PIC X(3). 05 ENAME PIC X(5). 05 UNUSED PIC X(72). WORKING-STORAGE SECTION. 77 FS PIC X(2). 77 CHN PIC X VALUE 'Y'. PROCEDURE DIVISION. MAIN-PARA.

OPEN I-O INFILE. ACCEPT ENO. START INFILE KEY IS EQUAL TO ENO INVALID KEY DISPLAY 'RECORD NOT FOUND'. PERFORM READ-PARA UNTIL CHN = 'N'. STOP RUN. READ-PARA. READ INFILE NEXT RECORD AT END MOVE 'N' TO CHN. DISPLAY INREC. **************************** Bottom of Data *************************** KSDS WRITE IDENTIFICATION DIVISION. PROGRAM-ID. PSREAD. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPFILE ASSIGN TO DD2 ORGANIZATION IS INDEXED ACCESS MODE IS SEQUENTIAL RECORD KEY IS EMPNO FILE STATUS IS WS-FS. DATA DIVISION. FILE SECTION. FD EMPFILE. 01 EMPREC. 05 EMPNO PIC X(2). 05 EMPNO PIC X(2). 05 FILLER PIC X(1). 05 EMPNAME PIC X(6). 05 FILLER PIC X(1). 05 EMPADDR PIC X(3). 05 FILLER PIC X(67). WORKING-STORAGE SECTION. 01 WS-FS PIC X(2). 01 EMPREC1. 05 EMPNO1 PIC X(2) VALUE '30'. 05 FILLER PIC X(1) VALUE SPACES. 05 EMPNAME1 PIC X(6) VALUE 'SARANY'. 05 FILLER PIC X(1) VALUE SPACES. 05 EMPADDR1 PIC X(3) VALUE 'CHN'. 05 FILLER PIC X(67) VALUE SPACES. PROCEDURE DIVISION. 000-MAIN-PARA. PERFORM 100-OPEN-PARA. PERFORM 100-OPEN-PARA. PERFORM 200-LOAD-PARA. PERFORM 400-CLOSE-PARA. PERFORM 500-EXIT-PARA. 100-OPEN-PARA. OPEN EXTEND EMPFILE. DISPLAY "FILE OPEN STATUS" WS-FS. 200-LOAD-PARA. WRITE EMPREC FROM EMPREC1 INVALID KEY DISPLAY "INVALID KEY". DISPLAY "FILE WRITE STATUS " WS-FS. 400-CLOSE-PARA. CLOSE EMPFILE. DISPLAY "FILE CLOSE STATUS " WS-FS. 500-EXIT-PARA. STOP RUN.

**************************** Bottom of Data **************************** KSDS REWRITE IDENTIFICATION DIVISION. PROGRAM-ID. PSREWR. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPFILE ASSIGN TO DD2 ORGANIZATION IS INDEXED ACCESS MODE IS RANDOM RECORD KEY IS EMPNO FILE STATUS IS WS-FS. DATA DIVISION. FILE SECTION. FD EMPFILE. 01 EMPREC. 05 EMPNO PIC X(2). 05 FILLER PIC X(1). 05 FILLER PIC X(1). 05 EMPNAME PIC X(6). 05 FILLER PIC X(1). 05 EMPADDR PIC X(3). 05 FILLER PIC X(67). WORKING-STORAGE SECTION. 01 WS-FS PIC X(2). PROCEDURE DIVISION. 000-MAIN-PARA. PERFORM 100-OPEN-PARA. PERFORM 200-READ-PARA. PERFORM 300-CLOSE-PARA. PERFORM 400-EXIT-PARA. 100-OPEN-PARA. OPEN I-O EMPFILE. DISPLAY "FILE OPEN STATUS" WS-FS. MOVE 20 TO EMPNO. 200-READ-PARA. READ EMPFILE. MOVE 'CBE' TO EMPADDR. REWRITE EMPREC INVALID KEY DISPLAY "NOT DONE". DISPLAY "FILE REWRITE STATUS" WS-FS. 300-CLOSE-PARA. CLOSE EMPFILE. DISPLAY "FILE CLOSE STATUS " WS-FS. 400-EXIT-PARA. STOP RUN. **************************** Bottom of Data **************************** DELETE IN KSDS IDENTIFICATION DIVISION. PROGRAM-ID. DEL. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE ASSIGN TO DD2 ORGANIZATION IS INDEXED ACCESS MODE IS RANDOM RECORD KEY IS ENO

FILE STATUS IS FS. DATA DIVISION. FILE SECTION. FD INFILE. 01 INREC. 05 ENO PIC 9(2). 05 FILLER PIC X. 05 FILLER PIC X. 05 ENAME PIC X(6). 05 FILLER PIC X(71). WORKING-STORAGE SECTION. 77 FS PIC X(2). PROCEDURE DIVISION. OPEN I-O INFILE. DISPLAY "FILE STATUS OPEN" FS. MOVE 10 TO ENO. PERFORM READ-PARA. CLOSE INFILE. STOP RUN. READ-PARA. DELETE INFILE INVALID KEY DISPLAY "NOT FOUND". DISPLAY "FILE STATUS" FS. DISPLAY "EMPLOYEE NUMBER" ENO. DISPLAY "EMPLOYEE NAME" ENAME. DISPLAY "EMPLOYEE NAME" ENAME. **************************** Bottom of Data **************************** MOVE FORM PS TO PS IDENTIFICATION DIVISION. PROGRAM-ID. MPSPS. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMP ASSIGN TO DD1 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS FS. SELECT EMP1 ASSIGN TO DD2 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS FS1. DATA DIVISION. FILE SECTION. FD EMP RECORDING MODE IS F. 01 EMPREC. 02 EMPNO PIC 9(2). 02 FILLER PIC X(1). 02 EMPNAME PIC X(5). 02 FILLER PIC X(1). 02 SALARY PIC 9(5). 02 FILLER PIC X(66). FD EMP1 RECORDING MODE IS F. 01 EMP1REC. 02 EMPNO PIC 9(2). 02 FILLER PIC X(1). 02 EMPNAME PIC X(5). 02 FILLER PIC X(1).

02 SALARY PIC 9(5). 02 FILLER PIC X(66). WORKING-STORAGE SECTION. 77 FS1 PIC X(2). PROCEDURE DIVISION. PERFORM 100-OPEN-PARA. PERFORM 200-READ-PARA. PERFORM 300-CLOSE-PARA. PERFORM 400-EXIT-PARA. 100-OPEN-PARA. OPEN INPUT EMP. OPEN OUTPUT EMP1. DISPLAY " FILE OPEN STATUS : " FS. 200-READ-PARA. READ EMP AT END GO TO 300-CLOSE-PARA. MOVE EMPREC TO EMP1REC. WRITE EMP1REC. GO TO 200-READ-PARA. 300-CLOSE-PARA. CLOSE EMP. CLOSE EMP1. DISPLAY " FILE CLOSE STATUS : " FS1. 400-EXIT-PARA. STOP RUN. **************************** Bottom of Data **************************** MOVE FROM PS TO RR ID DIVISION. PROGRAM-ID. MPSRR. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE ASSIGN TO DD1 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS FS. SELECT OUTFILE ASSIGN TO DD2 ORGANIZATION IS RELATIVE ACCESS MODE IS SEQUENTIAL RELATIVE KEY IS RRN FILE STATUS IS FS1. DATA DIVISION. FILE SECTION. FD INFILE. 01 INREC. 02 EMPNO PIC 9(3). 02 EMNAME PIC X(5). 02 FILLER PIC X(72). FD OUTFILE. 01 OUTREC. 02 EMPNO PIC 9(3). 02 EMNAME PIC X(5). 02 FILLER PIC X(72). WORKING-STORAGE SECTION. 77 RRN PIC 9(2). 77 FS PIC X(2). 77 FS1 PIC X(2). PROCEDURE DIVISION. MAIN-PARA.

OPEN INPUT INFILE. OPEN OUTPUT OUTFILE. READ-PARA. READ INFILE AT END GO TO CLOSE-PARA. MOVE INREC TO OUTREC. WRITE OUTREC. DISPLAY OUTREC. DISPLAY FS1. GO TO READ-PARA. CLOSE-PARA. CLOSE INFILE. CLOSE OUTFILE. STOP RUN. **************************** Bottom of Data **************************** SORT PSFILE IDENTIFICATION DIVISION. PROGRAM-ID SORTPS. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE ASSIGN TO DD1 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT OUTFILE ASSIGN TO DD2 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT SORFILE ASSIGN TO DD3. DATA DIVISION. FILE SECTION. FD INFILE RECORDING MODE IS F. 01 INREC. 02 ENO1 PIC 9(2). 02 FILLER PIC X. 02 ENAME1 PIC 9(6). 02 FILLER PIC X. 02 ESAL1 PIC 9(5). 02 FILLER PIC X(65). FD OUTFILE RECORDING MODE IS F. 01 OUTREC. 02 ENO3 PIC 9(2). 02 FILLER PIC X. 02 ENAME3 PIC 9(6). 02 FILLER PIC X. 02 ESAL3 PIC 9(5). 02 FILLER PIC X(65). SD SORFILE. 01 SORTREC. 02 FILLER PIC X. 02 ENAME2 PIC 9(6). 02 FILLER PIC X. 02 ESAL2 PIC 9(5). 02 FILLER PIC X(65). WORKING-STORAGE SECTION. PROCEDURE DIVISION. SORT SORFILE ON ASCENDING KEY ENO2 USING INFILE GIVING OUTFILE.

STOP RUN. **************************** Bottom of Data **************************** MERGE IDENTIFICATION DIVISION. PROGRAM-ID SORTPS. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE1 ASSIGN TO DD1 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT INFILE2 ASSIGN TO DD2 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT OUTFILE ASSIGN TO DD3 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT MERFILE ASSIGN TO DD4. DATA DIVISION. FILE SECTION. FD INFILE1 RECORDING MODE IS F. 01 INREC. 02 ENO1 PIC 9(2). 02 FILLER PIC X. 02 ENAME1 PIC 9(6). 02 FILLER PIC X. 02 ESAL1 PIC 9(5). 02 FILLER PIC X(65). FD INFILE2 RECORDING MODE IS F. 01 INREC. 02 ENO2 PIC 9(2). 02 FILLER PIC X. 02 ENAME2 PIC 9(6). 02 FILLER PIC X. 02 ESAL2 PIC 9(5). 02 FILLER PIC X(65). FD OUTFILE RECORDING MODE IS F. 01 OUTREC. 02 ENO3 PIC 9(2). 02 FILLER PIC X. 02 ENAME3 PIC 9(6). 02 FILLER PIC X. 02 ESAL3 PIC 9(5). 02 FILLER PIC X(65). SD MERFILE. 01 MERGREC. 02 ENO4 PIC 9(2). 02 FILLER PIC X. 02 ENAME4 PIC 9(6). 02 FILLER PIC X. 02 ESAL4 PIC 9(5). 02 FILLER PIC X(65). WORKING-STORAGE SECTION. PROCEDURE DIVISION. MERGE MERFILE ON ASCENDING KEY ENO4

USING INFILE1, INFILE2 GIVING OUTFILE. STOP RUN. **************************** Bottom of Data **************************** SORT USING INPUT PROCEDURE IDENTIFICATION DIVISION. PROGRAM-ID SORTPS. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE ASSIGN TO DD1 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT OUTFILE ASSIGN TO DD2 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT SORFILE ASSIGN TO DD3. DATA DIVISION. FILE SECTION. FD INFILE RECORDING MODE IS F. 01 INREC. 02 ENO1 PIC 9(2). 02 FILLER PIC X. 02 ENAME1 PIC 9(6). 02 FILLER PIC X. 02 ESAL1 PIC 9(5). 02 FILLER PIC X(65). FD OUTFILE RECORDING MODE IS F. 01 OUTREC. 02 ENO3 PIC 9(2). 02 FILLER PIC X. 02 ENAME3 PIC 9(6). 02 FILLER PIC X. 02 ESAL3 PIC 9(5). 02 FILLER PIC X(65). SD SORFILE. 01 SORTREC. 02 ENO2 PIC 9(2). 02 FILLER PIC X. 02 ENAME2 PIC 9(6). 02 FILLER PIC X. 02 ESAL2 PIC 9(5). 02 FILLER PIC X(65). WORKING-STORAGE SECTION. 77 EOF PIC 9. PROCEDURE DIVISION. SORT SORFILE ON ASCENDING KEY ENO2 INPUT PROCEDURE P1 GIVING OUTFILE. STOP RUN. P1. OPEN INPUT INFILE. PERFORM P2 UNTIL EOF = 1 CLOSE INFILE. P2. READ INFILE AT END MOVE 1 TO EOF NOT AT END MOVE INREC TO SORTREC

IF ESAL2 < 25000 RELEASE SORTREC END-IF END-READ. **************************** Bottom of Data **************************** SORT USING OUTPUT PROCEDURE IDENTIFICATION DIVISION. PROGRAM-ID SORTPS. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE ASSIGN TO DD1 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT OUTFILE ASSIGN TO DD2 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT SORFILE ASSIGN TO DD3. DATA DIVISION. FILE SECTION. FD INFILE RECORDING MODE IS F. 01 INREC. 02 ENO1 PIC 9(2). 02 FILLER PIC X. 02 ENAME1 PIC 9(6). 02 FILLER PIC X. 02 ESAL1 PIC 9(5). 02 FILLER PIC X(65). FD OUTFILE RECORDING MODE IS F. 01 OUTREC. 02 ENO3 PIC 9(2). 02 FILLER PIC X. 02 ENAME3 PIC 9(6). 02 FILLER PIC X. 02 ESAL3 PIC 9(5). 02 FILLER PIC X(65). SD SORFILE. 01 SORTREC. 02 ENO2 PIC 9(2). 02 FILLER PIC X. 02 ENAME2 PIC 9(6). 02 FILLER PIC X. 02 ESAL2 PIC 9(5). 02 FILLER PIC X(65). WORKING-STORAGE SECTION. 77 EOF PIC 9. PROCEDURE DIVISION. SORT SORFILE ON ASCENDING KEY ENO2 USING INFILE OUTPUT PROCEDURE IS P1. STOP RUN. P1. OPEN OUTPUT OUTFILE. PERFORM P2 UNTIL EOF = 1. CLOSE OUTFILE. P2. RETURN SORFILE RECORD INTO OUTREC AT END MOVE 1 TO EOF

NOT AT END IF ESAL2 > 20000 MOVE SORTREC TO OUTREC WRITE OUTREC END-IF END-RETURN. **************************** Bottom of Data **************************** SORT RUN //TCOM114A JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=SORTOU //STEPLIB DD DSN=TCOM114.SARAN.LOADLIB,DISP=SHR //SYSOUT DD SYSOUT=* //DD1 DD DSN=TCOM114.SARAN.COBSOR(INP1),DISP=SHR //DD2 DD DSN=TCOM114.SARAN.COBSOR(OUT1),DISP=SHR //DD3 DD DSN=&&TEMP,DISP=(,DELETE,) //SYSIN DD * /* // **************************** Bottom of Data **************************** MERGE RUN //TCOM114A JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=MERGE //STEPLIB DD DSN=TCOM114.SARAN.LOADLIB,DISP=SHR //SYSOUT DD SYSOUT=* //DD1 DD DSN=TCOM114.SARAN.COBSOR(INP1),DISP=SHR //DD2 DD DSN=TCOM114.SARAN.COBSOR(INP2),DISP=SHR //DD3 DD DSN=TCOM114.SARAN.COBSOR(OUT),DISP=SHR //DD4 DD DSN=&&TEMP,DISP=(,DELETE,) //SYSIN DD * /* // **************************** Bottom of Data **************************** COPYBOOK 001500 001600 001700 001800 001900 002000 05 05 05 05 05 05 EMPNO PIC X(2). FILLER PIC X(1). EMPNAME PIC X(6). FILLER PIC X(1). EMPADDR PIC X(3). FILLER PIC X(67).

**************************** Bottom of Data **************************** COMPILE FOR COPYBOOK //TCOM114D JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=A, 00001000 // REGION=5M,NOTIFY=&SYSUID 00002000 // SET MEMNAME=PSREAD <- PROGRAM NAME 00003002 // SET LOADMEM=TCOPG114 <- LOAD MODULE NAME 00004000 // SET COBCOPY=TCOM114.SARAN.COPYBOOK <- COBOL COPYBOOK 00007000 // SET LOADLIB=TRGCOM01.CICS.LOAD <- CICS LOAD LIB 00008000 // SET SOURCE=TCOM114.SARAN.COBFIL <- COBOL SOURCE 00009000 //**********************************************************************00010000 //* COBOL COMPILE *00020000 //**********************************************************************00030000

//COBCOMP EXEC PGM=IGYCRCTL,PARM='LIST,SOURCE,SSRANGE,XREF,LIB' 00040000 //SYSIN DD DSN=&SOURCE(&MEMNAME),DISP=SHR 00050000 //SYSLIB DD DSN=CICSTS31.CICS.SDFHCOB,DISP=SHR 00060000 // DD DISP=SHR,DSN=&COBCOPY 00070000 //SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=SYSDA, 00080000 // SPACE=(800,(500,500)) 00090000 //SYSPRINT DD SYSOUT=* 00100000 //SYSUDUMP DD SYSOUT=* 00110000 //SYSUT1 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA 00120000 //SYSUT2 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA 00130000 //SYSUT3 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA 00140000 //SYSUT4 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA 00150000 //SYSUT5 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA 00160000 //SYSUT6 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA 00170000 //SYSUT7 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA 00180000 //**********************************************************************00190000 //* LINK EDIT *00200000 //**********************************************************************00210000 //LKED EXEC PGM=IEWL,PARM='XREF' 00220000 //SYSLIB DD DSN=CICSTS31.CICS.SDFHEXCI,DISP=SHR 00230000 // DD DSN=CICSTS31.CICS.SDFHLOAD,DISP=SHR 00240000 // DD DSN=CEE.SCEELKED,DISP=SHR 00250000 // DD DSN=DSN811.SDSNLOAD,DISP=SHR 00260000 // DD DSN=CEE.SCEERUN,DISP=SHR 00270000 // DD DSN=ISP.SISPLOAD,DISP=SHR 00280000 //SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) 00290000 // DD DDNAME=SYSIN 00300000 //SYSLMOD DD DISP=SHR,DSN=&LOADLIB(&LOADMEM) 00310000 //SYSPRINT DD SYSOUT=* 00320000 //SYSUDUMP DD SYSOUT=* 00330000 //SYSUT1 DD SPACE=(1043,(50,50)),UNIT=SYSDA 00340000 //SYSIN DD * 00350000 INCLUDE SYSLIB(DFHECI) 00360000 INCLUDE SYSLIB(DSNCLI) 00370000 /* 00380000

**************************** Bottom of Data **************************** PSREAD 000100 000200 000300 000400 000500 000600 000700 000800 000900 001000 001100 001200 IDENTIFICATION DIVISION. PROGRAM-ID. PSREAD. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPFILE ASSIGN TO DD1 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-FS. DATA DIVISION. FILE SECTION. FD EMPFILE RECORDING MODE IS F. 01 EMPREC. COPY COPYREC. 001500* 05 EMPNO PIC X(2). 001600* 05 FILLER PIC X(1). 001700* 05 EMPNAME PIC X(6). 001800* 05 FILLER PIC X(1). 00010000 00020000 00030000 00040000 00050000 00060011 00070000 00080010 00090000 00100000 00110000 00120014 00130015 00131015 00132020 00150018 00160018 00170018 00180018

001900* 05 EMPADDR PIC X(3). 002000* 05 FILLER PIC X(67). 002100 WORKING-STORAGE SECTION. 002200 01 WS-FS PIC X(2). 002300 PROCEDURE DIVISION. 002400 000-MAIN-PARA. 002500 PERFORM 100-OPEN-PARA. 002600 PERFORM 200-READ-PARA. 002700 PERFORM 300-CLOSE-PARA. 002800 PERFORM 400-EXIT-PARA. 002900 100-OPEN-PARA. 003000 OPEN INPUT EMPFILE. 003100 DISPLAY "FILE OPEN STATUS" WS-FS. 003200 200-READ-PARA. 003300 READ EMPFILE. 003400 IF WS-FS = 00 THEN 003500 DISPLAY "EMPLOYEE NUMBER" EMPNO 003600 DISPLAY "EMPLOYEE NAME" EMPNAME 003700 DISPLAY "EMPLOYEE ADDRESS " EMPADDR 003800 END-IF. 003900 DISPLAY "FILE READ STATUS " WS-FS. 004000 300-CLOSE-PARA. 004100 CLOSE EMPFILE. 004200 DISPLAY "FILE CLOSE STATUS " WS-FS. 004300 400-EXIT-PARA. 004400 STOP RUN. **************************** Bottom of Data **************************** **************************** Bottom of Data **************************** DYNAMIC CALL ID DIVISION. PROGRAM-ID. DCALL. DATA DIVISION. WORKING-STORAGE SECTION. 01 A PIC 9(2) VALUE 00. 01 B PIC 9(2) VALUE 00. 77 PGM PIC X(8). PROCEDURE DIVISION. MAIN. ACCEPT PGM. DISPLAY "MAIN PGM". DISPLAY "A" A. DISPLAY "B" B. DISPLAY "MAIN CALLING SUB BY REFERENCE". CALL PGM USING BY REFERENCE A, B. CANCEL PGM. DISPLAY "PGM CANCELLED" DISPLAY "AFTER CALLING SUB THE FIRST TIME ". DISPLAY " A: " A. DISPLAY " B: " B. DISPLAY "MAIN CALLING SUB AGAIN BY CONTENT". CALL PGM USING BY CONTENT A, B. * CANCEL PGM. * DISPLAY "PGM CANCELLED" DISPLAY "AFTER CALLING SUB THE SECOND TIME ". DISPLAY " A: " A. DISPLAY " B: " B. DISPLAY "MAIN CALLING SUB AGAIN BY REFERENCE". CALL PGM USING BY REFERENCE A, B.

00190018 00200018 00210002 00220001 00230001 00240001 00250001 00260001 00270001 00280001 00290001 00300006 00310001 00320001 00330001 00340001 00350002 00360002 00370002 00380001 00390001 00400001 00410001 00420001 00430001 00440002

DISPLAY "AFTER CALLING SUB THE THIRD TIME". DISPLAY " A: " A. DISPLAY " B: " B. STOP RUN. **************************** Bottom of Data **************************** SUB PROGRAM OF DYNAMIC CALL ID DIVISION. PROGRAM-ID. SDCALL IS INITIAL PROGRAM. DATA DIVISION. WORKING-STORAGE SECTION. 01 C PIC 99 VALUE 00. 01 D PIC 99 VALUE 00. LINKAGE SECTION. 01 A PIC 99. 01 B PIC 99. PROCEDURE DIVISION USING A , B. DISPLAY "WE ARE INSIDE SUB PROGRAM" DISPLAY "A : " A. DISPLAY "B : " B. DISPLAY "C : " C. DISPLAY "D : " D. COMPUTE A = A + 10. COMPUTE B = B + 10. DISPLAY "AFTER ADDING 10 TO C AND D". DISPLAY "A : " A. DISPLAY "B : " B. MOVE A TO C. MOVE B TO D. DISPLAY "C : " C. DISPLAY "D : " D. * EXIT PROGRAM. * STOP RUN. GOBACK. **************************** Bottom of Data **************************** STATIC CALL PROCESS NODYNAM, LIST, SSRANGE IDENTIFICATION DIVISION. PROGRAM-ID. SCALL. DATA DIVISION. WORKING-STORAGE SECTION. 01 INREC. 05 A PIC 9(2). 05 B PIC 9(2). 05 C PIC 9(3). PROCEDURE DIVISION. ACCEPT A. ACCEPT B. ACCEPT C. DISPLAY "A IN MAIN BEFORE CALL" A. DISPLAY "B IN MAIN BEFORE CALL" B. DISPLAY "C IN MAIN BEFORE CALL" C. CALL 'SSCALL' USING INREC. DISPLAY "A IN MAIN AFTER CALL" A. DISPLAY "B IN MAIN AFTER CALL" B. DISPLAY "C IN MAIN AFTER CALL" C.

STOP RUN. **************************** Bottom of Data **************************** SUB PROGRAM OF STATIC CALL IDENTIFICATION DIVISION. PROGRAM-ID. SSCALL. DATA DIVISION. LINKAGE SECTION. 01 INREC. 02 A PIC 9(2). 02 B PIC 9(2). 02 C PIC 9(3). PROCEDURE DIVISION USING INREC. ADD 10 TO A. ADD 20 TO B. DISPLAY "WE ARE INSIDE SUB PROGRAM". DISPLAY "A" A. DISPLAY "B" B. COMPUTE C = A * B. DISPLAY "C" C. DISPLAY "SUB CLOSED". EXIT PROGRAM. **************************** Bottom of Data **************************** NESTED CALL PROCESS DYNAM, LIST, SSRANGE IDENTIFICATION DIVISION. PROGRAM-ID. SCALL1. DATA DIVISION. WORKING-STORAGE SECTION. 01 INREC. 05 A PIC 9(2). 05 B PIC 9(2). 05 C PIC 9(3). PROCEDURE DIVISION. MOVE 123456 TO INREC. DISPLAY "A" A. DISPLAY "B" B. DISPLAY "C" C. DISPLAY "CALLING SUB". CALL 'SSCALL1' USING INREC. DISPLAY "AFTER CALLING". DISPLAY "A" A. DISPLAY "B" B. DISPLAY "C" C. STOP RUN. IDENTIFICATION DIVISION. PROGRAM-ID. SSCALL1. DATA DIVISION. LINKAGE SECTION. 01 INREC. 05 A PIC 9(2) VALUE 10. 05 B PIC 9(2) VALUE 10. 05 C PIC 9(3) VALUE 100. PROCEDURE DIVISION USING INREC. DISPLAY "INSIDE SUB". DISPLAY "A" A. DISPLAY "B" B.

DISPLAY COMPUTE DISPLAY END PROGRAM END PROGRAM

"C" C. C = A * B. C. SSCALL1. SCALL1.

**************************** Bottom of Data **************************** NESTED CALL PROCESS DYNAM, LIST, SSRANGE IDENTIFICATION DIVISION. PROGRAM-ID. SCALL1. DATA DIVISION. WORKING-STORAGE SECTION. *01 A IS GLOBAL PIC 9(2). *01 B IS GLOBAL PIC 9(2). *01 C IS GLOBAL PIC 9(3). 01 A PIC 9(2) IS GLOBAL. 01 B PIC 9(2) IS GLOBAL. 01 C PIC 9(3) IS GLOBAL. PROCEDURE DIVISION. MOVE 10 TO A. MOVE 10 TO B. MOVE 10 TO C. DISPLAY "A" A. DISPLAY "B" B. DISPLAY "C" C. DISPLAY "CALLING SUB". CALL 'SSCALL1'. DISPLAY "AFTER CALLING". DISPLAY "A" A. DISPLAY "B" B. DISPLAY "C" C. STOP RUN. IDENTIFICATION DIVISION. PROGRAM-ID. SSCALL1. DATA DIVISION. PROCEDURE DIVISION. DISPLAY "INSIDE SUB". DISPLAY "A" A. DISPLAY "B" B. DISPLAY "C" C. COMPUTE C = A * B. DISPLAY C. END PROGRAM SSCALL1. END PROGRAM SCALL1. **************************** Bottom of Data **************************** AIX FILE HANDLING IDENTIFICATION DIVISION. PROGRAM-ID. TCHPG108. AUTHOR. SATHISH. * ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT LGFILE ASSIGN TO DD2 ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC

RECORD KEY IS ECODE ALTERNATE RECORD KEY IS ENAME WITH DUPLICATES FILE STATUS IS FSC. * DATA DIVISION. FILE SECTION. FD LGFILE. 01 EMPREC. 02 ECODE PIC 02 FILLER PIC 02 ENAME PIC 02 FILLER PIC 02 EADDR PIC 02 FILLER PIC * WORKING-STORAGE SECTION. 77 FSC PIC X(2). 77 EOF PIC X VALUE 'N'. * PROCEDURE DIVISION. 000-MAIN-PARA. PERFORM 001-OPEN-PARA. PERFORM 002-START-PARA. PERFORM 003-CLOSE-PARA. STOP RUN. * 001-OPEN-PARA. OPEN INPUT LGFILE. DISPLAY '>>>OPEN STATUS<<<' FSC. * 002-START-PARA. ACCEPT ENAME. START LGFILE KEY IS EQUAL TO ENAME INVALID KEY DISPLAY 'KEY IS NOT VALID'. DISPLAY '>>>START STATUS<<<' FSC IF FSC = 00 PERFORM 002-READ-PARA UNTIL EOF = 'Y' ELSE DISPLAY 'SOME ERROR' FSC. 002-READ-PARA. READ LGFILE NEXT RECORD AT END MOVE 'Y' TO EOF NOT AT END PERFORM 0021-DISP-PARA. DISPLAY '>>READ STATUS<<' FSC. 0021-DISP-PARA. DISPLAY EMPREC. 003-CLOSE-PARA. CLOSE LGFILE. DISPLAY '>>CLOSE STATUS<<' FSC. **************************** Bottom of Data **************************** RUN FOR AIX //TCHN639R JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=AIX //STEPLIB DD DSN=TCHN639.SARAN.LOADLIB,DISP=SHR //DD2 DD DSN=TCHN639.SARANYA.KSDS,DISP=SHR //DD21 DD DSN=TCHN639.SARANYA.PATH,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=*

X(4). X. X(10). X. X(12). X(52).

//SYSIN DD * ANY /* **************************** Bottom of Data **************************** FILE AND TABLE HANDLING ID DIVISION. PROGRAM-ID. BINSRCH. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT LFILE ASSIGN TO DD1 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. DATA DIVISION. FILE SECTION. FD LFILE RECORDING MODE IS F. 01 STREC. 02 SNO PIC 99. 02 FILLER PIC XX VALUE SPACES. 02 SNAME PIC X(10). 02 FILLER PIC XX VALUE SPACES. 02 SPERC PIC 99. 02 FILLER PIC X(62). WORKING-STORAGE SECTION. 77 A PIC 99. 77 EOF PIC 9. 01 TAB. 02 B PIC 99 OCCURS 6 TIMES ASCENDING KEY IS B INDEXED BY I. 02 C PIC X(10) OCCURS 6 TIMES INDEXED BY J. 02 D PIC 99 OCCURS 6 TIMES INDEXED BY K. PROCEDURE DIVISION. P1. OPEN INPUT LFILE. MOVE LOW-VALUES TO STREC. MOVE 0 TO EOF. PERFORM P2 UNTIL EOF = 1. ACCEPT A. SET I TO 1. SET J TO 1. SET K TO 1. SEARCH ALL B AT END DISPLAY 'NOT FOUND' WHEN B(I) = A DISPLAY B(I) SPACES C(J) SPACES D(K) END-SEARCH. CLOSE LFILE. STOP RUN. P2. READ LFILE AT END MOVE 1 TO EOF NOT AT END MOVE SNO TO B(I) MOVE SNAME TO C(J) MOVE SPERC TO D(K) SET I UP BY 1 SET J UP BY 1 SET K UP BY 1 END-READ. **************************** Bottom of Data **************************** ASCENDING ORDER IDENTIFICATION DIVISION.

PROGRAM-ID. ARRYASC. DATA DIVISION. WORKING-STORAGE SECTION. 77 I PIC 9. 77 J PIC 9. 77 TEMP PIC 9(2). 01 ARRAY. 02 NUM OCCURS 4 TIMES PIC 9(2). PROCEDURE DIVISION. MAINPARA. DISPLAY ' **** ASCENDING ORDER OF NUMBERS ***** '. PERFORM ACPTPARA VARYING I FROM 1 BY 1 UNTIL I > 5. PERFORM PROCPARA VARYING I FROM 1 BY 1 UNTIL I > 5. PERFORM DISPPARA VARYING I FROM 1 BY 1 UNTIL I > 5. STOP RUN. ACPTPARA. ACCEPT NUM( I ). PROCPARA. PERFORM PROCPARA1 VARYING J FROM 1 BY 1 UNTIL J >= 5. PROCPARA1. IF NUM( J ) > NUM( J + 1 ) THEN MOVE NUM( J + 1 ) TO TEMP MOVE NUM( J ) TO NUM( J + 1 ) MOVE TEMP TO NUM( J ) END-IF. DISPPARA. DISPLAY I '-->' NUM( I ). **************************** Bottom of Data **************************** SEARCH *SEQUENTIAL/BINARY SEARCH ID DIVISION. PROGRAM-ID. COBARR4. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. * UPTO 12 KEYS CAN BE SPECIFIED 01 WS-ARRAY. 05 WS-EMPARR OCCURS 5 TIMES ASCENDING KEY IS EMP-ID INDEXED BY WS-IND. 10 EMP-ID PIC X(6). 10 FILLER PIC X(1). 10 EMP-NAME PIC X(10). 10 FILLER PIC X(1). 10 EMP-DEPT PIC X(10). 77 WS-IND-1 PIC 9(2). PROCEDURE DIVISION. MAIN-PARA. PERFORM VARYING WS-IND FROM 1 BY 1 UNTIL WS-IND > 5 ACCEPT WS-EMPARR(WS-IND) DISPLAY WS-EMPARR(WS-IND) END-PERFORM. * VARYING IS OPTIONAL IF INDEX DEFINED THROUGH INDEXED BY CLAUSE DISPLAY 'SIMPLE SEARCH' SET WS-IND TO 1. SEARCH WS-EMPARR VARYING WS-IND AT END DISPLAY 'STRING NOT FOUND'

WHEN EMP-NAME(WS-IND) = 'RAMYA' DISPLAY 'SERIAL SEARCH - NAME: STRING FOUND' DISPLAY WS-EMPARR(WS-IND) WHEN EMP-DEPT(WS-IND) = 'HEALTH' DISPLAY 'SERIAL SEARCH - DEPT: STRING FOUND' DISPLAY WS-EMPARR(WS-IND) END-SEARCH. * SEARCH ALL * NO NEED TO SET INDEX * SEARCH SHOULD BE ASSOCIATED WITH THE KEY DISPLAY 'BINARY SEARCH' SEARCH ALL WS-EMPARR AT END DISPLAY 'KEY NOT FOUND' WHEN EMP-ID(WS-IND) = '190588' DISPLAY 'BINARY SEARCH: KEY FOUND' DISPLAY WS-EMPARR(WS-IND) END-SEARCH. STOP RUN. **************************** Bottom of Data **************************** DB2 PROGRAMS DB2 QUERIES **************************** Bottom of Data **************************** SAMPLE MODELS **************************** Bottom of Data **************************** CREATING TABLE WITH DB2 DATA TYPES (SMALLINT,TIME,FLOAT,DOUBLE,VARCHAR,TIMESTAMP, INT,CHAR,DECIMAL(P,S)) --CREATE TABLE T1(ENO SMALLINT,ETIME TIME,ESAL FLOAT,ESAL1 DOUBLE, --ENAME VARCHAR(5),ETIME1 TIMESTAMP) IN DBTCHN01.TSCAT05; --CREATE TABLE E1(ENO INT,ENAME CHAR(5)) --IN DBTCHN01.TSCAT05; CREATE TABLE E3(ENO INT,ENAME CHAR(7),ESAL DECIMAL(5,2),EDOB DATE) --IN DBTCHN01.TSCAT05; **************************** Bottom of Data **************************** ALTER --ALTER TABLE E1 ADD NICK CHAR(6); --ALTER TABLE E1 ALTER NICK SET DATA TYPE VARCHAR(6); **************************** Bottom of Data **************************** DROP --DROP TABLE E3; **************************** Bottom of Data **************************** INSERTING VALUES --INSERT INTO T1 VALUES(100,'10.17.18',1000.203,200.4403,'SAR', --'1987-05-07-10.17.18.111111'); --INSERT INTO T1(ENO,ETIME,ESAL1,ENAME,ETIME1) VALUES(100,CURRENT TIME, --1000.2,'SAR',CURRENT TIMESTAMP); --INSERT INTO T1(ENO,ETIME,ESAL1,ENAME,ETIME1) VALUES(100,CURRENT TIME, --1000.2,'SAR',CURRENT TIMESTAMP),(100,CURRENT TIME,1000.2,'SARA',CURRENT TIMEST AMP); **************************** Bottom of Data **************************** UPDATING VALUES IN TABLE --UPDATE E1 SET NICK='MATHI' WHERE ENO=100; **************************** Bottom of Data **************************** DELETE

--DELETE FROM E1 WHERE ENAME='AARA'; **************************** Bottom of Data **************************** SELECT ALL COLUMNS --SELECT * FROM T1; --SELECT * FROM VIEW1; --SELECT * FROM VIEW2; --SELECT CURRENT SERVER FROM SYSIBM.SYSDUMMY1; **************************** Bottom of Data **************************** SELECT PARTICULAR COLUMNS --SELECT ENO,ENAME,NICK FROM E1; **************************** Bottom of Data **************************** SELECT AS --SELECT * FROM E1 AS E21; --SELECT ENAME AS E1NAME FROM E1; --SELECT ENAME AS E1NAME FROM E1; **************************** Bottom of Data **************************** SELECT WHERE --SELECT * FROM E1 WHERE NICK='SHARA'; **************************** Bottom of Data **************************** SELECT ORDER BY --SELECT * FROM E1 ORDER BY NICK; --SELECT ENAME FROM E1 ORDER BY NICK; --SELECT ENAME,ENO FROM E1 ORDER BY NICK; --SELECT NICK,ENAME,ENO FROM E1 ORDER BY NICK,ENO; --SELECT NICK,ENAME,ENO FROM E1 ORDER BY NICK DESC; **************************** Bottom of Data **************************** SELECT GROUP BY --SELECT ENO FROM E1 GROUP BY ENO; --SELECT ENO FROM E1 GROUP BY ENO HAVING COUNT(*)<=2; --SELECT ENO FROM E1 GROUP BY ENO HAVING COUNT(*)=2; --SELECT ENO FROM E1 GROUP BY ENO HAVING COUNT(*)>=2; **************************** Bottom of Data **************************** SELECT WHERE ALL COMPARISON OPERATORS --SELECT * FROM E1 WHERE ENO=100; --SELECT * FROM E1 WHERE ENO!=100; --SELECT * FROM E1 WHERE ENO<>100; --SELECT * FROM E1 WHERE ENO<100; --SELECT * FROM E1 WHERE ENO!<100; --SELECT * FROM E1 WHERE ENO<=100; --SELECT * FROM E1 WHERE ENO>100; --SELECT * FROM E1 WHERE ENO!>100; --SELECT * FROM E1 WHERE ENO>=100; **************************** Bottom of Data **************************** SELECT DISTINCT --SELECT DISTINCT ENAME FROM E1; **************************** Bottom of Data **************************** SELECT INDIVIDUALS FROM DOB --SELECT DAY(EDOB) FROM E2; --SELECT MONTH(EDOB) FROM E2; --SELECT YEAR(EDOB) FROM E2;

--SELECT DATE(EDOB) FROM E2; --SELECT DIGITS(ESAL) FROM E2; --SELECT ABS(ENO) FROM E2; **************************** Bottom of Data **************************** SELECT FUNCTIONS --SELECT AVG(ENO) FROM E1; --SELECT COUNT(*) FROM E1; --SELECT MIN(ENO),MAX(ENO) FROM E1; --SELECT MIN(ENO) FROM E1; --SELECT MAX(ENO) FROM E1; --SELECT SUM(ENO) FROM E1; --SELECT LEFT(ENAME,2) FROM E1; --SELECT RIGHT(ENAME,2) FROM E1; --SELECT ENAME,UPPER(ENAME) FROM E1; --SELECT ENAME,LOWER(ENAME) FROM E1; --SELECT LENGTH(ENAME) FROM E1; --SELECT SUBSTR(ENAME,2,3) FROM E1; --SELECT HEX(ENO) FROM E1; **************************** Bottom of Data **************************** SELECT LIKE ,NOTLIKE --SELECT * FROM E1 WHERE ENAME LIKE '%A%'; --SELECT * FROM E1 WHERE ENAME NOT LIKE '%A%'; --SELECT * FROM E1 WHERE ENAME LIKE 'A%'; --SELECT * FROM E1 WHERE ENAME NOT LIKE 'A%'; **************************** Bottom of Data **************************** SELECT EXISTS ,NOTEXISTS --SELECT ENO FROM E1 WHERE EXISTS --(SELECT * FROM E1 WHERE ENO=100); --SELECT ENO FROM E1 WHERE NOT EXISTS --(SELECT * FROM E1 WHERE ENO=100); **************************** Bottom of Data **************************** SELECT STRIP -SELECT ENAME,STRIP(ENAME,L,'S')FROM E1; --SELECT ENAME,STRIP(ENAME,T,'N')FROM E1; --SELECT ENAME,STRIP(ENAME,B,'A')FROM E1; **************************** Bottom of Data **************************** SELECT AND OR NOT --SELECT * FROM E1 WHERE ENAME='SARAN' AND ENO=100; --SELECT * FROM E1 WHERE ENAME='SARAN' OR ENO=100; --SELECT * FROM E1 WHERE NOT ENO=100; **************************** Bottom of Data **************************** UNION --SELECT * FROM E1 UNION SELECT * FROM STU; **************************** Bottom of Data **************************** UNION ALL --SELECT * FROM E1 UNION ALL SELECT * FROM STU; **************************** Bottom of Data **************************** INNER JOIN --SELECT * FROM E1 INNER JOIN STU ON E1.ENO=STU.SNO; **************************** Bottom of Data **************************** OUTER JOIN(FULL,RIGHT,LEFT)

--SELECT * FROM E1 FULL OUTER JOIN STU ON E1.ENO=STU.SNO; --SELECT * FROM E1 LEFT OUTER JOIN STU ON E1.ENO=STU.SNO; --SELECT * FROM E1 RIGHT OUTER JOIN STU ON E1.ENO=STU.SNO; **************************** Bottom of Data **************************** REFRENTIAL INTEGRITY --CREATE TABLE P(ENO INT PRIMARY KEY NOT NULL,ENAME CHAR(4)) IN --DBTCHN01.TSCAT05; --CREATE UNIQUE INDEX C ON P(ENO); --CREATE TABLE P1(ENO INT,CITY CHAR(4),FOREIGN KEY FK1(ENO) --REFERENCES P ON DELETE CASCADE) IN DBTCHN01.TSCAT05; **************************** Bottom of Data **************************** DELETE CASCADE --CREATE TABLE P1(ENO INT,CITY CHAR(4),FOREIGN KEY FK1(ENO) --REFERENCES P ON DELETE CASCADE) IN DBTCHN01.TSCAT05; **************************** Bottom of Data **************************** DELETE RESTRICT --CREATE TABLE CHI(ENO INT,CITY CHAR(4),FOREIGN KEY FK5(ENO) --REFERENCES TEA ON DELETE RESTRICT) IN DBTCHN01.TSCAT05; **************************** Bottom of Data **************************** ALL SAMPLE QUERIES IN ORDER TO EXECUTE --CREATE TABLE T1(ENO SMALLINT,ETIME TIME,ESAL FLOAT,ESAL1 DOUBLE, --ENAME VARCHAR(5),ETIME1 TIMESTAMP) IN DBTCHN01.TSCAT05; --INSERT INTO T1 VALUES(100,'10.17.18',1000.203,200.4403,'SAR', --'1987-05-07-10.17.18.111111'); --INSERT INTO T1(ENO,ETIME,ESAL1,ENAME,ETIME1) VALUES(100,CURRENT TIME, --1000.2,'SAR',CURRENT TIMESTAMP); --SELECT * FROM T1; --CREATE TABLE E1(ENO INT,ENAME CHAR(5)) --IN DBTCHN01.TSCAT05; --INSERT INTO E1 VALUES(100,'AARA'); --ALTER TABLE E1 ADD NICK CHAR(6); --INSERT INTO E1(NICK) VALUES('THARA'); --UPDATE E1 SET NICK='MATHI' WHERE ENO=100; --DELETE FROM E1 WHERE ENAME='AARA'; --ALTER TABLE E1 ALTER NICK SET DATA TYPE VARCHAR(6); --INSERT INTO E1 VALUES(100,'AARA','A2ERA4'); --SELECT * FROM E1; --SELECT * FROM E1 AS E21; --SELECT ENAME AS E1NAME FROM E1; --CREATE TABLE E3(ENO INT,ENAME CHAR(7),ESAL DECIMAL(5,2),EDOB DATE) --IN DBTCHN01.TSCAT05; --INSERT INTO E3 VALUES(200,'KALA',200.00,'1989-03-26'); --SELECT * FROM E3; --DROP TABLE E3; --CREATE TABLE E2(ENO INT,ENAME CHAR(7),ESAL DECIMAL(5,2),EDOB DATE) --IN DBTCHN01.TSCAT05; --INSERT INTO E2 VALUES(200,'MALA',200.00,'1989-03-26'); --INSERT INTO E2 VALUES(300,'SHEE',300.00,'1989-03-16'); --SELECT * FROM E2; --CREATE INDEX INX ON E2(ENAME); --CREATE UNIQUE INDEX INX1 ON E1(ENAME); --CREATE INDEX INX2 ON E1(ENO,ENAME); --CREATE INDEX INX3 ON E2(ENAME DESC); --CREATE VIEW VIEW1 AS SELECT * FROM E2; --CREATE VIEW VIEW2 AS SELECT ENAME FROM E2;

--SELECT * FROM VIEW1; --SELECT * FROM VIEW2; --ALTER VIEW VIEW1 REGENERATE; --CREATE ALIAS ALS1 FOR E1; --CREATE SYNONYM SYNM FOR DBTCHN01.E1; --SELECT ENO,ENAME,NICK FROM E1; --INSERT INTO E1 VALUES(100,'SARAN','DHORA'); --SELECT * FROM E1; --SELECT * FROM E1 WHERE NICK='SHARA'; --SELECT * FROM E1 ORDER BY NICK; --SELECT ENAME FROM E1 ORDER BY NICK; --SELECT ENAME,ENO FROM E1 ORDER BY NICK; --SELECT NICK,ENAME,ENO FROM E1 ORDER BY NICK,ENO; --SELECT NICK,ENAME,ENO FROM E1 ORDER BY NICK DESC; --SELECT ENO FROM E1 GROUP BY ENO; --SELECT ENO FROM E1 GROUP BY ENO HAVING COUNT(*)<=2; --SELECT ENO FROM E1 GROUP BY ENO HAVING COUNT(*)=2; --SELECT ENO FROM E1 GROUP BY ENO HAVING COUNT(*)>=2; --SELECT * FROM E1 WHERE ENO=100; --SELECT * FROM E1 WHERE ENO!=100; --SELECT * FROM E1 WHERE ENO<>100; --SELECT * FROM E1 WHERE ENO<100; --SELECT * FROM E1 WHERE ENO!<100; --SELECT * FROM E1 WHERE ENO<=100; --SELECT * FROM E1 WHERE ENO>100; --SELECT * FROM E1 WHERE ENO!>100; --SELECT * FROM E1 WHERE ENO>=100; --SELECT DISTINCT ENAME FROM E1; --SELECT CURRENT SERVER FROM SYSIBM.SYSDUMMY1; --SELECT AVG(ENO) FROM E1; --SELECT COUNT(*) FROM E1; --SELECT MIN(ENO),MAX(ENO) FROM E1; --SELECT MIN(ENO) FROM E1; --SELECT MAX(ENO) FROM E1; --SELECT SUM(ENO) FROM E1; --SELECT LEFT(ENAME,2) FROM E1; --SELECT RIGHT(ENAME,2) FROM E1; --SELECT ENAME,UPPER(ENAME) FROM E1; --SELECT ENAME,LOWER(ENAME) FROM E1; --SELECT LENGTH(ENAME) FROM E1; --SELECT SUBSTR(ENAME,2,3) FROM E1; --SELECT HEX(ENO) FROM E1; --SELECT DAY(EDOB) FROM E2; --SELECT MONTH(EDOB) FROM E2; --SELECT YEAR(EDOB) FROM E2; --SELECT DATE(EDOB) FROM E2; --SELECT DIGITS(ESAL) FROM E2; --SELECT ABS(ENO) FROM E2; --SELECT * FROM E1 WHERE ENAME LIKE '%A%'; --CREATE TABLE STU(SNO INT,SNAME CHAR(5),SNICK VARCHAR(6)) --IN DBTCHN01.TSCAT05; --INSERT INTO STU VALUES(100,'SARAN','SARS10'); --INSERT INTO STU VALUES(100,'SARAN','DHORA'); --INSERT INTO STU VALUES(200,'AAAA','SAR610'); --INSERT INTO STU VALUES(300,'CCCC','SAR410'); --INSERT INTO STU VALUES(400,'DDDD','SAR510'); --SELECT * FROM E1; --SELECT * FROM STU; --SELECT * FROM E1 WHERE ENAME IS NULL; --SELECT * FROM E1 WHERE ENAME IS NOT NULL;

--SELECT * FROM E1 WHERE ENAME NOT LIKE '%A%'; --SELECT * FROM E1 WHERE ENAME LIKE 'A%'; --SELECT * FROM E1 WHERE ENAME NOT LIKE 'A%'; --SELECT ENO FROM E1 WHERE ENO IN(100,200); --SELECT ENO FROM E1 WHERE EXISTS --(SELECT * FROM E1 WHERE ENO=100); --SELECT ENO FROM E1 WHERE NOT EXISTS --(SELECT * FROM E1 WHERE ENO=100); --SELECT ENAME,STRIP(ENAME,L,'S')FROM E1; --SELECT ENAME,STRIP(ENAME,T,'N')FROM E1; --SELECT ENAME,STRIP(ENAME,B,'A')FROM E1; --SELECT * FROM E1 WHERE ENAME='SARAN' AND ENO=100; --SELECT * FROM E1 WHERE ENAME='SARAN' OR ENO=100; --SELECT * FROM E1 WHERE NOT ENO=100; --SELECT * FROM E1 UNION SELECT * FROM STU; --SELECT * FROM E1 UNION ALL SELECT * FROM STU; --SELECT * FROM E1 INNER JOIN STU ON E1.ENO=STU.SNO; --SELECT * FROM E1 FULL OUTER JOIN STU ON E1.ENO=STU.SNO; --SELECT * FROM E1 LEFT OUTER JOIN STU ON E1.ENO=STU.SNO; --SELECT * FROM E1 RIGHT OUTER JOIN STU ON E1.ENO=STU.SNO; --CREATE TABLE P(ENO INT PRIMARY KEY NOT NULL,ENAME CHAR(4)) IN --DBTCHN01.TSCAT05; --CREATE UNIQUE INDEX C ON P(ENO); --CREATE TABLE P1(ENO INT,CITY CHAR(4),FOREIGN KEY FK1(ENO) --REFERENCES P ON DELETE CASCADE) IN DBTCHN01.TSCAT05; --INSERT INTO P1 VALUES(1001,'HYDR'); --INSERT INTO P2 VALUES(1002,'AGRA'); --INSERT INTO P2 VALUES(1003,'BANG'); --INSERT INTO P2 VALUES(1004,'CHEI'); --SELECT * FROM P; --SELECT * FROM P1; --DELETE FROM P WHERE ENO=1003; --CREATE TABLE TEA(ENO INT PRIMARY KEY NOT NULL,ENAME CHAR(4)) --IN DBTCHN01.TSCAT05; --CREATE UNIQUE INDEX T2 ON TEA(ENO); --CREATE TABLE CHI(ENO INT,CITY CHAR(4),FOREIGN KEY FK5(ENO) --REFERENCES TEA ON DELETE RESTRICT) IN DBTCHN01.TSCAT05; --INSERT INTO CHI VALUES(1001,'PUNE'); --INSERT INTO TEA VALUES(1002,'KBTR'); --INSERT INTO TEA VALUES(1003,'CHAN'); --INSERT INTO CHI VALUES(1003,'HYDB'); --INSERT INTO CHI VALUES(1003,'AGRA'); --DELETE FROM TEA WHERE ENO=1001; --SELECT * FROM TEA; --SELECT * FROM CHI; CREATE TABLE SARAN (EMPID NUMERIC(6) PRIMARY KEY NOT NULL -EFNAME CHAR(15), -ELNAME CHAR(15), -ETEC CHAR(20)) -IN DBTCOM01.TSFF002 --CREATE UNIQUE INDEX JAY_IND ON SARAN(EMPID) --DROP TABLE SARAN --DELETE FROM SARAN WHERE ENO='100' --INSERT INTO SARAN VALUES (269147,'RAJ','RAJENDRAN','MF'); --INSERT INTO SARAN VALUES (269148,'AHAS','H','JAVA'); --INSERT INTO SARAN VALUES (269149,'JAYA','VAS','MAIN') --INSERT INTO SARAN VALUES ('E04','HELAN',25000); --INSERT INTO SARAN VALUES ('E05','MANIYA',25000); --UPDATE SARAN SET ENAME='CAPATIN' WHERE ENO='E05' --ALTER TABLE SARAN ADD CURDATE CHAR(10)

--ALTER TABLE SARAN ADD TIMESTAMP CHAR(26) --SELECT * FROM SARAN --SELECT 5+5 FROM SYSIBM.SYSDUMMY1 --SELECT * FROM SARAN FETCH FIRST 5 ROWS ONLY --ALTER TABLE SARAN ALTER COLUMN TIMESTAMP -NOT NULL WITH DEFAULT --ALTER TABLE SARAN DROP COLUMN TIMESTAMP --UPDATE SARAN SET TIMESTAMP= -(SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1) -WHERE ENO='E09' SELECT * FROM SARAN --INSERT INTO SARAN (ENO,ENAME,ESAL) VALUES ('E09',' ',20000); --SELECT ESAL,MAX(ESAL) FROM SARAN GROUP BY SARAN(ESAL) --SELECT CURRENT DATE - 2 YEARS + 3 MONTHS - 5 DAYS --FROM SYSIBM.SYSDUMMY1 --SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1 --SELECT CURRENT TIME - 2 HOURS FROM SYSIBM.SYSDUMMY1 --SELECT CURRENT TIMESTAMP - 2 YEARS - 2 HOURS FROM SYSIBM.SYSDUMMY1 --SELECT ESAL FROM SARAN A WHERE -5=(SELECT COUNT(*) FROM SARAN B -WHERE A.ESAL >= B.ESAL) **************************** Bottom of Data **************************** DB2 PROGRAMS **************************** Bottom of Data **************************** COMPILE PROGRAM //TCHN260A JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=B, // REGION=5M,NOTIFY=&SYSUID //********************************************************************** //* INPUT AREA * //********************************************************************** // SET MEMBER=PREEXE2 // SET SOURCE=TCHN260.SARAN.DBPGM <- PROGRAM DATASET // SET INCLUDE=TCHN260.SARAN.DCLGEN <- DCLGEN DATASET // SET LOADLIB=TCHN260.SARAN.LOAD <- LOAD LIBRARY // SET DBRMLIB=TCHN260.SARAN.DBRM <- DBRM LIBRARY //********************************************************* //* DB2 PRECOMPILE THE COBOL PROGRAM //********************************************************* //PC EXEC PGM=DSNHPC, // PARM='HOST(IBMCOB),XREF,SOURCE,FLAG(I),APOST' //STEPLIB DD DISP=SHR,DSN=DSN811.SDSNLOAD //SYSIN DD DISP=SHR,DSN=&SOURCE(&MEMBER) //SYSCIN DD DSN=&&DSNHOUT,DISP=(NEW,PASS),UNIT=SYSDA, // SPACE=(800,(500,500)) //DBRMLIB DD DISP=SHR,DSN=&DBRMLIB(&MEMBER) //SYSLIB DD DISP=SHR,DSN=&INCLUDE //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSUT1 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT2 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //********************************************************************** //* COMPILE THE COBOL PROGRAM * //********************************************************************** //COBCOMP EXEC PGM=IGYCRCTL, // PARM='LIB,SOURCE' //STEPLIB DD DSN=IGY.SIGYCOMP,DISP=SHR //SYSIN DD DSN=&&DSNHOUT,DISP=(OLD,DELETE) <--INPUT SOURCE //SYSPRINT DD SYSOUT=*

//SYSLIN DD DSNAME=&&LOADSET,UNIT=SYSDA, <--OUTPUT OBJECT // DISP=(MOD,PASS),SPACE=(TRK,(3,3)), // DCB=(BLKSIZE=3200) //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT4 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT5 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT6 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT7 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //********************************************************************** //* LINK EDIT THE COBOL PROGRAM * //********************************************************************** //LINKEDIT EXEC PGM=IEWL,COND=(4,LT,COBCOMP), // PARM='LET,AMODE=31,RMODE=ANY,REUS' //SYSLIB DD DSN=DSN811.SDSNLOAD,DISP=SHR // DD DISP=SHR,DSN=CEE.SCEELKED // DD DISP=SHR,DSN=CEE.SCEERUN // DD DISP=SHR,DSN=&LOADLIB // DD DISP=SHR,DSN=ISP.SISPLOAD //SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DISP=SHR,DSN=&LOADLIB(&MEMBER) //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSUT1 DD SPACE=(1043,(50,50)),UNIT=SYSDA <-50 RECDS@1043BYTES EACH //******************************************************************** //*** BIND THIS PROGRAM. //******************************************************************** //BIND EXEC PGM=IKJEFT01,COND=(5,LT) //STEPLIB DD DISP=SHR,DSN=DSN811.SDSNLOAD //DBRMLIB DD DISP=SHR,DSN=&DBRMLIB //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(DSN1) BIND PLAN(TCHPL260) MEMBER(PREEXE2) QUALIFIER(TCHN260) ACTION(REPLACE) END /* **************************** Bottom of Data **************************** RUN PROGRAM //TCHN260R JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=A,PRTY=15, // REGION=5M,NOTIFY=&SYSUID //* //********************************************************************** //* DB2 RUN * //********************************************************************** //DB2RUN EXEC PGM=IKJEFT01,DYNAMNBR=20,COND=(4,LT) //STEPLIB DD DISP=SHR,DSN=DSN811.SDSNLOAD //SYSTSPRT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(DSN1) RUN PROGRAM(FIX) PLAN(TCHPL260) LIB('TCHN260.SARAN.LOAD')

END /* //*SYSIN DD * //*INSERT INTO S2 VALUES(7777,'GGGG',70000) //*1111 /* **************************** Bottom of Data **************************** STATIC PROGRAMS **************************** Bottom of Data **************************** CREATE TABLE METHOD1 ID DIVISION. PROGRAM-ID. STAT. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. 77 ERR PIC -9(3). PROCEDURE DIVISION. EXEC SQL CREATE TABLE SMP1(ENO INT,ENAME CHAR(4),ESAL INT) IN DBTCHN01.TSCAT05 END-EXEC. IF SQLCODE = 0 DISPLAY "DONE" ELSE MOVE SQLCODE TO ERR DISPLAY "SQLCODE:" ERR END-IF. **************************** Bottom of Data **************************** CREATE TABLE METHOD2 IDENTIFICATION DIVISION. PROGRAM-ID. ABC. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. PROCEDURE DIVISION. EXEC SQL CREATE TABLE SMP2(TNAME VARCHAR(10),TNO INT) IN DBTCHN01.TSCAT05 END-EXEC. IF SQLCODE = 0 DISPLAY "SUCCESS" ELSE DISPLAY "FAILURE " SQLCODE END-IF. STOP RUN. **************************** Bottom of Data **************************** INSERT A ROW IN TABLE ID DIVISION. PROGRAM-ID. STAT. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE SMP1 END-EXEC. 77 ERR PIC -9(3). PROCEDURE DIVISION. MOVE 1001 TO ENO.

MOVE 'AAAA' TO ENAME. MOVE 10000 TO ESAL. EXEC SQL INSERT INTO SMP1 VALUES(:ENO,:ENAME,:ESAL) END-EXEC. IF SQLCODE = 0 DISPLAY "DONE" ELSE MOVE SQLCODE TO ERR DISPLAY "SQLCODE" ERR END-IF. STOP RUN. **************************** Bottom of Data **************************** INSERT VARCHAR HANDLING ID DIVISION. PROGRAM-ID. STAT. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE M1 END-EXEC. 77 ERR PIC -9(3). PROCEDURE DIVISION. MOVE 106 TO ENO. MOVE 'VINAY' TO ENAME. MOVE 'DELHI' TO EADDR-TEXT. MOVE LENGTH OF EADDR-TEXT TO EADDR-LEN. EXEC SQL INSERT INTO A1 VALUES(:ENO,:ENAME,:EADDR) END-EXEC. IF SQLCODE = 0 DISPLAY "DONE" ELSE MOVE SQLCODE TO ERR DISPLAY "SQLCODE" ERR END-IF. STOP RUN. **************************** Bottom of Data **************************** UPDATE A ROW IN TABLE ID DIVISION. PROGRAM-ID. STAT. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE SMP4 END-EXEC. 77 ERR PIC -9(3). PROCEDURE DIVISION. MOVE 1001 TO ENO. MOVE 'RRRR' TO ENAME. EXEC SQL UPDATE SMP1 SET ENAME=:ENAME WHERE ENO=:ENO END-EXEC. IF SQLCODE = 0 DISPLAY "DONE" ELSE MOVE SQLCODE TO ERR DISPLAY "SQLCODE" ERR

END-IF. DISPLAY ENO,ENAME,ESAL. STOP RUN. **************************** Bottom of Data **************************** SELECT A ROW IN TABLE METHOD1 ID DIVISION. PROGRAM-ID. STAT. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE SMP2 END-EXEC. 77 ERR PIC -9(3). PROCEDURE DIVISION. MOVE 1001 TO ENO. EXEC SQL SELECT ENO,ENAME,ESAL INTO :ENO, :ENAME, :ESAL FROM SMP1 END-EXEC. IF SQLCODE = 0 DISPLAY "DONE" ELSE MOVE SQLCODE TO ERR DISPLAY "SQLCODE" ERR END-IF. DISPLAY ENO,ENAME,ESAL. STOP RUN. **************************** Bottom of Data **************************** SELECT A ROW IN TABLE METHOD2 IDENTIFICATION DIVISION. PROGRAM-ID. ABC. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE SMP3 END-EXEC. PROCEDURE DIVISION. EXEC SQL SELECT ENAME,ENO INTO :ENAME,:ENO,:ESAL FROM SMP1 WHERE ENO = 1001 END-EXEC. IF SQLCODE = 0 DISPLAY ENAME,ENO,ESAL ELSE DISPLAY "FAILURE " SQLCODE END-IF. STOP RUN. **************************** Bottom of Data **************************** DELETE A ROW IN TABLE ID DIVISION. PROGRAM-ID. STAT. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE SMP5 END-EXEC. PROCEDURE DIVISION. MOVE 1001 TO ENO.

EXEC SQL DELETE FROM SMP1 WHERE ENO = :ENO END-EXEC. IF SQLCODE = 0 DISPLAY "DONE" ELSE DISPLAY SQLCODE END-IF. STOP RUN. **************************** Bottom of Data **************************** ALTERING TABLE ID DIVISION. PROGRAM-ID. STAT. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE MEM1 END-EXEC. 77 ERR PIC -9(3). PROCEDURE DIVISION. EXEC SQL ALTER TABLE SMP1 ADD DOB DATE END-EXEC. IF SQLCODE = 0 DISPALY "DONE" ELSE MOVE SQLCODE TO ERR DISPLAY "SQLCODE" ERR END-IF. **************************** Bottom of Data **************************** CURSOR SELECT IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE S2 END-EXEC. EXEC SQL DECLARE C4 CURSOR FOR SELECT ENO,ENAME,ESAL FROM S2 END-EXEC. PROCEDURE DIVISION. EXEC SQL OPEN C4 END-EXEC. PERFORM PARA1 UNTIL SQLCODE = 100. EXEC SQL CLOSE C4 END-EXEC. DISPLAY SQLCODE. STOP RUN. PARA1. EXEC SQL FETCH C4 INTO :ENO,:ENAME,:ESAL END-EXEC. IF SQLCODE=0 DISPLAY "ENO:" ENO DISPLAY "ENAME:" ENAME DISPLAY "ESAL:"ESAL END-IF. **************************** Bottom of Data **************************** CURSOR SELECT UPDATE1

IDENTIFICATION DIVISION. PROGRAM-ID. SS. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE A2 END-EXEC. EXEC SQL DECLARE C3 CURSOR FOR SELECT ENO,ENAME,ESAL FROM S2 FOR UPDATE OF ESAL END-EXEC. 77 A PIC 9(3). PROCEDURE DIVISION. EXEC SQL OPEN C3 END-EXEC. PERFORM PARA1 UNTIL A = 100. DISPLAY ENO,ENAME,ESAL. EXEC SQL CLOSE C3 END-EXEC. STOP RUN. PARA1. EXEC SQL FETCH C3 INTO :ENO, :ENAME,:ESAL END-EXEC. MOVE SQLCODE TO A. DISPLAY A. EXEC SQL UPDATE S2 SET ESAL = ESAL + 1000 WHERE CURRENT OF C3 END-EXEC. DISPLAY SQLCODE. **************************** Bottom of Data **************************** CURSOR DELETE IDENTIFICATION DIVISION. PROGRAM-ID. SS. DATA DIVISION. WORKING-STORAGE SECTION. 77 ERR PIC -9(3). EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE DBEMP END-EXEC. EXEC SQL DECLARE CC CURSOR FOR SELECT ENO,ENAME,SAL FROM DBEMP FOR UPDATE OF ENO,ENAME,SAL END-EXEC. PROCEDURE DIVISION. MOVE 'ABBG' TO ENAME. OPEN-PARA. EXEC SQL OPEN CC END-EXEC. PERFORM FETCH-PARA UNTIL SQLCODE NOT EQUAL TO 0. ENO,ENAME,SAL FROM DBEMP FOR UPDATE OF ENO,ENAME,SAL END-EXEC. PROCEDURE DIVISION. MOVE 'ABBG' TO ENAME. OPEN-PARA. EXEC SQL OPEN CC END-EXEC. PERFORM FETCH-PARA UNTIL SQLCODE NOT EQUAL TO 0. FETCH-PARA.

EXEC SQL FETCH CC INTO :ENO, :ENAME, :SAL END-EXEC. IF SQLCODE = 0 DISPLAY ENO , ENAME , SAL END-IF. MOVE 104 TO ENO. EXEC SQL DELETE FROM DBEMP WHERE ENO = :ENO FETCH CC INTO :ENO, :ENAME, :SAL END-EXEC. IF SQLCODE = 0 DISPLAY ENO , ENAME , SAL END-IF. MOVE 104 TO ENO. EXEC SQL DELETE FROM DBEMP WHERE ENO = :ENO END-EXEC. DISPLAY ENO , ENAME , SAL. DISPLAY SQLCODE. CLOSE-PARA. EXEC SQL CLOSE CC END-EXEC. STOP RUN. **************************** Bottom of Data **************************** NULL PGM FOR INDENTIFYING NULL VALUES IN TABLE IDENTIFICATION DIVISION. PROGRAM-ID. M9. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE DCL1 END-EXEC. EXEC SQL DECLARE C8 CURSOR FOR SELECT ENO, ENAME, ESAL FROM A1 FOR UPDATE OF ESAL END-EXEC. 01 DIND PIC S9(4) COMP. PROCEDURE DIVISION. EXEC SQL OPEN C8 END-EXEC. PERFORM PARA1 UNTIL SQLCODE = 100. PERFORM CPARA. PARA1. EXEC SQL FETCH C8 INTO :ENO,:ENAME, :ESAL:DIND END-EXEC. DISPLAY "DIND VALUE" DIND. DISPLAY "ENO ENAME ESAL" ENO, ENAME, ESAL. CPARA. EXEC SQL CLOSE C8 END-EXEC. STOP RUN. **************************** Bottom of Data **************************** NULL PGM WITH UPDATE IDENTIFICATION DIVISION. PROGRAM-ID. M9. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION.

EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE DCL1 END-EXEC. EXEC SQL DECLARE S2 CURSOR FOR SELECT ENO, ENAME, ESAL FROM A1 FOR UPDATE OF ESAL END-EXEC. 01 DIND PIC S9(4) COMP. PROCEDURE DIVISION. PERFORM OPEN-PARA. PERFORM NULL-PARA UNTIL SQLCODE = 100. PERFORM CPARA. OPEN-PARA. EXEC SQL OPEN S2 END-EXEC. NULL-PARA. EXEC SQL FETCH S2 INTO :ENO,:ENAME,:ESAL:DIND END-EXEC. DISPLAY "SQLCODE FOR FETCH " SQLCODE. DISPLAY DIND. IF SQLCODE = 0 DISPLAY ENO, ENAME, ESAL END-IF. IF SQLCODE = 100 GO TO CPARA. IF DIND = -1 MOVE -1 TO DIND INITIALIZE ESAL IF SQLCODE = 0 DISPLAY ENO, ENAME, ESAL END-IF EXEC SQL UPDATE A1 SET ESAL=:ESAL + 100 WHERE CURRENT OF S2 END-EXEC DISPLAY "SQLCODE FOR UPDATE1" SQLCODE IF SQLCODE = 0 DISPLAY ENO, ENAME, ESAL END-IF ELSE EXEC SQL UPDATE A1 SET ESAL=:ESAL + 20 WHERE CURRENT OF S2 END-EXEC DISPLAY "SQLCODE FOR UPDATE2" SQLCODE END-IF. IF SQLCODE = 100 GO TO CPARA. CPARA. EXEC SQL CLOSE S2 END-EXEC. STOP RUN. **************************** Bottom of Data **************************** NULL PGM WITHOUT DIND WHILE FETCHING FROM NULL VALUE IDENTIFICATION DIVISION. PROGRAM-ID. M9. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC.

EXEC SQL INCLUDE DCL1 END-EXEC. EXEC SQL DECLARE S4 CURSOR FOR SELECT ENO, ENAME, ESAL FROM A1 FOR UPDATE OF ESAL END-EXEC. 01 DIND PIC S9(4) COMP. PROCEDURE DIVISION. PERFORM OPEN-PARA. PERFORM NULL-PARA UNTIL SQLCODE = 100. OPEN-PARA. EXEC SQL OPEN S4 END-EXEC. NULL-PARA. EXEC SQL FETCH S4 INTO :ENO,:ENAME,:ESAL END-EXEC. DISPLAY "SQLCODE FOR FETCH " SQLCODE. DISPLAY ENO , ENAME , ESAL. IF SQLCODE = 100 GO TO CPARA. EXEC SQL UPDATE A1 SET ESAL=:ESAL + 22 WHERE CURRENT OF S4 END-EXEC. DISPLAY "SQLCODE FOR UPDATE " SQLCODE. CPARA. EXEC SQL CLOSE S4 END-EXEC. STOP RUN. **************************** Bottom of Data ****************************

EXECUTE IMMEDIATE ID DIVISION. PROGRAM-ID. EXEIMM. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-QUERY. 49 Q-LEN PIC S9(4) COMP. 49 Q-TEXT PIC X(80). 77 WS-SQLCODE PIC S9(3) SIGN LEADING SEPARATE. EXEC SQL INCLUDE SQLCA END-EXEC. PROCEDURE DIVISION. MAIN-PARA. ACCEPT Q-TEXT. MOVE LENGTH OF Q-TEXT TO Q-LEN. EXEC SQL EXECUTE IMMEDIATE :WS-QUERY END-EXEC. MOVE SQLCODE TO WS-SQLCODE. DISPLAY WS-SQLCODE. STOP RUN. **************************** Bottom of Data **************************** PREPARE END EXECUTE IDENTIFICATION DIVISION. PROGRAM-ID. ABC. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL

INCLUDE SQLCA END-EXEC. 01 SQL1. 49 SQL1-LEN PIC S9(4) COMP. 49 SQL1-TEXT PIC X(80). 77 P PIC X(200). PROCEDURE DIVISION. MOVE 80 TO SQL1-LEN. MOVE "CREATE TABLE TABPRE(DNAME CHAR(5)) "IN DBTCHN01.TSCAT05" TO SQL1-TEXT. EXEC SQL PREPARE P FROM :SQL1 END-EXEC. EXEC SQL EXECUTE P END-EXEC. DISPLAY SQLCODE. STOP RUN. **************************** Bottom of Data **************************** PREPARE EXECUTE WITH PARAMETER MARKER ID DIVISION. PROGRAM-ID. PREEXC. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC 9(4). EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE SAR1 END-EXEC. 01 C. 49 C-LEN PIC S9(4) COMP. 49 C-TXT PIC X(80). PROCEDURE DIVISION. MOVE "UPDATE SAR1 SET ESAL = 90000 WHERE ENO = ?" TO C-TXT. MOVE LENGTH OF C-TXT TO C-LEN. EXEC SQL PREPARE P1 FROM :C END-EXEC. ACCEPT A. MOVE A TO ENO. EXEC SQL EXECUTE P1 USING :ENO END-EXEC. DISPLAY SQLCODE. STOP RUN. **************************** Bottom of Data **************************** FIXED LIST (NAME COPIED) IDENTIFICATION DIVISION. PROGRAM-ID. ABC. DATA DIVISION. WORKING-STORAGE SECTION. 77 NO1 PIC 9(4). EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE SAR1 END-EXEC. EXEC SQL DECLARE C1 CURSOR FOR PL1 END-EXEC. 01 REC. 49 REC-LEN PIC S9(4) COMP.

49 REC-TEXT PIC X(80). PROCEDURE DIVISION. MOVE 'SELECT * FROM SAR1 WHERE ENO=?' TO REC-TEXT. MOVE 80 TO REC-LEN. ACCEPT NO1. MOVE NO1 TO ENO. EXEC SQL PREPARE PL1 FROM :REC END-EXEC. EXEC SQL OPEN C1 USING :ENO END-EXEC. PERFORM PARA1 UNTIL SQLCODE NOT EQUAL TO 0. CPARA. EXEC SQL CLOSE C1 END-EXEC DISPLAY SQLCODE STOP RUN. PARA1. EXEC SQL FETCH C1 INTO :ENO , :ENAME , :ESAL END-EXEC DISPLAY ENO ENAME ESAL. IF SQLCODE = 100 GO TO CPARA. **************************** Bottom of Data **************************** NAME (UNIQUE FOR VARCHAR) IDENTIFICATION DIVISION. PROGRAM-ID. ABC. DATA DIVISION. WORKING-STORAGE SECTION. 77 NO1 PIC 9(4). EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE M2 END-EXEC. EXEC SQL DECLARE C9 CURSOR FOR PL1 END-EXEC. 01 REC. 49 REC-LEN PIC S9(4) COMP. 49 REC-TEXT PIC X(80). PROCEDURE DIVISION. MOVE 'SELECT * FROM C1 WHERE ENO=?' TO REC-TEXT. MOVE 80 TO REC-LEN. ACCEPT NO1. MOVE NO1 TO ENO. EXEC SQL PREPARE PL1 FROM :REC END-EXEC. EXEC SQL OPEN C9 USING :ENO END-EXEC.

PERFORM PARA1 UNTIL SQLCODE NOT EQUAL TO 0. CPARA. EXEC SQL CLOSE C9 END-EXEC DISPLAY SQLCODE. STOP RUN. PARA1. EXEC SQL FETCH C9 INTO :ENO , :ENAME , :EADDR END-EXEC IF SQLCODE = 100 GO TO CPARA. DISPLAY ENO, ENAME, EADDR. MOVE SPACES TO EADDR-TEXT. **************************** Bottom of Data **************************** CICS PROGRAMS CICS COBOL COMPILATION //TCHN639C JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //********************************************************************** //* INPUT AREA * //********************************************************************** // SET MEMNAME=DYNARCOB <- SOURCE PGM NAME // SET LOADMEM=TCHPG639 <- LOAD MODULE NAME // SET SOURCE=TCHN639.SARAN.CICS <- COBOL SOURCE LIBRARY // SET COPYBOOK=TCHN639.CICS.COPYBOOK <- COPYBOOK LIBRARY // SET LOADLIB=TRGCHN01.CICS.LOAD <- PROJECT CICS LOAD LIBRARY //********************************************************************** //* CICS TRANSLATOR * //********************************************************************** //PRECOMP EXEC PGM=DFHECP1$, // PARM='NOSOURCE,NOSEQ,' //STEPLIB DD DSN=CICSTS31.CICS.SDFHLOAD,DISP=SHR // DD DSN=&LOADLIB,DISP=SHR //SYSIN DD DISP=SHR,DSN=&SOURCE(&MEMNAME) //SYSLIB DD DSN=CICSTS31.CICS.ADFHCOB,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSPUNCH DD DSN=&&SYSIN00,DISP=(,PASS),UNIT=SYSDA, // DCB=BLKSIZE=400,SPACE=(CYL,(4,1)) //********************************************************************** //* COBOL COMPILER * //********************************************************************** //COBCOMP EXEC PGM=IGYCRCTL,PARM='SSRANGE',COND=(5,LT) //STEPLIB DD DSN=IGY.SIGYCOMP,DISP=SHR //SYSIN DD DSN=&&SYSIN00,DISP=(OLD,DELETE) //SYSLIB DD DSN=CICSTS31.CICS.ADFHCOB,DISP=SHR // DD DISP=SHR,DSN=&COPYBOOK //SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=SYSDA, // SPACE=(800,(500,500)) //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSUT1 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT2 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT3 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT4 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT5 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT6 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA

//SYSUT7 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //********************************************************************** //* LINKER FOR CICS PROGRAMS FILL IN SYSLIB * //********************************************************************** //LKED EXEC PGM=IEWL,PARM='XREF',COND=(5,LT) //SYSLIB DD DSN=CICSTS31.CICS.SDFHEXCI,DISP=SHR // DD DSN=CICSTS31.CICS.SDFHLOAD,DISP=SHR // DD DSN=TRGCHN01.CICS.LOAD,DISP=SHR <- PROJECT CICS LOAD LIB // DD DSN=DSN811.SDSNLOAD,DISP=SHR // DD DSN=CEE.SCEELKED,DISP=SHR // DD DSN=CEE.SCEERUN,DISP=SHR // DD DSN=ISP.SISPLOAD,DISP=SHR //SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DISP=SHR,DSN=&LOADLIB(&LOADMEM) //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSUT1 DD SPACE=(1024,(50,50)),UNIT=SYSDA //SYSIN DD * INCLUDE SYSLIB(DFHECI) INCLUDE SYSLIB(DSNCLI) /* **************************** Bottom of Data **************************** MAPSET COMPILATION //TCHN639Q JOB NOTIFY=&SYSUID,TIME=5,REGION=5M //DFHMAPS PROC INDEX='CICSTS31.CICS', FOR SDFHMAC // MAPLIB='TRGCHN01.CICS.LOAD', TARGET FOR MAP // DSCTLIB='TCHN639.CICS.COPYBOOK', TARGET FOR DSECT // MAPNAME=TCHM639, NAME OF MAPSET - REQUIRED // A=, A=A FOR ALIGNED MAP // RMODE=24, 24/ANY // ASMBLR=ASMA90, ASSEMBLER PROGRAM NAME // REG=2048K, REGION FOR ASSEMBLY // OUTC=A, PRINT SYSOUT CLASS // WORK=SYSDA WORK FILE UNIT //COPY EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=&OUTC //SYSUT1 DD DSN=TCHN639.SARAN.CICS(COLOR),DISP=SHR //SYSUT2 DD DSN=&&TEMPM,UNIT=&WORK,DISP=(,PASS), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=400), // SPACE=(400,(50,50)) //SYSIN DD DUMMY //* SYSUT1 DD * NEEDED FOR THE MAP SOURCE //ASMMAP EXEC PGM=&ASMBLR,REGION=&REG, //* NOLOAD CHANGED TO NOOBJECT @BA91512 // PARM='SYSPARM(&A.MAP),DECK,NOOBJECT' //SYSPRINT DD SYSOUT=&OUTC //SYSLIB DD DSN=&INDEX..SDFHMAC,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //SYSUT1 DD UNIT=&WORK,SPACE=(CYL,(5,5)) //SYSUT2 DD UNIT=&WORK,SPACE=(CYL,(5,5)) //SYSUT3 DD UNIT=&WORK,SPACE=(CYL,(5,5)) //SYSPUNCH DD DSN=&&MAP,DISP=(,PASS),UNIT=&WORK, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=400), // SPACE=(400,(50,50)) //SYSIN DD DSN=&&TEMPM,DISP=(OLD,PASS) //LINKMAP EXEC PGM=IEWL,PARM='LIST,LET,XREF,RMODE(&RMODE)' //SYSPRINT DD SYSOUT=&OUTC

//SYSLMOD DD DSN=&MAPLIB(&MAPNAME),DISP=SHR //SYSUT1 DD UNIT=&WORK,SPACE=(1024,(20,20)) //SYSLIN DD DSN=&&MAP,DISP=(OLD,DELETE) //* NOLOAD CHANGED TO NOOBJECT //ASMDSECT EXEC PGM=&ASMBLR,REGION=&REG, // PARM='SYSPARM(&A.DSECT),DECK,NOOBJECT' //SYSPRINT DD SYSOUT=&OUTC //SYSLIB DD DSN=&INDEX..SDFHMAC,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR //SYSUT1 DD UNIT=&WORK,SPACE=(CYL,(5,5)) //SYSUT2 DD UNIT=&WORK,SPACE=(CYL,(5,5)) //SYSUT3 DD UNIT=&WORK,SPACE=(CYL,(5,5)) //SYSPUNCH DD DSN=&DSCTLIB(&MAPNAME),DISP=OLD //SYSIN DD DSN=&&TEMPM,DISP=(OLD,DELETE) // PEND //S1 EXEC DFHMAPS //

@BA91512

**************************** Bottom of Data **************************** COBOL DB2 COMPILATION /TCOM149W JOB MSGCLASS=X,MSGLEVEL=(1,1),CLASS=A, // REGION=5M,NOTIFY=&SYSUID //********************************************************************** //* INPUT AREA * //********************************************************************** // SET MEMNAME=EMPPGM <- PROGRAM NAME // SET LOADMEM=TCOPG149 <- LOAD MODULE NAME // SET DBRMLIB=TCOM149.SARAN.DBRM <- DBRM LIBRARY // SET INCLUDE=TCOM149.SARAN.DCLGEN <- DB2 DCLGEN // SET COBCOPY=TCOM149.SARAN.COPYBOOK <- COBOL COPYBOOK // SET LOADLIB=TRGCHN01.CICS.LOAD <- CICS LOAD LIB // SET SOURCE=TCOM149.SARAN.CICS1 <- COBOL SOURCE //********************************************************************** //* DB2 PRECOMPILE THE COBOL PROGRAM * //********************************************************************** //PC EXEC PGM=DSNHPC, // PARM='HOST(IBMCOB),XREF,SOURCE,FLAG(I),APOST,NEWFUN(NO)' //STEPLIB DD DISP=SHR,DSN=DSN811.SDSNLOAD //DBRMLIB DD DISP=SHR,DSN=&DBRMLIB(&LOADMEM) //SYSCIN DD DSN=&&DSNHOUT,DISP=(NEW,PASS),UNIT=SYSDA, // SPACE=(800,(500,500)) //SYSLIB DD DISP=SHR,DSN=&INCLUDE //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSUT1 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT2 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSIN DD DISP=SHR,DSN=&SOURCE(&MEMNAME) //********************************************************************** //* CICS PRECOMPILE * //********************************************************************** //PRECOMP EXEC PGM=DFHECP1$, // PARM='NOSOURCE,NOSEQ' //STEPLIB DD DSN=CICSTS31.CICS.SDFHLOAD,DISP=SHR //SYSIN DD DSN=&&DSNHOUT,DISP=(OLD,DELETE) //SYSLIB DD DSN=CICSTS31.CICS.SDFHCOB,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSPUNCH DD DSN=&&SYSIN00,DISP=(,PASS),UNIT=SYSDA, // DCB=BLKSIZE=400,SPACE=(CYL,(4,1))

//********************************************************************** //* COBOL COMPILE * //********************************************************************** //COBCOMP EXEC PGM=IGYCRCTL,PARM='MAP,XREF' //SYSIN DD DSN=&&SYSIN00,DISP=(OLD,DELETE) //SYSLIB DD DSN=CICSTS31.CICS.SDFHCOB,DISP=SHR // DD DISP=SHR,DSN=&COBCOPY //SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=SYSDA, // SPACE=(800,(500,500)) //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSUT1 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT2 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT3 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT4 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT5 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT6 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //SYSUT7 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA //********************************************************************** //* LINK EDIT * //********************************************************************** //LKED EXEC PGM=IEWL,PARM='XREF' //SYSLIB DD DSN=CICSTS31.CICS.SDFHEXCI,DISP=SHR // DD DSN=CICSTS31.CICS.SDFHLOAD,DISP=SHR // DD DSN=CEE.SCEELKED,DISP=SHR // DD DSN=DSN811.SDSNLOAD,DISP=SHR // DD DSN=CEE.SCEERUN,DISP=SHR // DD DSN=ISP.SISPLOAD,DISP=SHR //SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DISP=SHR,DSN=&LOADLIB(&LOADMEM) //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSUT1 DD SPACE=(1043,(50,50)),UNIT=SYSDA //SYSIN DD * INCLUDE SYSLIB(DFHECI) INCLUDE SYSLIB(DSNCLI) /* //********************************************************************** //* BIND THE PROGRAM * //********************************************************************** //BIND EXEC PGM=IKJEFT01 //STEPLIB DD DISP=SHR,DSN=DSN811.SDSNLOAD //DBRMLIB DD DISP=OLD,DSN=&DBRMLIB(&LOADMEM) //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //********************************************************************** //* SPECIFY YOUR PLAN NAME WITHIN PLAN PARANTHESIS '()' * //* SPECIFY YOUR PROGRAM NAME WITHIN MEMBER PARANTHESIS * //* SPECIFY YOUR USERID WITHIN QUALIFIER PARANTHESIS * //********************************************************************** //SYSTSIN DD * DSN SYSTEM(DSN1) BIND PLAN(TCOPL149) MEMBER(TCOPG149) QUALIFIER(TCOM149) ACTION(REP) RETAIN ISOLATION(CS) VALIDATE(BIND) END /* **************************** Bottom of Data ****************************

FIRST PROGRAM IDENTIFICATION DIVISION. PROGRAM-ID. DISP. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC X(25). 77 L PIC S9(4) COMP. PROCEDURE DIVISION. P1. MOVE 'MY FIRST CICS PROGRAM' TO A. MOVE 21 TO L. EXEC CICS SEND FROM(A) LENGTH(L) END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** ACCUMULATING MESSAGES IDENTIFICATION DIVISION. PROGRAM-ID. LAKS. DATA DIVISION. WORKING-STORAGE SECTION. 77 N1 PIC X(16) VALUE 'WELCOME TO CICS'. 77 N2 PIC X(16) VALUE 'TIS IS FIRST'. 77 N3 PIC X(16) VALUE 'CICS SESSION TO'. 77 N4 PIC X(16) VALUE 'CBECTS TRAINING'. PROCEDURE DIVISION. EXEC CICS SEND TEXT FROM(N1) LENGTH(15) EXEC CICS SEND TEXT FROM(N2) LENGTH(15) EXEC CICS SEND TEXT FROM(N3) LENGTH(15) EXEC CICS SEND TEXT FROM(N4) LENGTH(15) EXEC CICS SEND PAGE END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data ADD PROGRAM IN CICS MAP TCHN639 DFHMSD TYPE=&SYSPARM,MODE=INOUT,LANG=COBOL,STORAGE=AUTO, X TIOAPFX=YES,CTRL=(FREEKB,FRSET) ADDM DFHMDI SIZE=(24,80),LINE=1,COLUMN=1 DFHMDF POS=(4,4),INITIAL='ENTER A:',LENGTH=8,ATTRB=PROT A1 DFHMDF POS=(4,13),INITIAL='--',LENGTH=2,ATTRB=(UNPROT,IC,FSET) DFHMDF POS=(6,4),INITIAL='ENTER B:',LENGTH=8,ATTRB=PROT B1 DFHMDF POS=(6,13),INITIAL='--',LENGTH=2,ATTRB=(UNPROT,FSET) DFHMDF POS=(9,4),INITIAL='THE RESULT:',LENGTH=11,ATTRB=PROT C1 DFHMDF POS=(9,16),INITIAL='--',LENGTH=2,ATTRB=PROT TCHN639 DFHMSD TYPE=FINAL END COBOL CODING FOR SIMPLE ADD ID DIVISION. PROGRAM-ID. TCOPG120. DATA DIVISION. WORKING-STORAGE SECTION. COPY TCHM639. 77 A PIC 99. 77 B PIC 99. 77 C PIC 99.

ACCUM ACCUM ACCUM ACCUM

END-EXEC. END-EXEC. END-EXEC. END-EXEC.

****************************

PROCEDURE DIVISION. P1. MOVE LOW-VALUES TO MAP1O. EXEC CICS SEND MAP('MAP1') MAPSET('TCHM639') ERASE END-EXEC. EXEC CICS RECEIVE MAP('MAP1') MAPSET('TCHM639') END-EXEC. MOVE A1I TO A. MOVE B1I TO B. COMPUTE C = A + B. EXEC CICS SEND MAP('MAP1') MAPSET('TCHM639') ACCUM END-EXEC. MOVE C TO C1O. EXEC CICS SEND MAP('MAP2') MAPSET('TCHM639') END-EXEC. EXEC CICS RETURN END-EXEC. ********************* Bottom of Data *********************************** COMPUTATION MAP TCHM639 DFHMSD TYPE=&SYSPARM,MODE=INOUT,LANG=COBOL,STORAGE=AUTO, X TIOAPFX=YES,CTRL=(FREEKB,FRSET) MAIN DFHMDI SIZE=(24,80),LINE=1,COLUMN=1 DFHMDF POS=(4,36),INITIAL='MAIN MENU',LENGTH=9,ATTRB=PROT DFHMDF POS=(5,36),INITIAL='*********',LENGTH=9,ATTRB=PROT DFHMDF POS=(7,36),INITIAL='1.ADDITION',LENGTH=10,ATTRB=PROT DFHMDF POS=(8,36),INITIAL='2.SUBTRACT',LENGTH=10,ATTRB=PROT DFHMDF POS=(9,36),INITIAL='3.MULTIPLY',LENGTH=10,ATTRB=PROT DFHMDF POS=(10,36),INITIAL='4.DIVISION',LENGTH=10,ATTRB=PROT DFHMDF POS=(11,36),INITIAL='5.EXIT',LENGTH=10,ATTRB=PROT DFHMDF POS=(15,40),INITIAL='PRESS YOUR KEY',LENGTH=14, X ATTRB=PROT DFHMDF POS=(15,55),LENGTH=1,ATTRB=(UNPROT,IC,FSET) DFHMDF POS=(23,13),INITIAL='PF1=ADD',LENGTH=7,ATTRB=PROT DFHMDF POS=(23,23),INITIAL='PF2=SUB',LENGTH=7,ATTRB=PROT DFHMDF POS=(23,33),INITIAL='PF3=MUL',LENGTH=7,ATTRB=PROT DFHMDF POS=(23,43),INITIAL='PF4=DIV',LENGTH=7,ATTRB=PROT DFHMDF POS=(23,53),INITIAL='PF5=END',LENGTH=7,ATTRB=PROT ADD1 DFHMDI SIZE=(24,80),LINE=1,COLUMN=1 DFHMDF POS=(4,36),INITIAL='ADDITION',LENGTH=8,ATTRB=PROT DFHMDF POS=(5,36),INITIAL='********',LENGTH=8,ATTRB=PROT DFHMDF POS=(7,10),INITIAL='ENTER TWO NUMBERS:',LENGTH=18, X ATTRB=PROT A1 DFHMDF POS=(7,33),INITIAL='--', X LENGTH=2,ATTRB=(UNPROT,IC,FSET,NUM) DFHMDF POS=(7,36),ATTRB=ASKIP,LENGTH=1 B1 DFHMDF POS=(7,40),INITIAL='--',LENGTH=2, X ATTRB=(UNPROT,FSET,NUM) DFHMDF POS=(7,43),ATTRB=PROT,LENGTH=1 DFHMDF POS=(11,10),INITIAL='YOUR RESULT:',LENGTH=12,ATTRB=PROT C1 DFHMDF POS=(11,27),INITIAL='---',LENGTH=3,ATTRB=PROT DFHMDF POS=(15,14),INITIAL='PRESS F1 FOR MAIN MENU', X LENGTH=25,ATTRB=PROT SUB1 DFHMDI SIZE=(24,80),LINE=1,COLUMN=1 DFHMDF POS=(4,36),INITIAL='SUBTRACT',LENGTH=8,ATTRB=PROT DFHMDF POS=(5,36),INITIAL='********',LENGTH=8,ATTRB=PROT DFHMDF POS=(7,10),INITIAL='ENTER TWO NUMBERS:',LENGTH=18, X ATTRB=PROT A2 DFHMDF POS=(7,33),INITIAL='--',LENGTH=2, X ATTRB=(UNPROT,IC,FSET,NUM) DFHMDF POS=(7,36),ATTRB=ASKIP,LENGTH=1 B2 DFHMDF POS=(7,40),INITIAL='--',LENGTH=2, X ATTRB=(UNPROT,FSET,NUM) DFHMDF POS=(7,43),ATTRB=PROT,LENGTH=1 DFHMDF POS=(11,10),INITIAL='YOUR RESULT:',LENGTH=12,ATTRB=PROT

C2

DFHMDF POS=(11,27),INITIAL='---',LENGTH=3,ATTRB=PROT DFHMDF POS=(15,14),INITIAL='PRESS F1 FOR MAIN MENU', X LENGTH=25,ATTRB=PROT MUL1 DFHMDI SIZE=(24,80),LINE=1,COLUMN=1 DFHMDF POS=(4,36),INITIAL='MULTIPLY',LENGTH=8,ATTRB=PROT DFHMDF POS=(5,36),INITIAL='********',LENGTH=8,ATTRB=PROT DFHMDF POS=(7,10),INITIAL='ENTER TWO NUMBERS:',LENGTH=18, X ATTRB=PROT A3 DFHMDF POS=(7,33),LENGTH=2,INITIAL='--', X ATTRB=(UNPROT,IC,FSET,NUM) DFHMDF POS=(7,36),INITIAL='--',ATTRB=ASKIP,LENGTH=1 B3 DFHMDF POS=(7,40),INITIAL='--',LENGTH=2, X ATTRB=(UNPROT,FSET,NUM) DFHMDF POS=(7,43),ATTRB=PROT,LENGTH=1 DFHMDF POS=(11,10),INITIAL='YOUR RESULT:',LENGTH=12,ATTRB=PROT C3 DFHMDF POS=(11,27),INITIAL='---',LENGTH=3,ATTRB=PROT DFHMDF POS=(15,14),INITIAL='PRESS F1 FOR MAIN MENU', X LENGTH=25,ATTRB=PROT DIV1 DFHMDI SIZE=(24,80),LINE=1,COLUMN=1 DFHMDF POS=(4,36),INITIAL='DIVISION',LENGTH=8,ATTRB=PROT DFHMDF POS=(5,36),INITIAL='********',LENGTH=8,ATTRB=PROT DFHMDF POS=(7,10),INITIAL='ENTER TWO NUMBERS:',LENGTH=18, X ATTRB=PROT A4 DFHMDF POS=(7,33),LENGTH=2,INITIAL='--', X ATTRB=(UNPROT,IC,FSET,NUM) DFHMDF POS=(7,36),ATTRB=ASKIP,LENGTH=1 B4 DFHMDF POS=(7,40),INITIAL='--',LENGTH=2, X ATTRB=(UNPROT,FSET,NUM) DFHMDF POS=(7,43),ATTRB=PROT,LENGTH=1 DFHMDF POS=(11,10),INITIAL='YOUR RESULT:',LENGTH=12,ATTRB=PROT C4 DFHMDF POS=(11,27),INITIAL='--',LENGTH=3,ATTRB=PROT DFHMDF POS=(15,14),INITIAL='PRESS F1 FOR MAIN MENU', X LENGTH=25,ATTRB=PROT TCHM639 DFHMSD TYPE=FINAL END COBOL PROGRAM FOR COMPUTATION ID DIVISION. PROGRAM-ID. TCHPG639. DATA DIVISION. WORKING-STORAGE SECTION. COPY TCHM639. 77 A PIC 99. 77 B PIC 99. 77 C PIC 999. PROCEDURE DIVISION. P0. MOVE LOW-VALUES TO MAINO. EXEC CICS SEND MAP('MAIN') MAPSET('TCHM639') ERASE END-EXEC. EXEC CICS HANDLE AID PF1(P1) PF2(P2) PF3(P3) PF4(P4) PF5(P5) END-EXEC. EXEC CICS RECEIVE END-EXEC. P1. MOVE LOW-VALUES TO ADD1O. EXEC CICS SEND MAP('ADD1') MAPSET('TCHM639') ERASE END-EXEC. EXEC CICS RECEIVE MAP('ADD1') MAPSET('TCHM639') END-EXEC. MOVE A1I TO A. MOVE B1I TO B. COMPUTE C = A + B.

MOVE EXEC EXEC EXEC P2.

C TO CICS CICS CICS

C1O. SEND MAP('ADD1') MAPSET('TCHM639')ERASE END-EXEC. HANDLE AID PF1(P0) END-EXEC. RECEIVE END-EXEC.

MOVE LOW-VALUES TO SUB1O. EXEC CICS SEND MAP('SUB1') MAPSET('TCHM639') ERASE END-EXEC. EXEC CICS RECEIVE MAP('SUB1') MAPSET('TCHM639') END-EXEC. MOVE A2I TO A. MOVE B2I TO B. COMPUTE C = A - B. MOVE C TO C2O. EXEC CICS SEND MAP('SUB1') MAPSET('TCHM639') END-EXEC. EXEC CICS HANDLE AID PF1(P0) END-EXEC. EXEC CICS RECEIVE END-EXEC. P3. MOVE LOW-VALUES TO MUL1O. EXEC CICS SEND MAP('MUL1') MAPSET('TCHM639') ERASE END-EXEC. EXEC CICS RECEIVE MAP('MUL1') MAPSET('TCHM639') END-EXEC. MOVE A3I TO A. MOVE B3I TO B. COMPUTE C = A * B. MOVE C TO C3O. EXEC CICS SEND MAP('MUL1') MAPSET('TCHM639') END-EXEC. EXEC CICS HANDLE AID PF1(P0) END-EXEC. EXEC CICS RECEIVE END-EXEC. P4. MOVE LOW-VALUES TO DIV1O. EXEC CICS SEND MAP('DIV1') MAPSET('TCHM639') ERASE END-EXEC. EXEC CICS RECEIVE MAP('DIV1') MAPSET('TCHM639') END-EXEC. MOVE A4I TO A. MOVE B4I TO B. COMPUTE C = A / B. MOVE C TO C4O. EXEC CICS SEND MAP('DIV1') MAPSET('TCHM639') END-EXEC. EXEC CICS HANDLE AID PF1(P0) END-EXEC. EXEC CICS RECEIVE END-EXEC. P5. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** STATIC POSITIONING OF CURSOR TCHM639 DFHMSD TYPE=&SYSPARM,MODE=INOUT,LANG=COBOL,STORAGE=AUTO, X TIOAPFX=YES,CTRL=(FREEKB,FRSET) MAP1 DFHMDI SIZE=(24,80),LINE=1,COLUMN=1 DFHMDF POS=(1,3),INITIAL='ENTER A',LENGTH=7,ATTRB=PROT A DFHMDF POS=(1,11),INITIAL='--',LENGTH=2,ATTRB=(UNPROT,IC) DFHMDF POS=(3,3),INITIAL='ENTER B',LENGTH=7,ATTRB=PROT B DFHMDF POS=(3,11),INITIAL='--',LENGTH=2,ATTRB=(UNPROT,IC) DFHMDF POS=(5,3),INITIAL='SUM IS',LENGTH=6,ATTRB=PROT S DFHMDF POS=(5,10),INITIAL='--',LENGTH=2,ATTRB=UNPROT DFHMSD TYPE=FINAL END **************************** Bottom of Data **************************** DYNAMIC SYMBOLIC POSITIONING MAP TCHM639 DFHMSD TYPE=&SYSPARM,MODE=INOUT,LANG=COBOL,STORAGE=AUTO, TIOAPFX=YES,CTRL=(FREEKB,FRSET) X

MAP1 A B S

DFHMDI DFHMDF DFHMDF DFHMDF DFHMDF DFHMDF DFHMDF DFHMSD

SIZE=(24,80),LINE=1,COLUMN=1 POS=(1,3),INITIAL='ENTER A',LENGTH=7,ATTRB=PROT POS=(1,11),INITIAL='--',LENGTH=2,ATTRB=(UNPROT,IC) POS=(3,3),INITIAL='ENTER B',LENGTH=7,ATTRB=PROT POS=(3,11),INITIAL='--',LENGTH=2,ATTRB=(UNPROT,IC) POS=(5,3),INITIAL='SUM IS',LENGTH=6,ATTRB=PROT POS=(5,10),INITIAL='--',LENGTH=2,ATTRB=UNPROT TYPE=FINAL END

COBOLPROGRAM IDENTIFICATION DIVISION. PROGRAM-ID. CURDYSYM. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. COPY TCHM639. PROCEDURE DIVISION. P1. MOVE LOW-VALUES TO MAP1O. MOVE -1 TO BL EXEC CICS SEND MAP('MAP1') MAPSET('TCHM639') CURSOR END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** DYNAMIC RELATIVE POSITIONING MAP TCHM639 DFHMSD TYPE=&SYSPARM,MODE=INOUT,LANG=COBOL,STORAGE=AUTO, TIOAPFX=YES,CTRL=(FREEKB,FRSET) MAP1 DFHMDI SIZE=(24,80),LINE=1,COLUMN=1 DFHMDF POS=(1,3),INITIAL='ENTER A',LENGTH=7,ATTRB=PROT A DFHMDF POS=(1,11),INITIAL='--',LENGTH=2,ATTRB=(UNPROT,IC) DFHMDF POS=(3,3),INITIAL='ENTER B',LENGTH=7,ATTRB=PROT B DFHMDF POS=(3,11),INITIAL='--',LENGTH=2,ATTRB=(UNPROT,IC) DFHMDF POS=(5,3),INITIAL='SUM IS',LENGTH=6,ATTRB=PROT S DFHMDF POS=(5,10),INITIAL='--',LENGTH=2,ATTRB=UNPROT DFHMSD TYPE=FINAL END COBOLPROGRAM IDENTIFICATION DIVISION. PROGRAM-ID. CURDYREL. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. COPY TCHM639. PROCEDURE DIVISION. P1. MOVE LOW-VALUES TO MAP1O. EXEC CICS SEND MAP('MAP1') MAPSET('TCHM639') CURSOR(5) END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** COLORING MAP TCHM639 DFHMSD TYPE=&SYSPARM,MODE=INOUT,LANG=COBOL,STORAGE=AUTO, TIOAPFX=YES,CTRL=(FREEKB,FRSET),MAPATTS=COLOR, X X X

DSATTS=COLOR SIZE=(24,80),LINE=1,COLUMN=1 POS=(1,3),INITIAL='ENTER A',LENGTH=7,ATTRB=PROT A POS=(1,11),INITIAL='--',LENGTH=2,ATTRB=(UNPROT,IC) POS=(3,3),INITIAL='ENTER B',LENGTH=7,ATTRB=PROT B POS=(3,11),INITIAL='--',LENGTH=2,ATTRB=UNPROT, X COLOR=RED DFHMDF POS=(5,3),INITIAL='SUM IS',LENGTH=6,ATTRB=PROT S DFHMDF POS=(5,10),INITIAL='--',LENGTH=2,ATTRB=UNPROT, X COLOR=BLUE DFHMSD TYPE=FINAL END **************************** Bottom of Data **************************** HANDLE CONDITION MAP1 DFHMDI DFHMDF DFHMDF DFHMDF DFHMDF IDENTIFICATION DIVISION. PROGRAM-ID. HAN. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC X(30). 77 L PIC S9(4) COMP. PROCEDURE DIVISION. P1. MOVE 'PROGRAM' TO A. MOVE -7 TO L. EXEC CICS HANDLE CONDITION LENGERR(P2) END-EXEC. EXEC CICS SEND FROM(A) LENGTH(L) END-EXEC. P2. MOVE 'CORRECT' TO A. MOVE 7 TO L. EXEC CICS SEND FROM(A) LENGTH(L) END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** NO HANDLE CONDILTION IDENTIFICATION DIVISION. PROGRAM-ID. HAN. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC X(30). 77 L PIC S9(4) COMP. PROCEDURE DIVISION. P1. MOVE 'PROGRAM' TO A. MOVE -7 TO L. EXEC CICS HANDLE CONDITION LENGERR(P2) END-EXEC. EXEC CICS SEND FROM(A) LENGTH(L) END-EXEC. P2. MOVE 'CORRECT' TO A. MOVE -7 TO L. EXEC CICS SEND FROM(A) LENGTH(L) NOHANDLE END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** IGNORE CONDITION IDENTIFICATION DIVISION. PROGRAM-ID. HAN.

ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC X(30). 77 L PIC S9(4) COMP. PROCEDURE DIVISION. P1. MOVE 'PROGRAM' TO A. MOVE -7 TO L. EXEC CICS IGNORE CONDITION LENGERR END-EXEC. EXEC CICS SEND FROM(A) LENGTH(L) END-EXEC. P2. MOVE 'CORRECT' TO A. MOVE 7 TO L. EXEC CICS SEND FROM(A) LENGTH(L) END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** DFHRESP IDENTIFICATION DIVISION. PROGRAM-ID. RESPN. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC X(30). 77 L PIC S9(4) COMP. 77 R PIC S9(8) COMP. PROCEDURE DIVISION. P1. MOVE 'START' TO A. MOVE -3 TO L. EXEC CICS SEND FROM(A) LENGTH(L) RESP(R) END-EXEC. IF R = DFHRESP(NORMAL) GO TO P2. IF R = DFHRESP(LENGERR) GO TO P3. GO TO P4. P2. MOVE 'CORRECT' TO A. MOVE 7 TO L. EXEC CICS SEND FROM(A) LENGTH(L) END-EXEC. P3. MOVE 'WRONG' TO A. MOVE 5 TO L. EXEC CICS SEND FROM(A) LENGTH(L) END-EXEC. P4. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** TSQ IDENTIFICATION DIVISION. PROGRAM-ID. TTSS. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 A. 02 NAME PIC X(10). 02 AGE PIC 99. 77 L1 PIC S9(4) COMP. 77 IT PIC S9(4) COMP.

77 ST PIC X(10). 77 L2 PIC S9(4) COMP. PROCEDURE DIVISION. P1. MOVE 'SARATH' TO NAME. MOVE 18 TO AGE. MOVE 8 TO L1. MOVE 'ADDED' TO ST. MOVE 5 TO L2. EXEC CICS WRITEQ TS QUEUE('HEE') FROM(A) LENGTH(L1) ITEM(IT) END-EXEC. EXEC CICS SEND CONTROL ERASE END-EXEC. EXEC CICS SEND FROM(ST) LENGTH(L2) END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** PSEUDO CONVERSATION ID DIVISION. PROGRAM-ID. TCHPG639. DATA DIVISION. WORKING-STORAGE SECTION. 01 WKCOMMAREA. 02 WK-TRAN PIC X(4). 77 A1 PIC X(6) VALUE 'HELLO1'. 77 A2 PIC X(6) VALUE 'HELLO2'. 77 A3 PIC X(6) VALUE 'HELLO3'. LINKAGE SECTION. 01 DFHCOMMAREA. 02 LK-TRAN PIC X(4). PROCEDURE DIVISION. P1. IF EIBCALEN = 0 PERFORM P2. IF LK-TRAN = 'TSK2' PERFORM P3. IF LK-TRAN = 'TSK3' PERFORM P4. IF LK-TRAN = 'TSK3' PERFORM P4. P2. EXEC CICS SEND FROM(A1) LENGTH(LENGTH OF A1) ERASE END-EXEC. MOVE 'TSK2' TO WK-TRAN. EXEC CICS RETURN TRANSID('T639') COMMAREA(WKCOMMAREA) LENGTH(LENGTH OF WKCOMMAREA) END-EXEC. P3. EXEC CICS SEND FROM(A2) LENGTH(LENGTH OF A2) ERASE END-EXEC. MOVE 'TSK3' TO WK-TRAN. EXEC CICS RETURN TRANSID('T639') COMMAREA(WKCOMMAREA) LENGTH(LENGTH OF WKCOMMAREA) END-EXEC. P4. EXEC CICS SEND FROM(A3) LENGTH(LENGTH OF A3) ERASE END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** LINK PROGRAMS ID DIVISION. PROGRAM-ID. KL. DATA DIVISION. WORKING-STORAGE SECTION. 01 MSG PIC A(20) VALUE "F MAIN PGM". 01 MSG1 PIC A(20) VALUE "S MAIN PGM". PROCEDURE DIVISION. EXEC CICS

SEND FROM(MSG) END-EXEC. EXEC CICS LINK PROGRAM('TCHPG120') END-EXEC EXEC CICS SEND FROM(MSG1) END-EXEC. EXEC CICS EXEC CICS RETURN END-EXEC. COMPILE THIS PROGRAM WITH PGMID TCHPG639 COMPILE SOME OTHER PROGRAM WITH PGMID TCHPG120 DEFINE BOTH IN CICS REGION EXECUTE TCHPG639 **************************** Bottom of Data **************************** XCTL PROGRAMS ID DIVISION. PROGRAM-ID. KL. DATA DIVISION. WORKING-STORAGE SECTION. 01 MSG PIC A(20) VALUE "F MAIN PGM". 01 MSG1 PIC A(20) VALUE "S MAIN PGM". PROCEDURE DIVISION. EXEC CICS SEND FROM(MSG) END-EXEC. EXEC CICS LINK PROGRAM('TCHPG120') END-EXEC EXEC CICS SEND FROM(MSG1) END-EXEC. EXEC CICS EXEC CICS RETURN END-EXEC. COMPILE THIS PROGRAM WITH PGMID TCHPG639 COMPILE SOME OTHER PROGRAM WITH PGMID TCHPG120 DEFINE BOTH IN CICS REGION EXECUTE TCHPG639 **************************** Bottom of Data **************************** FILE BROWSE READNEXT WRITE MAP TCHM639 DFHMSD TYPE=MAP,MODE=INOUT,LANG=COBOL,STORAGE=AUTO, X TIOAPFX=YES,MAPATTS=COLOR FILMAP DFHMDI SIZE=(24,80),CTRL=(FREEKB,FRSET) DFHMDF POS=(06,20),ATTRB=(NORM,PROT),LENGTH=4,INITIAL='ENO:' ENO DFHMDF POS=(06,27),ATTRB=(NORM,UNPROT,IC), X LENGTH=2,INITIAL='--' DFHMDF POS=(06,30),ATTRB=ASKIP,LENGTH=1 DFHMDF POS=(08,20),ATTRB=(NORM,PROT),LENGTH=6,INITIAL='ENAME:'

ENAME

ESAL RES

DFHMDF POS=(08,27),ATTRB=(NORM,UNPROT), X LENGTH=6,INITIAL='------' DFHMDF POS=(08,34),ATTRB=ASKIP,LENGTH=1 DFHMDF POS=(10,20),ATTRB=(NORM,PROT),LENGTH=5,INITIAL='ESAL:' DFHMDF POS=(10,27),ATTRB=(NORM,UNPROT), X LENGTH=3,INITIAL='---' DFHMDF POS=(10,31),ATTRB=PROT,LENGTH=1 DFHMDF POS=(12,01),ATTRB=(NORM,NUM,UNPROT),LENGTH=80 DFHMSD TYPE=FINAL END

COBOL WRITE BROWSE READNEXT IDENTIFICATION DIVISION. PROGRAM-ID. SSS. DATA DIVISION. WORKING-STORAGE SECTION. 01 REC. 02 ENO PIC X(2). 02 F PIC X. 02 ENAME PIC X(6). 02 F PIC X. 02 LOC PIC X(3). 02 F PIC X(67). COPY TCHM639. 77 R PIC S9(8) COMP. PROCEDURE DIVISION. MOVE LOW-VALUES TO FILMAPI, FILMAPO. EXEC CICS SEND MAP('FILMAP') MAPSET('TCHM639') EXEC CICS SEND MAP('FILMAP') MAPSET('TCHM639') ERASE END-EXEC. EXEC CICS RECEIVE MAP('FILMAP') MAPSET('TCHM639') END-EXEC. MOVE ENOI TO ENO. MOVE ENAMEI TO ENAME. MOVE ELOCI TO LOC. EXEC CICS WRITE FILE('TCHFL639') FROM(REC) RIDFLD(ENO) LENGTH(LENGTH OF REC) RESP(R) END-EXEC. IF R = DFHRESP(NORMAL) MOVE 'OK' TO RESO END-IF. EXEC CICS SEND MAP('FILMAP') MAPSET('TCHM639') END-EXEC. MOVE LOW-VALUES TO FILMAPO. EXEC CICS SEND MAP('FILMAP') MAPSET('TCHM639') END-EXEC. EXEC CICS RECEIVE MAP('FILMAP') MAPSET('TCHM639') END-EXEC. END-EXEC. MOVE ENOI TO ENO. MOVE ENAMEI TO ENAME. MOVE ELOCI TO LOC. EXEC CICS STARTBR FILE('TCHFL639') RIDFLD(ENO) END-EXEC. RP. EXEC CICS READNEXT FILE('TCHFL639') INTO(REC) LENGTH(LENGTH OF REC) RIDFLD(ENO) RESP(R)

END-EXEC. IF(R = DFHRESP(ENDFILE)) MOVE 'DATA COMPLETED' TO RESO EXEC CICS SEND MAP('FILMAP') EXEC CICS SEND MAP('FILMAP') MAPSET('TCHM639') END-EXEC PERFORM CLP ELSE MOVE REC TO RESO EXEC CICS SEND MAP('FILMAP') MAPSET('TCHM639') END-EXEC EXEC CICS RECEIVE END-EXEC PERFORM RP END-IF. CLP. EXEC CICS ENDBR FILE('TCHFL639') END-EXEC. EXEC CICS RETURN END-EXEC. FILE BROWSE AND READ IDENTIFICATION DIVISION. PROGRAM-ID. SSS. DATA DIVISION. WORKING-STORAGE SECTION. 01 REC. 02 ENO PIC X(2). 02 F PIC X. 02 ENAME PIC X(6). 02 F PIC X. 02 LOC PIC X(3). 02 F PIC X(67). COPY TCHM639. 77 R PIC S9(8) COMP. PROCEDURE DIVISION. MOVE LOW-VALUES TO FILMAPI, FILMAPO. EXEC CICS SEND MAP('FILMAP') EXEC CICS SEND MAP('FILMAP') MAPSET('TCHM639') END-EXEC. EXEC CICS RECEIVE MAP('FILMAP') MAPSET('TCHM639') END-EXEC. MOVE ENOI TO ENO. MOVE ENAMEI TO ENAME. MOVE ELOCI TO LOC. EXEC CICS STARTBR FILE('TCHFL639') RIDFLD(ENO) END-EXEC. RP. EXEC CICS READNEXT FILE('TCHFL639') INTO(REC) LENGTH(LENGTH OF REC) RIDFLD(ENO) RIDFLD(ENO) RESP(R) END-EXEC. IF(R = DFHRESP(ENDFILE)) MOVE 'DATA COMPLETED' TO RESO

EXEC CICS SEND MAP('FILMAP') MAPSET('TCHM639') END-EXEC PERFORM CLP ELSE MOVE REC TO RESO EXEC CICS SEND MAP('FILMAP') MAPSET('TCHM639') END-EXEC EXEC CICS RECEIVE END-EXEC PERFORM RP END-IF. END-IF. CLP. EXEC CICS ENDBR FILE('TCHFL639') END-EXEC. EXEC CICS RETURN END-EXEC. FILE WRITE ID DIVISION. PROGRAM-ID. TCOPG120. DATA DIVISION. WORKING-STORAGE SECTION. COPY TCHM639. 01 STREC. 02 ENO PIC 99. 02 FILLER PIC X VALUE SPACES. 02 ENAME PIC X(6). 02 FILLER PIC X VALUE SPACES. 02 ELOC PIC X(3). 02 FILLER PIC X(67). 77 R PIC S9(8) COMP. PROCEDURE DIVISION. P1. MOVE LOW-VALUES TO FILMAPO. MOVE LOW-VALUES TO FILMAPO. EXEC CICS SEND MAP('FILMAP') MAPSET('TCHM639') ERASE END-EXEC. EXEC CICS RECEIVE MAP('FILMAP') MAPSET('TCHM639') END-EXEC. MOVE ENOI TO ENO. MOVE ENAMEI TO ENAME. MOVE ELOCI TO ELOC. EXEC CICS WRITE FILE('TCHFL639') FROM(STREC) RIDFLD(ENO) LENGTH(LENGTH OF STREC) RESP(R) END-EXEC. IF R = DFHRESP(NORMAL) MOVE 'OK' TO RESO END-IF. EXEC CICS SEND MAP('FILMAP') MAPSET('TCHM639') END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** DELAY ****************************************************************** * DELAY OPERATION * ****************************************************************** ID DIVISION. PROGRAM-ID. TCHPG002. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION.

01 EMPLOYEE-RECORD-DISPLAY PIC X(78) VALUE LOW-VALUES. 01 FOR-EMPLOYEE-RECORD REDEFINES EMPLOYEE-RECORD-DISPLAY. 05 FOR-EMPLOYEE-NUMBER PIC 9(6). 05 FILLER PIC X. 05 FOR-EMPLOYEE-NAME PIC X(20). 05 FILLER PIC X. 05 FOR-EMPLOYEE-SALARY PIC 9(6). 05 FILLER PIC X(44). 05 FILLER PIC X(44). PROCEDURE DIVISION. MAIN-PARA. MOVE LOW-VALUES TO FOR-EMPLOYEE-RECORD. MOVE 100 TO FOR-EMPLOYEE-NUMBER. MOVE 'AAAAA' TO FOR-EMPLOYEE-NAME. MOVE 345 TO FOR-EMPLOYEE-SALARY. EXEC CICS SEND TEXT FROM(EMPLOYEE-RECORD-DISPLAY) ERASE END-EXEC. *----------------------------------------------------------------* * DELAYING FOR 10 SECONDS *----------------------------------------------------------------* EXEC CICS DELAY INTERVAL(000010) END-EXEC. END-EXEC. MOVE 200 TO FOR-EMPLOYEE-NUMBER. MOVE 'BBBBB' TO FOR-EMPLOYEE-NAME. MOVE 123456 TO FOR-EMPLOYEE-SALARY. EXEC CICS SEND TEXT FROM(EMPLOYEE-RECORD-DISPLAY) ERASE END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** file oprations(delete,read,browse,update,write) TCHM639 DFHMSD TYPE=MAP,MODE=INOUT,LANG=COBOL,STORAGE=AUTO, TIOAPFX=YES,MAPATTS=COLOR FILMAP DFHMDI SIZE=(24,80),CTRL=(FREEKB,FRSET) DFHMDF POS=(06,20),ATTRB=(NORM,PROT),LENGTH=4,INITIAL='ENO:' ENO DFHMDF POS=(06,27),ATTRB=(NORM,UNPROT,IC,NUM), LENGTH=2,INITIAL='--' DFHMDF POS=(06,30),ATTRB=ASKIP,LENGTH=1 DFHMDF POS=(08,20),ATTRB=(NORM,PROT),LENGTH=6,INITIAL='ENAME:' ENAME DFHMDF POS=(08,27),ATTRB=(NORM,UNPROT), LENGTH=6,INITIAL='------' DFHMDF POS=(08,34),ATTRB=ASKIP,LENGTH=1 DFHMDF POS=(10,20),ATTRB=(NORM,PROT),LENGTH=5,INITIAL='ELOC:' ELOC DFHMDF POS=(10,27),ATTRB=(NORM,UNPROT), LENGTH=3,INITIAL='---' DFHMDF POS=(10,31),ATTRB=PROT,LENGTH=1 RES DFHMDF POS=(12,01),ATTRB=(NORM,NUM,UNPROT),LENGTH=80 DFHMDF POS=(14,03),ATTRB=PROT,INITIAL='PF2-INS',LENGTH=7 DFHMDF POS=(16,03),ATTRB=PROT,INITIAL='PF4-SEL',LENGTH=7 DFHMDF POS=(18,03),ATTRB=PROT,INITIAL='PF5-UPD',LENGTH=7 DFHMDF POS=(20,03),ATTRB=PROT,INITIAL='PF6-DEL',LENGTH=7 X

DFHMDF POS=(22,03),ATTRB=PROT,INITIAL='ENT-BRO',LENGTH=7 DFHMSD TYPE=FINAL END ID DIVISION. PROGRAM-ID. TCHPG002. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. COPY DFHAID. COPY DFHBMSCA. COPY TCHM639. 01 EMPLOYEE-RECORD-DISPLAY PIC X(78). 01 FOR-EMPLOYEE-RECORD REDEFINES EMPLOYEE-RECORD-DISPLAY. 05 FOR-EMPLOYEE-NUMBER PIC 9(2). 05 FILLER PIC X. 05 FOR-EMPLOYEE-NAME PIC X(6). 05 FILLER PIC X. 05 FOR-EMPLOYEE-LOCATION PIC X(3). 05 FILLER PIC X(67). 01 EMPLOYEE-RECORD. 05 EMPLOYEE-NUMBER PIC 9(2). 05 FILLER PIC X. 05 EMPLOYEE-NAME PIC X(6). 05 FILLER PIC X. 05 EMPLOYEE-LOCATION PIC X(3). 05 FILLER PIC X(67). 77 COMMAREA-DATA PIC X(10). 77 COMM-LEN PIC S9(4) COMP. 77 CICS-RESPONSE PIC S9(8) COMP. 77 COUNTER PIC 99 VALUE 0. PROCEDURE DIVISION. MAIN-PARA. IF EIBCALEN = 0 PERFORM CLEAR-SYMBOLIC-FIELDS-PARA PERFORM SEND-PARA PERFORM ASSIGN-COMMAREA-DATA PERFORM TASK-TERMINATION-PARA ELSE IF EIBCALEN = 2 PERFORM RECEIVE-PARA PERFORM EVALUATE-PARA PERFORM SEND-PARA END-IF. GO TO STOP-PARA. CLEAR-SYMBOLIC-FIELDS-PARA. MOVE LOW-VALUES TO FILMAPI. ASSIGN-COMMAREA-DATA. MOVE 'AA' TO COMMAREA-DATA. MOVE 2 TO COMM-LEN. EVALUATE-PARA. EVALUATE EIBAID WHEN DFHPF2 PERFORM MOVE-TO-WS-VAR-PARA PERFORM WRITE-PARA WHEN DFHPF4 MOVE ENOI TO EMPLOYEE-NUMBER PERFORM READ-PARA PERFORM MOVE-TO-MAP-VAR-PARA MOVE 'RECORD FOUND' TO RESO

WHEN DFHPF5 MOVE ENOI TO EMPLOYEE-NUMBER PERFORM READ-UPDATE-PARA PERFORM MOVE-TO-MAP-VAR-PARA MOVE 'CHANGE DATA' TO RESO PERFORM SEND-PARA PERFORM RECEIVE-PARA PERFORM MOVE-TO-REWRITE-WS-VAR-PARA PERFORM REWRITE-PARA MOVE 'SUCCESS' TO RESO WHEN DFHPF6 MOVE ENOI TO EMPLOYEE-NUMBER PERFORM DELETE-PARA MOVE 'RECORD DELETED' TO RESO WHEN DFHENTER PERFORM BROWSE-PARA WHEN OTHER GO TO STOP-PARA END-EVALUATE. MOVE-TO-REWRITE-WS-VAR-PARA. MOVE ENAMEI TO EMPLOYEE-NAME. MOVE ELOCI TO EMPLOYEE-LOCATION. MOVE-TO-WS-VAR-PARA. MOVE ENOI TO EMPLOYEE-NUMBER. MOVE ENAMEI TO EMPLOYEE-NAME. MOVE ELOCI TO EMPLOYEE-LOCATION. MOVE-TO-MAP-VAR-PARA. MOVE EMPLOYEE-NUMBER TO ENOO. MOVE EMPLOYEE-NAME TO ENAMEO. MOVE EMPLOYEE-LOCATION TO ELOCO. TASK-TERMINATION-PARA. EXEC CICS RETURN TRANSID('T639') COMMAREA(COMMAREA-DATA) LENGTH(COMM-LEN) END-EXEC. SEND-PARA. EXEC CICS SEND MAP('FILMAP') MAPSET('TCHM639') FROM(FILMAPO) ERASE FREEKB END-EXEC. RECEIVE-PARA. EXEC CICS RECEIVE MAP('FILMAP') MAPSET('TCHM639') INTO(FILMAPI) NOHANDLE END-EXEC. WRITE-PARA. EXEC CICS WRITE DATASET('TCHFL639') FROM(EMPLOYEE-RECORD) RIDFLD(EMPLOYEE-NUMBER) END-EXEC. MOVE 'SUCCESS' TO RESO. READ-PARA. EXEC CICS READ

DATASET('TCHFL639') RIDFLD(EMPLOYEE-NUMBER) INTO(EMPLOYEE-RECORD) END-EXEC. READ-UPDATE-PARA. EXEC CICS READ DATASET('TCHFL639') RIDFLD(EMPLOYEE-NUMBER) INTO(EMPLOYEE-RECORD) UPDATE END-EXEC. REWRITE-PARA. EXEC CICS REWRITE DATASET('TCHFL639') FROM(EMPLOYEE-RECORD) END-EXEC. DELETE-PARA. MOVE ENOI TO EMPLOYEE-NUMBER. EXEC CICS DELETE DATASET('TCHFL639') RIDFLD(EMPLOYEE-NUMBER) END-EXEC. BROWSE-PARA. IF CICS-RESPONSE = DFHRESP(MAPFAIL) INITIALIZE EMPLOYEE-NUMBER ELSE MOVE ENOI TO EMPLOYEE-NUMBER END-IF. EXEC CICS STARTBR DATASET('TCHFL639') RIDFLD(EMPLOYEE-NUMBER) GTEQ END-EXEC. MOVE LOW-VALUES TO EMPLOYEE-RECORD-DISPLAY. PERFORM READNEXT-PARA THRU SEND-TEXT-PARA UNTIL CICS-RESPONSE = DFHRESP(ENDFILE). MOVE LOW-VALUES TO FILMAPI. MOVE 'BROWSE OPERATION ENDED' TO RESO. EXEC CICS ENDBR DATASET('TCHFL639') END-EXEC. READNEXT-PARA. EXEC CICS READNEXT DATASET('TCHFL639') RIDFLD(EMPLOYEE-NUMBER) INTO(EMPLOYEE-RECORD) RESP(CICS-RESPONSE) END-EXEC. SEND-TEXT-PARA. IF COUNTER < 5 AND CICS-RESPONSE NOT = DFHRESP(ENDFILE) MOVE EMPLOYEE-NUMBER TO FOR-EMPLOYEE-NUMBER MOVE EMPLOYEE-NAME TO FOR-EMPLOYEE-NAME MOVE EMPLOYEE-LOCATION TO FOR-EMPLOYEE-LOCATION EXEC CICS SEND TEXT FROM(EMPLOYEE-RECORD-DISPLAY) ERASE ACCUM END-EXEC COMPUTE COUNTER = COUNTER + 1 END-IF.

IF COUNTER = 5 OR CICS-RESPONSE = DFHRESP(ENDFILE) MOVE FOR-EMPLOYEE-NUMBER TO EMPLOYEE-NUMBER EXEC CICS SEND PAGE END-EXEC EXEC CICS RECEIVE INTO(FILMAPI) NOHANDLE END-EXEC MOVE 0 TO COUNTER END-IF. STOP-PARA. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** TDQ WRITE IDENTIFICATION DIVISION. PROGRAM-ID. SSS. DATA DIVISION. WORKING-STORAGE SECTION. 01 REC1. 02 MES PIC X(16). 02 F PIC X(74). PROCEDURE DIVISION. MOVE LOW-VALUES TO REC1. MOVE "WELCOME TO TDQ" TO REC1. EXEC CICS WRITEQ TD QUEUE('TCH6') FROM(REC1) LENGTH(LENGTH OF REC1) END-EXEC. EXEC CICS SEND FROM(MES) ERASE END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** TDQ READ IDENTIFICATION DIVISION. PROGRAM-ID. SSS. DATA DIVISION. WORKING-STORAGE SECTION. 01 REC1. 02 MES PIC X(6). 02 F PIC X(74). 77 K PIC S9(8) COMP. PROCEDURE DIVISION. MOVE LOW-VALUES TO REC1. EXEC CICS READQ TD QUEUE('TCH6') INTO(REC1) LENGTH(LENGTH OF REC1) END-EXEC. EXEC CICS SEND FROM(REC1) ERASE END-EXEC. EXEC CICS DELETEQ TS QUEUE('HEE') END-EXEC.

EXEC CICS RETURN END-EXEC. STOP RUN. **************************** Bottom of Data **************************** TSQ READ ALL IDENTIFICATION DIVISION. PROGRAM-ID. SSS. DATA DIVISION. WORKING-STORAGE SECTION. 01 REC1. 02 MES PIC X(8). 77 K PIC S9(8) COMP. 77 R PIC S9(8) COMP. PROCEDURE DIVISION. MOVE LOW-VALUES TO REC1. MOVE 1 TO R. EXEC CICS READQ TS QUEUE('HEE') INTO(REC1) LENGTH(LENGTH OF REC1) ITEM(1) RESP(K) END-EXEC. GO TO RP1. RP. EXEC CICS READQ TS QUEUE('HEE') INTO(REC1) LENGTH(LENGTH OF REC1) NEXT RESP(K) END-EXEC. RP1. IF(K = DFHRESP(ITEMERR)) GO TO CP ELSE EXEC CICS SEND TEXT FROM(REC1) ACCUM END-EXEC GO TO RP END-IF. CP. EXEC CICS SEND PAGE END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** EMPMAP TCHM639 DFHMSD TYPE=&SYSPARM,MODE=INOUT,LANG=COBOL, STORAGE=AUTO,TIOAPFX=YES EMPLOY DFHMDI SIZE=(24,80),CTRL=(FRSET,FREEKB) DFHMDF POS=(06,25),ATTRB=(ASKIP,NORM),LENGTH=16, X INITIAL='EMPLOYEE DETAILS' DFHMDF POS=(07,25),ATTRB=(ASKIP,NORM),LENGTH=16, INITIAL='________________' DFHMDF POS=(09,18),ATTRB=(ASKIP,NORM),LENGTH=14, INITIAL='ENTER EMPCODE:' ECODE DFHMDF POS=(09,33),ATTRB=(UNPROT,IC),LENGTH=4 X

X X

DFHMDF POS=(09,38),ATTRB=ASKIP,LENGTH=1 DFHMDF POS=(11,18),ATTRB=(ASKIP,NORM),LENGTH=14, INITIAL='ENTER EMPNAME:' ENAME DFHMDF POS=(11,33),ATTRB=(UNPROT),LENGTH=10 DFHMDF POS=(11,44),ATTRB=ASKIP,LENGTH=1 DFHMDF POS=(13,18),ATTRB=(ASKIP,NORM),LENGTH=14, INITIAL='ENTER EMPADDR:' INITIAL='ENTER EMPADDR:' EADDR DFHMDF POS=(13,33),ATTRB=(UNPROT),LENGTH=10 DFHMDF POS=(13,44),ATTRB=ASKIP,LENGTH=1 DFHMDF POS=(15,16),ATTRB=(ASKIP,NORM),LENGTH=16, INITIAL='ENTER EMPSALARY:' ESALARY DFHMDF POS=(15,33),ATTRB=(UNPROT),LENGTH=7, PICIN='9(5)V99',PICOUT='9(5)V99' DFHMDF POS=(15,41),ATTRB=ASKIP,LENGTH=1 DFHMDF POS=(17,15),ATTRB=(ASKIP,NORM),LENGTH=17, INITIAL='ENTER DEPTNUMBER:' DEPTNO DFHMDF POS=(17,33),ATTRB=(UNPROT),LENGTH=4 DFHMDF POS=(17,38),ATTRB=ASKIP,LENGTH=1 DFHMDF POS=(19,08),ATTRB=(ASKIP,NORM),LENGTH=8, INITIAL='MESSAGE:' MSG DFHMDF POS=(19,19),ATTRB=(PROT),LENGTH=30, INITIAL=' ' DFHMDF POS=(21,13),ATTRB=(ASKIP,NORM),LENGTH=44, INITIAL='PF2--->ADD PF3--->EXIT PF4--->READ' INITIAL='PF2--->ADD PF3--->EXIT PF4--->READ' DFHMDF POS=(22,13),ATTRB=(ASKIP,NORM),LENGTH=44, INITIAL='PF5--->UPDATE PF6--->DELETE PF7--->REF' TCHM639 DFHMSD TYPE=FINAL END EMPPGM 000100 000200 000300 000400 000500 000600 000700 000800 000900 001000 001100 001200 001300 001400 001500 001600 001700 001800 001900 002000 002100 002200 002300 002400 002500 002600 002700 IDENTIFICATION DIVISION. PROGRAM-ID. INSER. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE EMPLOY END-EXEC. COPY TCHM639. COPY DFHAID. 77 WS-ESAL PIC 9(5). 77 WS-COMM PIC X(4). 77 WS-LEN PIC S9(4) COMP. PROCEDURE DIVISION. MAIN-PARA. PERFORM 0000-INITIALIZE-PARA. PERFORM 1000-RECEIVE-PARA. PERFORM 3000-KEY-CHECK-PARA. 0000-INITIALIZE-PARA. MOVE LOW-VALUES TO EMPLOYO. EXEC CICS SEND MAP('EMPLOY') MAPSET('TCHM639') ERASE

X X X

X X X X

00010000 00020000 00030000 00040000 00050000 00060000 00070000 00080000 00090000 00100003 00110000 00120000 00130000 00140000 00150000 00160000 00170000 00180000 00190000 00200000 00210000 00220000 00230000 00240000 00250000 00260000 00270000

002800 002900 003000 003100 003200 003300 003400 003500 003600 003700 003800 003900 004000 004100 004200 004300 004400 004500 004600 004700 004800 004900 005000 005100 005200 005300 005400 005500 005600 005700 005600 005700 006000 006100 006200 006300 006400 006500 006600 006700 006800 006900 007000 007100 007200 007300 007400 007500 007600 007700 007800 007900 008000 008100 008200 008300 008400 008500 008600 008700

END-EXEC. 00280000 1001-SEND-PARA. 00290000 EXEC CICS SEND 00300000 MAP('EMPLOY') 00310000 MAPSET('TCHM639') 00320000 FROM(EMPLOYO) 00330000 END-EXEC. 00340000 2000-RETURN-PARA. 00350000 MOVE 4 TO WS-LEN. 00360000 EXEC CICS RETURN 00370000 TRANSID('T639') 00380000 COMMAREA(WS-COMM) 00390000 LENGTH(WS-LEN) 00400000 END-EXEC. 00410000 1000-RECEIVE-PARA. 00420000 EXEC CICS RECEIVE 00430000 MAP('EMPLOY') 00440000 MAPSET('TCHM639') 00450000 INTO(EMPLOYI) 00460000 END-EXEC. 00470000 3000-KEY-CHECK-PARA. 00480000 EVALUATE EIBAID 00490000 WHEN DFHPF2 00500000 PERFORM 3100-INSERT-PARA 00510000 WHEN DFHPF3 00520000 PERFORM 3200-EXIT-PARA 00530000 WHEN DFHPF4 00540000 PERFORM 3300-SELECT-PARA 00550000 WHEN DFHPF5 00560000 PERFORM 3400-UPDATE-PARA 00570000 WHEN DFHPF6 00580012 PERFORM 3500-DELETE-PARA 00590012 WHEN DFHPF7 00600000 PERFORM 3600-REFRESH-PARA 00610000 WHEN OTHER 00620000 PERFORM 3700-INVALID-KEY-PARA 00630000 END-EVALUATE. 00640000 3100-INSERT-PARA. 00650000 MOVE ECODEI TO EMPCODE. 00660002 MOVE ENAMEI TO EMPNAME. 00670000 MOVE EADDRI TO EMPADDR-TEXT. 00680000 MOVE EADDRL TO EMPADDR-LEN. 00690000 MOVE ESALARYI TO EMPSALARY. 00700000 MOVE DEPTNOI TO DEPTNO. 00710000 EXEC SQL 00720000 INSERT INTO EMPLOY 00730002 VALUES (:EMPCODE, 00740002 :EMPNAME, 00750002 :EMPADDR, 00760002 :EMPSALARY, 00770002 :DEPTNO) 00780002 END-EXEC. 00790000 EVALUATE SQLCODE 00800000 WHEN +000 00810000 MOVE 'INSERT OVER...& ENTER NEW DATA FOR INSERT' TO MSGO 00820000 PERFORM 1001-SEND-PARA 00830000 PERFORM 2000-RETURN-PARA 00840000 WHEN -803 00850000 MOVE 'DUPLICATE KEY WAS FOUND & CHANGE E..' TO MSGO 00860000 PERFORM 1001-SEND-PARA 00870000

008800 PERFORM 2000-RETURN-PARA 008900 WHEN OTHER 009000 MOVE 'SOME ERROR IN INSERT.....' TO MSGO 009100 PERFORM 1001-SEND-PARA 009200 PERFORM 2000-RETURN-PARA 009300 END-EVALUATE. 009400 3200-EXIT-PARA. 009500 EXEC CICS SEND CONTROL 009600 ERASE 009700 END-EXEC. 009800 EXEC CICS RETURN 009900 END-EXEC. 010000 3300-SELECT-PARA. 010100 MOVE ECODEI TO EMPCODE. 010200 EXEC SQL 010300 SELECT EMPCODE, 010400 EMPNAME, 010500 EMPADDR, 010600 EMPSALARY, 010700 DEPTNO 010800 INTO :EMPCODE, 010900 :EMPNAME, 011000 :EMPADDR, 011100 :EMPSALARY, 011200 :DEPTNO 011300 FROM EMPLOY 011400 WHERE EMPCODE=:EMPCODE 011500 END-EXEC. 011600 EVALUATE SQLCODE 011700 WHEN +000 011800 MOVE EMPCODE TO ECODEO 011900 MOVE EMPNAME TO ENAMEO 012000 MOVE EMPADDR-TEXT TO EADDRO 012100 MOVE EMPSALARY TO ESALARYO 012200 MOVE DEPTNO TO DEPTNOO 012300 MOVE 'RECORD FOUND IN THE DATABASE...' TO MSGO 012400 PERFORM 1001-SEND-PARA 012500 PERFORM 2000-RETURN-PARA 012600 WHEN +100 012700 MOVE 'RECORD NOT FOUND IN THE DATABASE...' TO MSGO 012800 PERFORM 1001-SEND-PARA 012900 PERFORM 2000-RETURN-PARA 013000 WHEN OTHER 013100 MOVE LOW-VALUES TO EMPLOYI 013200 MOVE 'SOME ERROR IN SELECT....' TO MSGO 013300 PERFORM 1001-SEND-PARA 013400 PERFORM 2000-RETURN-PARA 013500 END-EVALUATE. 013600 3400-UPDATE-PARA. 013700 MOVE ECODEI TO EMPCODE. 013800 MOVE ESALARYI TO EMPSALARY. 013900 EXEC SQL 014000 UPDATE EMPLOY SET EMPSALARY = :EMPSALARY WHERE 014100 EMPCODE = :EMPCODE 014200 END-EXEC. 014300 EVALUATE SQLCODE 014500 WHEN +100 014600 MOVE 'RECORD NOT FOUND IN DATABASE....' TO MSGO 014700 PERFORM 1001-SEND-PARA 014800 PERFORM 2000-RETURN-PARA

00880000 00890000 00900000 00910000 00920000 00930000 00940000 00950000 00960000 00970000 00980000 00990000 01000000 01010008 01020000 01030009 01040009 01050009 01060009 01070000 01080002 01090000 01100000 01110000 01120000 01130000 01140010 01150000 01160000 01170000 01180002 01190000 01200000 01210000 01220000 01230000 01240000 01250000 01260000 01270000 01280000 01290000 01300000 01310000 01320000 01330000 01340000 01350000 01360000 01370002 01380000 01390000 01400000 01410010 01420000 01430000 01450000 01460000 01470000 01480000

014900 WHEN +000 015000 MOVE LOW-VALUES TO EMPLOYI 015100 MOVE 'SUCCESS IN UPDATE' TO MSGO 015200 PERFORM 1001-SEND-PARA 015300 PERFORM 2000-RETURN-PARA 014900 WHEN OTHER 015000 MOVE LOW-VALUES TO EMPLOYI 015100 MOVE SQLCODE TO MSGO 015200 PERFORM 1001-SEND-PARA 015300 PERFORM 2000-RETURN-PARA 015400 END-EVALUATE. 013600 3500-DELETE-PARA. 013700 MOVE ECODEI TO EMPCODE. 013900 EXEC SQL 014000 DELETE FROM EMPLOY WHERE 014100 EMPCODE = :EMPCODE 014200 END-EXEC. 014300 EVALUATE SQLCODE 014500 WHEN +100 014600 MOVE 'RECORD NOT FOUND IN DATABASE....' TO MSGO 014700 PERFORM 1001-SEND-PARA 014800 PERFORM 2000-RETURN-PARA 014900 WHEN +000 015000 MOVE LOW-VALUES TO EMPLOYI 015100 MOVE 'SUCCESS IN DELETE' TO MSGO 015200 PERFORM 1001-SEND-PARA 015300 PERFORM 2000-RETURN-PARA 014900 WHEN OTHER 015000 MOVE LOW-VALUES TO EMPLOYI 015100 MOVE SQLCODE TO MSGO 015200 PERFORM 1001-SEND-PARA 015300 PERFORM 2000-RETURN-PARA 015400 END-EVALUATE. 015500 3600-REFRESH-PARA. 015600 EXEC CICS SEND 015700 MAP('EMPLOY') 015800 MAPSET('TCHM639') 015900 ERASEAUP 016000 END-EXEC. 016100 MOVE 'ENTER DATA FOR NEXT PROCESS....' TO MSGO. 016200 PERFORM 1001-SEND-PARA. 016300 PERFORM 2000-RETURN-PARA. 016400 3700-INVALID-KEY-PARA. 016500 MOVE 'ENTERED KEY IS INVALID & PRESS VALID KEY..' TO MSGO. 016600 PERFORM 1001-SEND-PARA. 016700 PERFORM 2000-RETURN-PARA. **************************** Bottom of Data **************************** TIME MAP TCHM061 DFHMSD TYPE=MAP,TIOAPFX=YES,LANG=COBOL,MODE=INOUT,STORAGE=AUTO MAP DFHMDI SIZE=(24,80),LINE=01,COLUMN=01,JUSTIFY=LEFT,COLOR=RED DFHMDF POS=(12,25),LENGTH=8,ATTRB=PROT, * INITIAL='TIME :' TIME DFHMDF POS=(12,35),LENGTH=15,ATTRB=(UNPROT,FSET),COLOR=GREEN, * INITIAL=' ' DFHMDF POS=(14,25),LENGTH=8,ATTRB=PROT,INITIAL='DATE :' DATE DFHMDF POS=(14,35),LENGTH=15,ATTRB=(UNPROT,FSET),COLOR=YELLOW, * INITIAL=' '

01490012 01500000 01510012 01520000 01530000 01531012 01532012 01533014 01534012 01535012 01540000 01541012 01542012 01544012 01545012 01546012 01547012 01548012 01549012 01549112 01549212 01549312 01549412 01549512 01549612 01549712 01549812 01549912 01550012 01550114 01550212 01550312 01550412 01551000 01560000 01570000 01580000 01590000 01600000 01610000 01620000 01630000 01640000 01650000 01660000 01670000

DFHMSD TYPE=FINAL END ID DIVISION. PROGRAM-ID. TIMEPROG. DATA DIVISION. WORKING-STORAGE SECTION. 77 TSTAMP PIC S9(15) COMP-3. 77 OUTDATE PIC X(10). 77 OUTTIME PIC X(8). COPY TCHM061. PROCEDURE DIVISION. EXEC CICS ASKTIME ABSTIME(TSTAMP) END-EXEC. EXEC CICS FORMATTIME ABSTIME(TSTAMP) TIMESEP(':') TIME(OUTTIME) END-EXEC. EXEC CICS FORMATTIME ABSTIME(TSTAMP) DATESEP('/') DDMMYY(OUTDATE) END-EXEC. MOVE LOW-VALUES TO MAPO. MOVE OUTDATE TO DATEO. MOVE OUTTIME TO TIMEO. EXEC CICS SEND MAP('MAP') MAPSET('TCHM061') FREEKB ERASE END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** EIBAID IDENTIFICATION DIVISION. PROGRAM-ID. SSS. DATA DIVISION. WORKING-STORAGE SECTION. COPY DFHAID. 01 REC1. 02 MES PIC X(20). PROCEDURE DIVISION. EXEC CICS RECEIVE END-EXEC. EVALUATE EIBAID WHEN DFHPF1 MOVE "FUNCTION1" TO MES WHEN DFHPF2 MOVE "FUNCTION2" TO MES WHEN OTHER MOVE "NOT IN LIST" TO MES END-EVALUATE. EXEC CICS SEND FROM(REC1) LENGTH(LENGTH OF REC1) END-EXEC. EXEC CICS RETURN END-EXEC. **************************** Bottom of Data **************************** HANDLE AID

IDENTIFICATION DIVISION. PROGRAM-ID. SSS. DATA DIVISION. WORKING-STORAGE SECTION. COPY DFHAID. 01 REC1. 02 MES PIC X(15). PROCEDURE DIVISION. EXEC CICS HANDLE AID PF1(P1) PF2(P2) END-EXEC. EXEC CICS RECEIVE END-EXEC. EXEC CICS SEND FROM(MES) END-EXEC. RP. EXEC CICS RETURN END-EXEC. P1. MOVE "FUNCTION1" TO MES. GO TO RP. P2. MOVE "FUNCTION2" TO MES. GO TO RP. **************************** Bottom of Data ******************************** COBOL PGM CEMT SET PROG(PROGID) NE G114 MAP CEMT SET PROG(MAPSETID) NE CECI SEND MAP(MAPNAME) MAPSET(MAPSETID) FILE CECI SET FILE(FILEID) DSN(DATASETNAME) CEMT SET FILE(FILEID) OPEN G114 CEMT SET FILE(FILEID) CLOSE DB2 QUERIES --CREATE TABLE EMPLOY(EMPCODE NUMERIC(4) PRIMARY KEY NOT NULL , --EMPNAME CHAR(10), --EMPADDR VARCHAR(10),EMPSALARY NUMERIC(7),DEPTNO NUMERIC(4)) --IN DBCHN01.TSCEP09; --CREATE UNIQUE INDEX I1 ON EMPLOY(EMPCODE); --DROP TABLE EMPLOY; --INSERT INTO EMPLOY VALUES(1234,'SARAN','CHENNAI',26000,034); --SELECT * FROM EMPLOY;

/* REXX */

EXPLICIT EXECUTION TSO EXEC 'TCHN639.REXX.PDS1(TSORENAM)' EXEC EX MEMBER NAME //TCHN639A JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=IRXJCL,PARM='PGM1' //SYSEXEC DD DSN=TCHN639.REXX1.PDS,DISP=SHR //SYSTSPRT DD SYSOUT=* //SYSTSIN DD DUMMY // //TCHN639A JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=IKJEFT01,PARM='PGM1' //SYSEXEC DD DSN=TCHN639.REXX1.PDS,DISP=SHR //SYSTSPRT DD SYSOUT=* //SYSTSIN DD DUMMY // //TCHN639A JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=IKJEFT01 //SYSPROC DD DSN=TCHN639.REXX1.PDS,DISP=SHR //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * PGM1 /* //TCHN639A JOB NOTIFY=&SYSUID //STEP1 EXEC PGM=IKJEFT01 //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * EX 'TCHN639.REXX1.PDS(PGM1)' /* IMPLICIT EXECUTION ALTLIB ACTIVATE APPLICATION(CLIST)+ DATASET('TCHN639.REXX.DAY1') UN COND SET &ALTLIBRC=&LASTCC IF &ALTLIBRC NE 0 THEN + WRITE CLIST FAILED ELSE DO ISPEXEC LIBDEF ISPMLIB DATASET ID ('TCHN639.MESSAGES.PDS') ISPFEXEC LIBDEF ISPPLIB DATASET ID ('TCHN639.PANELS.PDS') ISPFEXEC LIBDEF ISPDSLIB DATASET ID ('TCHN639.SKELS.PDS') END CREATE IT AND EXECUTE IT TSO MEMBERNAME TSO ISRDDN ALLOCATE DD(SYSPROC) REUSE SHR DA('TCHN639.REXX1.PDS','SYS1.HELP','TCHN639.REXX.DAY1') CREATE IT AND EXECUTE IT

TSO MEMBERNAME **************************** Bottom of Data **************************** FIRST SAMPLE PROGRAM /*REXX*/ SAY "HELLO" EXIT **************************** Bottom of Data **************************** USE OF COMMA AND SEMICOLON /*REXX*/ /* Simple Statement*/ SAY 'HI' /*Statement using comma to span two lines*/ SAY 'USING COMMA', 'TO SPAN TWO LINES' /*Statements using semicolon in a single line*/ Say 'Semicolon'; Say 'used to write multiple statements in a single LINE' **************************** Bottom of Data **************************** USE OF PULL AND PARSING *REXX*/ A="SAY 'ENTER YOUR AGE'" SAY 'ENTER YOUR AGE' PULL AGE SAY AGE SAY 'ENTER YOUR AGE' PARSE PULL AGE1 SAY AGE1 PARSE VALUE 'KNOWLEDGE IS POWER' WITH WORD1 WORD2 WORD3 SAY 'ENTER WORD4' PARSE UPPER PULL WORD4 SAY 'AGE='AGE 'AGE1='AGE1 'WORD1='WORD1, 'WORD2='WORD2 'WORD3='WORD3 'WORD4='WORD4 SAY 'DATE' DATE() SAY DATATYPE(AGE) SAY DATATYPE(A) **************************** Bottom of Data **************************** USE OF SAY /*REXX*/ A="SAY 'ENTER YOUR AGE'" SAY 'ENTER YOUR AGE' PULL AGE SAY AGE SAY 'ENTER YOUR AGE' PARSE PULL AGE1 SAY AGE1 PARSE VALUE 'KNOWLEDGE IS POWER' WITH WORD1 WORD2 WORD3 SAY 'ENTER WORD4' PARSE UPPER PULL WORD4 SAY 'AGE='AGE 'AGE1='AGE1 'WORD1='WORD1, 'WORD2='WORD2 'WORD3='WORD3 'WORD4='WORD4

SAY 'DATE' DATE() SAY DATATYPE(AGE) SAY DATATYPE(A) **************************** Bottom of Data **************************** PASSING ARGUMENTS /* REXX */ N1 = 1 N2 = 2 CALL SUBPRG1 N1 N2 SUM = RESULT SAY SUM /* REXX */ PARSE ARG NUM1 NUM2 SUM = NUM1 + NUM2 /* TO RETURN FROM THE SUBROUTINE */ RETURN SUM **************************** Bottom of Data **************************** SIMPLE ADDITION /* REXX */ SAY 'Please ENTER A NUMBER.' /* GETTING THE FIRST NUMBER FROM USER */ PULL NUMBER1 /* GETTING THE SECOND NUMBER FROM USER */ SAY 'NOW ENTER A NUMBER TO ADD TO THE FIRST NUMBER.' PULL NUMBER2 /* ADDITION OF TWO NUMBERS */ SUM = NUMBER1 + NUMBER2 SAY 'THE SUM OF THE TWO NUMBERS IS' SUM . **************************** Bottom of Data **************************** GREATEST OF THREE NUMBERS /*REXX*/ SAY 'ENTER THE FIRST NUMBER' PULL NUMBER1 SAY 'ENTER THE SECOND NUMBER' PULL NUMBER2 SAY 'ENTER THE THIRD NUMBER' PULL NUMBER3 GREAT = VALUES(NUMBER1,NUMBER2,NUMBER3) SAY 'GREATEST NUMBER IS:' GREAT EXIT 0 VALUES: IF NUMBER1 > NUMBER2 THEN IF NUMBER1 > NUMBER3 THEN XE=NUMBER1 ELSE XE=NUMBER3 ELSE IF NUMBER2>NUMBER3 THEN XE=NUMBER2 ELSE XE=NUMBER3

RETURN XE **************************** Bottom of Data **************************** ARITHMETIC OPERATOR /*REXX*/ A=5 B=2 SAY 'THE VALUE OF A IS' A SAY 'THE VALUE OF B IS' B ADDITION = A + B SAY 'ADDITION :'ADDITION SUBTRACTION = A - B SAY 'SUBTRACTION :' SUBTRACTION MULTIPLICATION = A * B SAY 'MULTIPLICATION :' MULTIPLICATION DIVISION1 = A / B SAY 'DIVISION :' DIVISION1 DIVISION2 = A % B SAY 'DIVISION RET WHOLE NUM WITHOUT A REMAINDER:' DIVISION2 DIVISION3 = A // B SAY 'DIVISION RET WHOLE NUM ONLY:' DIVISION3 POWER = A ** B SAY 'A POWER B:' POWER POW = 7 ** 2.5 SAY 'EXPONENT WITH DECIMAL RESULT IN ERROR' POW X=5, -5;SAY 'NEGATE OF 5:' X Y=5, +5;SAY 'ADD OF 5:' Y **************************** Bottom of Data **************************** ROUND AND REMOVING DECIMAL PLACES /*REXX*/ PULL COST PULL PERCENT_TAX TOTAL = COST + (COST * PERCENT_TAX) /* ADD TAX TO COST. */ PRICE = ((TOTAL * 100 + .5) % 1) / 100 /* ROUND AND REMOVE EXTRA DECIMAL PLACES.*/ A = 25 % 4 SAY 'A BY % IS ' A A = 25 // 4 SAY 'A BY // IS ' A A = 25 / 4 SAY 'A BY / IS ' A SAY 'YOUR TOTAL COST IS $' PRICE '.' **************************** Bottom of Data **************************** COMPARISON AND LOGICAL OPERATORS /* REXX */ IF(4>2)&(4>3)THEN SAY 'AND TRUE BOTH SATISFIES' IF(4>2)|(3>4)THEN SAY 'OR TRUE ONE COND FAILS' IF(4>2)&&(3>4)THEN SAY 'EXOR TRUE ONE COND FAILS' IF \(2>4) THEN SAY 'NOT TRUE COND FAILS' IF \(4==4) THEN SAY 'NOT STRICTTRUE COND FAILS' IF (4==4) THEN SAY 'STRICT TRUE COND FAILS' IF(4>2)|(3>4)& (4=4) THEN SAY 'OR TRUE ONE COND FAILS'

**************************** Bottom of Data **************************** CONCATENATION WITH BLANKS,||,JOIN /*REXX*/ SAY RED BLUE SAY (8/2)||(3*3) PULL PER_CENT SAY PER_CENT'%' SAY 'ENTER YOUR FULL NAME' PARSE UPPER PULL FIRSTNAME LASTNAME SAY FIRSTNAME SAY LASTNAME SAY FIRSTNAME || LASTNAME **************************** Bottom of Data **************************** PRIORITY IN EXPRESSION /*REXX*/ A=8 B=2 C=82 IF(A > 7 ** B)&( B < 3)|( A||B = C ) THEN IF(A > 7 ** B)&( B < 3)|( A||B = C ) THEN SAY 'HI' **************************** Bottom of Data **************************** IF THEN ELSE /*REXX*/ SAY 'ENTER THE THREE ANGLES' PULL A B C TOTAL = A + B + C IF TOTAL \= 180 THEN SAY 'NOT'||, 'TRIANGLE' ELSE IF A = B & B = C THEN SAY 'EQUALATREL' ELSE IF A = B | B = C | A = C THEN SAY 'ISOLATED' ELSE IF A \= B \=C THEN SAY 'SCALE' EXIT **************************** Bottom of Data **************************** NESTED IF WITH NOP DO /*REXX*/ PULL A PULL B IF A > B THEN SAY "HAIII" ELSE DO SAY "WHAT IS YOUR NAME?" PULL NAME IF NAME = SAR THEN SAY " HI YOUR NAME IS NICE:" NAME ELSE NOP END **************************** Bottom of Data **************************** CHECK FUNCTION OF ELSE IN NESTED IF

/*REXX*/ PULL A PULL B IF A > B THEN IF A=3 THEN SAY "HAIII" ELSE DO SAY "WHAT IS YOUR NAME?" PULL NAME IF NAME = SAR THEN SAY " HI YOUR NAME IS NICE:" NAME ELSE NOP END **************************** Bottom of Data **************************** SELECT WHEN OTHERWISE END /*REXX*/ SAY 'ENTER THE DAY(NO) IN A WEEK:' PULL DAY SELECT WHEN DAY = 1 THEN SAY 'SUNDAY' WHEN DAY = 2 THEN SAY 'MONDAY' WHEN DAY = 3 THEN SAY 'TUESDAY' WHEN DAY = 4 THEN SAY 'WEDNESDAY' WHEN DAY = 5 THEN SAY 'THURSDAY' WHEN DAY = 6 THEN SAY 'FRIDAY' WHEN DAY = 7 THEN SAY 'SATURDAY' OTHERWISE SAY 'THE INPUT IS INCORRECT..THERE ARE 7 DAYS IN A WEEK' END **************************** Bottom of Data **************************** DO N TIMES /*rexx*/ DO 5 SAY "HELLO" END **************************** Bottom of Data **************************** DO N TIMES DEPENDS ON A /*rexx*/ SAY 'ENTER A' PULL A DO A SAY "HELLO" END **************************** Bottom of Data **************************** DO N TIMES

DO A = 1 TO 10 SAY "HELLO" END **************************** Bottom of Data **************************** INCREMENT BY N TIMES AND DROP OUT NUMBER /*rexx*/ DO A = 1 TO 10 BY 2 SAY "LOOP" A SAY "HELLO" END SAY "DROP NUMBER" A **************************** Bottom of Data **************************** INFINITE LOOP /*rexx*/ DO A = 1 TO 10 SAY "LOOP" A SAY "HELLO" A=A-1 END **************************** Bottom of Data **************************** DO FOREVER /*REXX*/ DO FOREVER SAY 'ENTER THE NAME OF THE NEXT DATA SET OR A BLANK TO END.' PULL DATASET_NAME IF DATASET_NAME = '' THEN EXIT /*LEAVE*/ ELSE DO "PRINTDS DA("DATASET_NAME")" SAY DATASET_NAME 'PRINTED.' END END SAY 'LEFT' **************************** Bottom of Data **************************** DO LEAVE /*REXX*/ DO FOREVER SAY 'ENTER THE NAME OF THE NEXT DATA SET.' SAY 'ENTER THE NO MORE DATASET ENTER QUIT.' PULL DATASET_NAME IF DATASET_NAME = 'QUIT' THEN LEAVE ELSE DO "PRINTDS DA("DATASET_NAME")" SAY DATASET_NAME 'PRINTED' END END SAY 'GOODBYE!!!!' SAY 'LEFT'

EXIT **************************** Bottom of Data **************************** ITERATE /*REXX*/ DO C=1 TO 10 IF C=5 THEN ITERATE ELSE SAY C END **************************** Bottom of Data **************************** DOWHILE /*REXX*/ DO FOREVER SAY 'ENTER THE NAME OF THE NEXT DATA SET.' SAY 'ENTER THE NO MORE DATASET ENTER QUIT.' PULL DATASET_NAME DO WHILE DATASET_NAME \= 'QUIT' "PRINTDS DA("DATASET_NAME")" SAY DATASET_NAME 'PRINTED' SAY 'ENTER NAME OF NEXT DATASET' PULL DATASET_NAME END SAY 'GOODBYE!!!!' SAY 'LEFT' EXIT **************************** Bottom of Data **************************** DOUNTIL /*REXX*/ PWD = 'ABC' TIME = 1 DO UNTIL (ANS = PWD)| (TIME=5) SAY 'WHAT IS PWD?' PULL ANS TIME = TIME + 1 END **************************** Bottom of Data **************************** DOWHILE N TIMES /*REXX*/ Q=20 DO N = 1 TO 10 WHILE Q < 50 Q=Q+N SAY 'QUNATITIY='Q'(LOOP'N')' END **************************** Bottom of Data **************************** DOUNTIL N TIMES /*REXX*/ Q=20 DO N = 1 TO 10 UNTIL Q > 50

Q=Q+N SAY 'QUNATITIY='Q'(LOOP'N')' END **************************** Bottom of Data **************************** NESTED DO LOOP /*REXX*/ DO OUTER = 1 TO 2 DO INNER = 1 TO 2 SAY 'HIP' END SAY 'HURRAH' END **************************** Bottom of Data **************************** NESTED DO LOOP AND LEAVE /*REXX*/ DO OUTER = 1 TO 2 DO INNER = 1 TO 2 IF INNER > 1 THEN LEAVE INNER ELSE SAY 'HIP' END SAY 'HURRAH' END **************************** Bottom of Data **************************** STEM VARIABLES /*REXX*/ SAY 'ENTER THE NUMBER OF STUDENT IN THE CLASS' PULL NUM DO I = 1 TO NUM SAY 'ENTER THE NAME OF THE STUDENT' PULL NAME STUDENT.I = NAME DO J=1 TO 3 SAY 'ENTER THE MARKS FOR SUBJECT' J PULL MARKS STUDENT.I.J = MARKS END END /* DISPLAYING THE NAME AND MARKS OF THE STUDENTS */ DO I = 1 TO NUM SAY 'STUDENT NAME :' STUDENT.I DO J=1 TO 3 SAY 'MARKS FOR SUBJECT' J 'IS :' STUDENT.I.J END END **************************** Bottom of Data **************************** OUTTRAP /*REXX*/ CALL OUTTRAP('LINE.') "LISTC"

DO I = 1 TO LINE.0 SAY LINE.I END **************************** Bottom of Data **************************** MAIN PROGRAM /* REXX */ N1 = 1 N2 = 2 OPER = '+' CALL SUBPRG OPER N1 N2 SUM = RESULT SAY SUM SUBPROGRAM /* REXX */ PARSE ARG OPER NUM1 NUM2 SAY OPER NUM1 NUM2 SELECT WHEN OPER = '+' THEN SUM WHEN OPER = '-' THEN SUM WHEN OPER = '*' THEN SUM WHEN OPER = '/' THEN SUM END RETURN SUM

= = = =

NUM1 NUM1 NUM1 NUM1

+ * /

NUM2 NUM2 NUM2 NUM2

**************************** Bottom of Data **************************** INBUILT FUNCTIONS /*REXX*/ /*MAX REV SUBSTRING FUNCTIONS*/ SAY 'ENTER X' PULL X Y=X*X S = MAX(2,1,X,11) Z=3+X SAY 'RESULTS ARE:' X Y S Z A = 'CTSAMAL'; B = SUBSTR(A,3,4); SAY 'GIVEN STRING IS:' A ;SAY 'SUBSTRING (3,4) IS:' B; C = REVERSE(A) **************************** Bottom of Data **************************** /*REXX*/ SAY 'ENTER N & M VALUES :' PULL N M DO A = 1 TO N BY 1 DISP='SAY ' IF A = M THEN ITERATE DO B = 1 TO A BY 1 DISP=DISP||A END INTERPRET DISP END EXIT

**************************** Bottom of Data **************************** MAIN PROGRAM /* REXX */ N1 = 1 N2 = 2 OPER = '+' CALL SUBPRG OPER N1 N2 SUM = RESULT SAY SUM SUBPROGRAM /* REXX */ PARSE ARG OPER NUM1 NUM2 SAY OPER NUM1 NUM2 SELECT WHEN OPER = '+' THEN SUM WHEN OPER = '-' THEN SUM WHEN OPER = '*' THEN SUM WHEN OPER = '/' THEN SUM END RETURN SUM

= = = =

NUM1 NUM1 NUM1 NUM1

+ * /

NUM2 NUM2 NUM2 NUM2

**************************** Bottom of Data **************************** STACK /*REXX*/ A=10 B=20 PUSH A PUSH B N = QUEUED() DO N PULL ELEMENT SAY ELEMENT END EXIT 0 **************************** Bottom of Data **************************** QUEUE /*REXX*/ A=10 B=20 QUEUE A QUEUE B N = QUEUED() DO N PULL ELEMENT SAY ELEMENT END EXIT 0 **************************** Bottom of Data **************************** QBUF AND MAKBUF /*REXX*/

A=10 B=20 C=30 PUSH A; PUSH B; 'MAKEBUF' PUSH C; 'MAKEBUF' PUSH A; 'QBUF' SAY RC EXIT 0 **************************** Bottom of Data **************************** DROPBUF /*REXX*/ A=10 B=20 C=30 D=40 PUSH A PUSH B 'MAKEBUF' PUSH C PUSH D 'QELEM' SAY RC 'QBUF' SAY RC 'QELEM' SAY RC 'DROPBUF 1' SAY RC 'QELEM' SAY RC EXIT 0 **************************** Bottom of Data **************************** PRIVATE STACK /*REXX*/ ADDRESS MVS "NEWSTACK" A=10 B=20 C=30 D=40 PUSH A PUSH B PUSH C PUSH D N = QUEUED() DO N PULL N SAY N END ADDRESS MVS "QSTACK" SAY RC ADDRESS MVS "DELSTACK" EXIT 0 **************************** Bottom of Data ****************************

PUSH ELEMENTS INTO STACK /* REXX */ CALL OUTTRAP('TRAP.') "FREE DDN(OUTDD)" CALL OUTTRAP('OFF') "ALLOC DA(AAAA.PS) DDN(OUTDD) SHR" "NEWSTACK" PUSH 10 20 PUSH 30 40 "EXECIO " || QUEUED() || " DISKW OUTDD(FINIS)" "DELSTACK" **************************** Bottom of Data **************************** CREATION AND DELETION OF PRIVATE STACK /* REXX */ STATUS = SYSDSN(REXX.CHECK) /*IF STATUS = "OK" THEN DO CALL OUTTRAP('MSG1.') "DELETE AAAA.PS" CALL OUTTRAP('OFF') END ELSE */ DO CALL OUTTRAP('MSG1.') "ALLOC DA(AAAA.PS) DDN(INDD) OLD CAT TRACK SPACE(1 1) RECFM(F B), LRECL(80)" CALL OUTTRAP('OFF') END "NEWSTACK" QUEUE "10" QUEUE "20" QUEUE "30" "EXECIO * DISKW INDD (FINIS)" "DELSTACK" **************************** Bottom of Data **************************** TSO RENAME DELETE LISTDS /* REXX */ /* PERFORMING SOME BASIC TSO COMMANDS ON PS FILE */ SRCFILE = 'TCHN639.BBBB.PS.BKUP' DSTFILE = 'TCHN639.AAAB.PS' ADDRESS TSO "RENAME '"SRCFILE"' '"DSTFILE"' " ADDRESS TSO "DELETE AAAA.PS" ADDRESS TSO X=OUTTRAP(TRAP.) "LISTDS 'TCHN639.REXX.PDS1' MEMBERS" DO I= 1 TO TRAP.0 SAY TRAP.I END EXIT 0 **************************** Bottom of Data **************************** LISTCAT DATE TIME /* REXX */

ADDRESS TSO "TIME" "DATE" "LISTCAT LEVEL('TCHN639.REXX') ALL" EXIT **************************** Bottom of Data **************************** CHECK AND DELETE /* REXX */ SAY STATUS STATUS = SYSDSN(REXX.PDS1) SAY STATUS IF STATUS = "OK" THEN DO SAY "FILE EXIST.....DELETING" CALL OUTTRAP('MSG1.') "DELETE REXX.PDS1" CALL OUTTRAP('OFF') END ELSE DO SAY "FILE DOES NOT EXIST.........ALLOCATING" CALL OUTTRAP('MSG1.') "ALLOC DA(REXX.PDS1) NEW CAT TRACK SPACE(1 1) RECFM(F B) LRECL(80)" CALL OUTTRAP('OFF') END END SAY MSG1.0 SAY MSG1.1 **************************** Bottom of Data **************************** SEARCH /* REXX */ CALL OUTTRAP('TRAP.') "FREE DDN(NEWDD)" "FREE DDN(SYSIN)" "FREE DDN(OUTDD)" CALL OUTTRAP('OFF') ADDRESS TSO "ALLOC FI(SYSIN) NEW SPACE(10) TRACKS RECFM(F B) LRECL(80) BLKSIZE(0)" "ALLOC FI(NEWDD) SHR DA(REXX.DAY2 REXX.DAY1 REXX.DAY3)" "ALLOC FI(OUTDD) NEW SPACE(5) TRACKS RECFM(V B) LRECL(133) BLKSIZE(0)" QUEUE "SRCHFOR 'OAHU'" /* QUEUE "SRCHFOR 'ALLOC'" */ "EXECIO " || QUEUED() || " DISKW SYSIN (FINIS)" ADDRESS LINKMVS "ISRSUPC SRCHCMP" VAR1 = RC SAY 'VAR1=' VAR1 IF RC = 0 THEN DO SAY SEARCH ABNORMALLY TERMINATED. PLEASE CHECK THE INPUTS EXIT END "EXECIO * DISKR OUTDD (STEM ROW. FINIS)" DO I = 1 TO ROW.0 SAY ROW.I END "FREE DDN(NEWDD)" "FREE DDN(SYSIN)" "FREE DDN(OUTDD)" **************************** Bottom of Data ****************************

TABLE /******************************* REXX *********************************/ ADDRESS ISPEXEC "LIBDEF ISPTABL DATASET ID('TCHN639.REXX.PANEL1')" "TBERASE TABLE1" "TBCREATE TABLE1 KEYS(RNO) NAMES(NAME,GRADE,STATUS) WRITE" I = 0 SAY 'HOW MANY RECORDS NEED TO PROCESS' PULL I /*J = 1*/ DO J = 1 TO I BY 1 SAY'ENTER THE VALUES NAME GRADE(A OR B OR C OR D)' PULL INAME IGRADE IF IGRADE = 'D' THEN ISTATUS = 'FAIL' ELSE IF IGRADE = 'A'| IGRADE = 'B' | IGRADE = 'C' THEN ISTATUS = 'PASS' ELSE ISTATUS ='INVALID GRADE' /* RECORD VALUES ADD TO TABLE */ RNO = J NAME = STRIP(INAME) GRADE = STRIP(IGRADE) STATUS = STRIP(ISTATUS) "TBADD TABLE1" SAY 'THE RECORD 'RNO'ADD TO TABLE SUCCESS' IF RC /= 0 THEN SAY 'THE RECORD 'RNO'ADD TO TABLE FAILED' END "TBSKIP TABLE1" DO J = 1 TO I BY 1 RNO = J SAY RNO /* SCANNING FOR RECORD VALUES FROM TABLE */ "TBSCAN TABLE1 ARGLIST(RNO)" SAY'RNO' RNO 'NAME 'NAME 'GRADE 'GRADE 'STATUS ' STATUS END "TBCLOSE TABLE1" EXIT **************************** Bottom of Data **************************** PANEL /*** REXX ****/ ADDRESS ISPEXEC "LIBDEF ISPPLIB DATASET ID('TCHN639.REXX.PANEL1')" "DISPLAY PANEL(P1)" C=A+B "DISPLAY PANEL(P1)" IF RC \= 0 THEN SAY 'PANEL DISPLAY FAILURE' EXIT 0 /* END, AND RETURN TO CALLING ROUTINE */ **************************** Bottom of Data **************************** PANEL /*****REXX MACRO****/ 'ISREDIT MACRO' ADDRESS ISREDIT STRING = 'DISPLAY'

"ISREDIT(DSNNAME) = 'TCHN639.REXX.PANEL1'" "ISREDIT (MEMNAME) = 'PANEL'" "ISREDIT LOCATE .ZCSR" 'ISREDIT (10,10) = CURSOR' 'ISREDIT CURSOR = (ROW,COL)' 'ISREDIT (VAR1) = LABEL .ZCSR' 'ISREDIT LABEL .ZCSR = (.HERE)' 'ISREDIT (LNUM) = LINENUM .ZL' EXIT **************************** Bottom of Data **************************** EXTRA PROGRAMS **************************** Bottom of Data **************************** /*REXX*/ SAY 'ENTER N & M VALUES :' PULL N M DO A = 1 TO N DISP='SAY ' IF A = M THEN ITERATE DO B = 1 TO A BY 1 DISP=DISP||A END INTERPRET DISP END SAY 'DO WITH NUMBER' DO 3 SAY HAI END SAY 'DO WITH FOR' DO A = 1 FOR 6 BY 2 DO A = 1 FOR 6 BY 2 SAY HAI END SAY 'DO UNTIL' A = 1 DO UNTIL A = 6 A = A + 1 SAY HAI END EXIT **************************** Bottom of Data **************************** /*REXX*/ SAY 'ENTER N & M VALUES :' PULL N M DO A = 1 TO N BY 1 DISP='SAY ' IF A = M THEN ITERATE DO B = 1 TO A BY 1 DISP=DISP||A END INTERPRET DISP END EXIT **************************** Bottom of Data ****************************

/*REXX*/ STR1= 'I AM HAPPY NOW' PARSE VALUE STR1 WITH TOKEN1 'NEW' TOKEN2 IF TOKEN1 = STR1 THEN SAY 'NOT PRESENT' ELSE SAY 'PRESENT' **************************** Bottom of Data **************************** /* REXX */ /* THIS PROGRAM IS USED TO LIST THE DATASET ATTRIBUTES */ SAY 'ENTER THE FILE NAME:' PULL FLN; /* DSINFO VARIABLE FUNCTION CODE FOR LISTDSI COMMAND */ DSINFO = LISTDSI("'"FLN"'"); IF DSINFO = 0 THEN DO SAY 'VOLUME SERIAL ID...............:'SYSVOLUME SAY 'DATA SET TYPE(PS/PDS)..........:'SYSDSSMS SAY 'RECORD FORMAT..................:'SYSRECFM SAY 'RECORD LENGTH..................:'SYSLRECL SAY 'RECORD BLOCK SIZE..............:'SYSBLKSIZE SAY 'DATA SET CREATED...............:'SYSCREATE SAY 'DATA SET LAST REFERENCED.......:'SYSREFDATE SAY 'DATA SET UPDATED...............:'SYSUPDATED END ELSE DO SAY DSINFO SAY 'DATA SET NOT FOUND' END EXIT 0

**************************** Bottom of Data **************************** /*REXX*/ /* REXX */ /* PERFORMING SOME BASIC ISPF COMMANDS ON PS FILE */ SAY 'ENTER THE HIGHLEVEL QUALIFIER' PULL HLQ INFILE = HLQ||'.AAAB.PS' OUTFILE = HLQ||'.SAMPLE1.PS' ADDRESS TSO "ALLOC F("INDD") DA('"||INFILE||"') SHR" IF SYSDSN("'"OUTFILE"'") = 'OK' THEN DO "ALLOC F("OUTDD") DA('"OUTFILE"') SHR REUSE" END ELSE DO "ALLOC F("OUTDD") DA("||"'"||OUTFILE||"'", ||") NEW SPACE (100,200) TRACK LRECL(80) RECFM(F) ", ||" BLKSIZE(0)" END "EXECIO * DISKR INDD(FINIS STEM INREC." "EXECIO * DISKW OUTDD(FINIS STEM INREC." SAY "NUMBER OF RECORDS ARE:" INREC.0 "FREE F(INDD)"

"FREE F(OUTDD)" EXIT 0 **************************** Bottom of Data **************************** /* REXX */ SAY 'ENTER SOURCE FILE NAME : ' PULL SRCFLN SAY 'ENTER DESTINATION FILE NAME : ' PULL DESTFLN /* CHECK FOR THE EXISTENCE OF SOURCE FILE AND ALLOCATE SOURCE FILE */ ADDRESS TSO IF SYSDSN("'"SRCFLN"'") /= 'OK' THEN DO SAY 'SOURCE FILE NOT PRESENT' EXIT END "ALLOC F(SRCDD) DA('"SRCFLN"') SHR" IF RC /= 0 THEN DO SAY 'ALLOCATION OF SOURCE FILE FAILED' EXIT END /* CHECK FOR THE EXISTENCE OF DESTINATION FILE AND ALLOCATE IT */ IF SYSDSN("'"DESTFLN"'") = 'OK' THEN DO "ALLOC F(DESTDD) DA('"DESTFLN"') SHR" END ELSE DO "ALLOC F(DESTDD) DA('"DESTFLN"') NEW SPACE(10,20) TRACK LRECL(80) ", "RECFM (F B) BLKSIZE(800)" END IF RC /= 0 THEN DO SAY 'ALLOCATION OF DESTINATION FILE FAILED' EXIT END /* READ ALL RECORDS FROM THE SOURCE FILE */ "EXECIO * DISKR SRCDD 1(FINIS STEM SRCREC." DO I=1 TO SRCREC.0 BY 1 INDD=WORD(SRCREC.I,1) IF SYSDSN("'"INDD"'") \= 'OK' THEN SAY INDD ' IS INVALID' ELSE SAY INDD ' IS VALID' END "EXECIO * DISKW DESTDD (FINIS STEM SRCREC." IF RC \= 0 THEN DO SAY 'WRITE STATEMENT ON DESTINATION FILE FAILED' EXIT END /* DE-ALLOCATE THE SOURCE AND DESTINATION FILES */ "FREE F(SRCDD DESTDD)" IF RC \= 0 THEN EXIT EXIT END **************************** Bottom of Data ****************************

/******************** REXX **************************/ SAY 'PLEASE ENTER A MEMBER NAME.' PULL MEMBERNAME IF LENGTH(MEMBERNAME) > 8 THEN DO MEMBERNAME = SUBSTR(MEMBERNAME,1,8) SAY 'THE MEMBER NAME YOU ENTERED WAS TOO LONG.' SAY MEMBERNAME 'WILL BE USED.' END ELSE NOP **************************** Bottom of Data **************************** /* REXX */ ADDRESS MVS "NEWSTACK" PUSH 'A' PUSH 'B' PUSH 'C' PUSH 'D' NUMBER = QUEUED() DO NUMBER PULL A SAY A END ADDRESS MVS "QSTACK" /*DISPLAYS NUMBER OF STACKS EXISTING*/ SAY RC ADDRESS MVS "DELSTACK" EXIT 0 **************************** Bottom of Data **************************** /*REXX*/ D='HI RAMALA' ADDRESS TSO "SEND '" ADDRESS TSO "SEND '"

D D

"' U(TCHN639)" "' U(TCHN639)"

**************************** Bottom of Data **************************** /*REXX*/ ELEM1 = 'STRING 1 FOR THE DATA STACK' ELEM2 = 'STRING 2 FOR THE DATA STACK' ELEM3 = 'STRING 3 FOR THE DATA STACK' PUSH ELEM1 PUSH ELEM2 SAY 'DEFAULT STACK' QUEUED() /*DISPLAYS NUMBER OF ELEMENTS ADDED TO STACK*/ 'MAKEBUF' /*CREATES A BUFFER*/ PUSH ELEM3 PUSH ELEM1; PUSH ELEM2; 'QBUF' /*DISPLAYS NUMBER OF BUFFERS CREATED*/ SAY 'BUFFERS CREATED' RC 'QELEM' SAY 'ELEMENTS INSERTED IN BUFFER' RC DROPBUF 0 EXIT 0

**************************** Bottom of Data **************************** /*REXX*/ PULL COST PULL PERCENT_TAX TOTAL = COST + (COST * PERCENT_TAX) /* ADD TAX TO COST. */ PRICE = ((TOTAL * 100 + .5) % 1) / 100 /* ROUND AND REMOVE EXTRA DECIMAL PLACES.*/ A = 25 % 4 SAY 'A BY % IS ' A A = 25 // 4 SAY 'A BY // IS ' A A = 25 / 4 SAY 'A BY / IS ' A SAY 'YOUR TOTAL COST IS $' PRICE '.' **************************** Bottom of Data **************************** REXX PANEL EXECUTION PROCEDURE /* REXX */ ADDRESS ISPEXEC "ISPEXEC LIBDEF ISPPLIB DATASET ID(REXX.DAY4)" "ISPEXEC ADDPOP" "ISPEXEC DISPLAY PANEL(PANPROC)" "ISPEXEC DISPLAY PANEL(PANPROC)" "ISPEXEC REMPOP" EXIT PROGRAM PANEL1 )ATTR * TYPE(TEXT) COLOR(WHITE) INTENS(HIGH) _ TYPE(INPUT) COLOR(YELLOW) INTENS(HIGH) # TYPE(TEXT) COLOR(GREEN) INTENS(HIGH) )BODY WINDOW(70,10) * ENTER NAME: _Z + * ENTER SALARY: _Z + * ENTER DESIGNATION:_Z + * # MESSAGE:&MSG1VAR # MESSAGE:&MSG2VAR # MESSAGE:&MSG3VAR )INIT .ZVARS='(NAMEVAR,SALVAR,DESIGVAR)' )PROC IF (VER (&NAMEVAR,NB)) &MSG1VAR = 'NAME FIELD IS NOT BLANK' ELSE &MSG1VAR = 'NAME FIELD IS BLANK' IF (VER (&SALVAR,NB,PICT,NNNNN)) &MSG2VAR = 'SALARY FIELD IS NOT BLANK' ELSE &MSG2VAR = 'SALARY FIELD IS BLANK' )END

**************************** Bottom of Data **************************** PANEL2 )ATTR * TYPE(TEXT) COLOR(WHITE) INTENS(HIGH) _ TYPE(INPUT) COLOR(YELLOW) INTENS(HIGH) HILITE(REVERSE) # TYPE(OUTPUT) COLOR(GREEN) INTENS(HIGH) HILITE(BLINK) )BODY WINDOW(70,10) CMD(INP) * ENTER YOUR NAME:_Z + * HAI &NAMEVAR * CMD> _Z + )INIT .ZVARS='(NAMEVAR,INP)' )END **************************** Bottom of Data **************************** PANEL3 )BODY HAI )END **************************** Bottom of Data **************************** /*REXX*/ MESSAGE = '' ADDRESS ISPEXEC "ISPEXEC LIBDEF ISPPLIB DATASET ID(REXX.DAY5)" "ISPEXEC LIBDEF ISPMLIB DATASET ID(REXX.DAY5)" "ISPEXEC LIBDEF ISPSLIB DATASET ID(REXX.DAY5)" "ISPEXEC ADDPOP" "ISPEXEC VPUT (MESSAGE) ASIS" "ISPEXEC DISPLAY PANEL(PNLJCL)" "ISPEXEC VGET (DATA1,WORD1,KEYPRESS) ASIS" "ISPEXEC REMPOP" IF KEYPRESS = 'PF03' THEN EXIT MESSAGE = 'PLEASE WAIT..... PREPARING JCL' "ISPEXEC ADDPOP" "ISPEXEC VPUT (MESSAGE) ASIS" "ISPEXEC CONTROL DISPLAY LOCK" "ISPEXEC DISPLAY PANEL(PNLJCL)" /* DUMMMY WAIT */ DO 30 DO 10000;NOP;END END /* END OF DUMMY WAIT */ SRCHDSN = DATA1 SRCHWD = WORD1 "ISPEXEC FTCLOSE" "ISPEXEC FTOPEN TEMP" "ISPEXEC FTINCL MYJCL" "ISPEXEC FTCLOSE" "ISPEXEC VGET (ZTEMPF) SHARED" MESSAGE = 'JCL IS READY..PLEASE PRESS ENTER TO SEE JCL' "ISPEXEC ADDPOP" "ISPEXEC VPUT (MESSAGE) ASIS" "ISPEXEC DISPLAY PANEL(PNLJCL)" "ISPEXEC EDIT DATASET('"ZTEMPF"')" **************************** Bottom of Data ****************************

PNLJCL )ATTR * TYPE(TEXT) COLOR(WHITE) INTENS(HIGH) _ TYPE(INPUT) COLOR(YELLOW) INTENS(HIGH) # TYPE(TEXT) COLOR(GREEN) INTENS(HIGH) )BODY * FUNCTION: SEARCH * * ENTER SEARCH DATASET:_Z + * ENTER SEARCH WORD :_Z + * * STATUS: &MESSAGE * * )INIT .ZVARS='(DATA1,WORD1)' VGET (MESSAGE) ASIS )PROC &KEYPRESS=.PFKEY VPUT (DATA1 WORD1 KEYPRESS) ASIS )END **************************** Bottom of Data **************************** /*REXX*/ ADDRESS ISPEXEC "ISPEXEC LIBDEF ISPSLIB DATASET ID(REXX.SKEL)" VARTO = "ABC@XYZ.COM" VARCC = "XYZ@ABC.COM" NAME2 = "MR. PQR" "ISPEXEC FTOPEN TEMP" "ISPEXEC FTINCL EMAIL" "ISPEXEC FTCLOSE" "ISPEXEC VGET (ZTEMPF) SHARED" "ISPEXEC EDIT DATASET('" || ZTEMPF || "')" ADDRESS TSO "SMTPNOTE" "TO (" || VARTO || ")" "CC (" || VARCC || ")" "SUBJECT (HELLO)" "DATASET ("ZTEMPF")" **************************** Bottom of Data **************************** /* REXX */ BEGIN: ADDRESS ISPEXEC "ISPEXEC LIBDEF ISPPLIB DATASET ID(REXX.PANEL.DAY5)" "ISPEXEC LIBDEF ISPMLIB DATASET ID(REXX.MSG.DAY5)" "ISPEXEC ADDPOP" "ISPEXEC DISPLAY PANEL(PANMSG5)" "ISPEXEC VGET (CHOICE,KEYPRESS) ASIS" "ISPEXEC REMPOP" IF KEYPRESS = "PF03" THEN EXIT SELECT WHEN CHOICE = 1 THEN HEADER = 'ADDITION' WHEN CHOICE = 2 THEN HEADER = 'SUBTRACTION' WHEN CHOICE = 3 THEN HEADER = 'MULTIPLICATION' WHEN CHOICE = 4 THEN HEADER = 'DIVISION' WHEN CHOICE = 5 THEN EXIT END MESSAGE = ' '

"ISPEXEC ADDPOP" "ISPEXEC VPUT (HEADER MESSAGE) ASIS" "ISPEXEC DISPLAY PANEL(PANMSG2)" "ISPEXEC VGET (NUM1 NUM2 KEYPRESS) ASIS" "ISPEXEC REMPOP" IF KEYPRESS = "PF03" THEN SIGNAL BEGIN PANEL2SE: SELECT WHEN CHOICE = 1 THEN MESSAGE = NUM1 + NUM2 WHEN CHOICE = 2 THEN MESSAGE = NUM1 - NUM2 WHEN CHOICE = 4 THEN DO IF NUM2 = 0 THEN MESSAGE = "DIVISION BY ZERO NOT ALLOWED" ELSE MESSAGE = NUM1/NUM2 END WHEN CHOICE = 3 THEN MESSAGE = NUM1 * NUM2 END "ISPEXEC ADDPOP" "ISPEXEC VPUT (HEADER MESSAGE) ASIS" "ISPEXEC DISPLAY PANEL(PANMSG2)" "ISPEXEC VGET (NUM1 NUM2 KEYPRESS) ASIS" "ISPEXEC REMPOP" IF KEYPRESS = "PF03" THEN SIGNAL BEGIN ELSE SIGNAL PANEL2SE **************************** Bottom of Data **************************** )ATTR * TYPE(TEXT) COLOR(WHITE) INTENS(HIGH) _ TYPE(INPUT) COLOR(YELLOW) INTENS(HIGH) # TYPE(TEXT) COLOR(GREEN) INTENS(HIGH) )BODY WINDOW(70,10) * MAIN MENU * 1. ADDITION * 2. SUBTRACTION * 3. MULTIPLICATION * 4. DIVISION * 5. EXIT * * * * ENTER YOUR CHOICE: _Z+ )INIT .ZVARS='(CHOICE)' )PROC VER(&CHOICE,NB,MSG=MSG001) IF (&CHOICE < 1 OR &CHOICE > 5) .MSG = MSG002 &KEYPRESS=.PFKEY VPUT (CHOICE,KEYPRESS) ASIS )END **************************** Bottom of Data **************************** )ATTR * TYPE(TEXT) COLOR(WHITE) INTENS(HIGH) _ TYPE(INPUT) COLOR(YELLOW) INTENS(HIGH) # TYPE(TEXT) COLOR(GREEN) INTENS(HIGH) )BODY WINDOW(70,10) * FUNCTION: &HEADER * * ENTER NUM1:_Z + * ENTER NUM2:_Z +

* * RESULT: &MESSAGE * * )INIT .ZVARS='(NUM1 NUM2)' VGET (HEADER MESSAGE) ASIS )PROC &KEYPRESS=.PFKEY VER (&NUM1,NB,MSG=MSG010) VER (&NUM2,NB,MSG=MSG011) VER (&NUM1,PICT,NN,MSG=MSG012) VER (&NUM2,PICT,NN,MSG=MSG013) VPUT (NUM1 NUM2 KEYPRESS) ASIS )END **************************** Bottom **************************** Bottom **************************** Bottom **************************** Bottom **************************** Bottom **************************** Bottom **************************** Bottom **************************** Bottom **************************** Bottom **************************** Bottom **************************** Bottom **************************** Bottom /*REXX*/

of of of of of of of of of of of of

Data Data Data Data Data Data Data Data Data Data Data Data

**************************** **************************** **************************** **************************** **************************** **************************** **************************** **************************** **************************** **************************** **************************** ****************************

**************************** Bottom of Data **************************** /*REXX*/ /*THIS IS A SAMPLE REXX PROGRAM*/ **************************** Bottom of Data **************************** /*REXX*/ /*THIS IS A SAMPLE REXX PROGRAM*/ SAY 'HI WELCOME TO REXX PROGRAMMING' EXIT **************************** Bottom of Data **************************** /*REXX*/ /*THIS IS A SAMPLE REXX PROGRAM*/ SAY 'HI WELCOME TO REXX PROGRAMMING' PULL A SAY 'A VALUE IS' A EXIT **************************** Bottom of Data **************************** /*REXX*/ /*THIS IS A SAMPLE REXX PROGRAM*/ SAY 'HI WELCOME TO REXX PROGRAMMING' SAY 'HI WELCOME TO REXX PROGRAMMING' SAY 'HI WELCOME TO REXX PROGRAMMING' SAY 'HI WELCOME TO REXX PROGRAMMING' EXIT

**************************** Bottom of Data **************************** /*REXX*/ /*THIS IS A SAMPLE REXX PROGRAM*/ SAY 'HI WELCOME', 'TO REXX PROGRAMMING' EXIT **************************** Bottom of Data **************************** /*REXX*/ /*THIS IS A SAMPLE REXX PROGRAM*/ SAY 'HI WEL'||, 'COME TO REXX PROGRAMMING' EXIT **************************** Bottom of Data **************************** /*REXX*/ /*THIS IS A SAMPLE REXX PROGRAM*/ SAY 'HI WELCOME '; SAY 'THIS IS A SAMPLE PROGRAM' EXIT **************************** Bottom of Data **************************** /*REXX*/ /*THIS IS A SAMPLE REXX PROGRAM*/ SAY 'ENTER VALUE FOR I' PULL I SAY DATATYPE(I) EXIT **************************** Bottom of Data **************************** /*REXX*/ /*THIS IS A SAMPLE REXX PROGRAM*/ SAY "HI ISN'T A REXX INSTRUCTION" SAY 'HI ISN''T A REXX INSTRUCTION' SAY "HI ISN''T A REXX INSTRUCTION" SAY 'HI ISN'T A REXX INSTRUCTION' EXIT **************************** Bottom of Data **************************** /*REXX*/ /*THIS IS A SAMPLE REXX PROGRAM*/ SAY 'Hi Welcome to REXX Programming' SAY "Hi Welcome to REXX Programming" SAY Hi Welcome to REXX Programming EXIT **************************** Bottom of Data ****************************

/*REXX*/ /*THIS IS A SAMPLE REXX PROGRAM*/ SAY 'FRUITNAME VALUE IS' FRUITNAME SAY 'ENTER ANY ONE FRUIT NAME' PULL FRUITNAME SAY 'FRUITNAME VALUE IS' FRUITNAME PARSE PULL FRUITNAME SAY 'FRUITNAME VALUE IS' FRUITNAME PARSE UPPER PULL FRUITNAME SAY 'FRUITNAME VALUE IS' FRUITNAME PARSE VALUE 'GOD IS GREAT' WITH A1,A2,A3 SAY 'PARSED INPUT' SAY A1 SAY A2 SAY A3 EXIT **************************** Bottom of Data **************************** /*REXX*/ /*THIS IS A SAMPLE REXX PROGRAM*/ CALL SUBPRG1 1 2 3 SUM = RESULT SAY SUM EXIT SUBPRG1 PARSE ARG . N1 N2 SUM = N1 + N2 RETURN SUM **************************** Bottom of Data **************************** /*REXX*/ A=7+2 SAY '7+2 IS' B=7-2 SAY '7-2 IS' C=7*2 SAY '7*2 IS' D=7/2 SAY '7/2 IS' E=7%2 SAY '7%2 IS' F=7//2 SAY '7//2 IS' G=7**2 SAY '7**2 IS' H=-7 SAY '-7 IS' H I=+7 SAY '+7 IS' I EXIT

A B C D E F G

**************************** Bottom of Data **************************** /*REXX*/ IF(7==7) THEN SAY '7 IS STRICTLY EQUAL TO 7' IF(7==6) THEN SAY '7 IS STRICTLY EQUAL TO 6' IF(7=7) THEN SAY '7 IS EQUAL TO 7'

IF(7=6) THEN SAY '7 IS EQUAL TO 6' IF(7\==7) THEN SAY '7 IS NOT STRICTLY EQUAL TO 7' IF(7\=6) THEN SAY '7 IS NOT EQUAL TO 6' IF(7=7) THEN SAY '7 IS EQUAL TO 7' IF(7=6) THEN SAY '7 IS EQUAL TO 6' IF(7>7) THEN SAY '7 IS GREATER THAN 7' IF(8>7) THEN SAY '8 IS GREATER THAN 7' IF(6<7) THEN SAY '6 IS LESS THAN 7' IF(7<7) THEN SAY '7 IS LESS THAN 7' IF(8<7) THEN SAY '8 IS LESS THAN 7' IF(7><7) THEN SAY '7 IS GREATER THAN OR LESS THAN 7' IF(6><7) THEN SAY '6 IS GREATER THAN OR LESS THAN 7' IF(8><7) THEN SAY '8 IS GREATER THAN OR LESS THAN 7' IF \(6>7) THEN SAY '6 IS NOT GREATER THAN 7' IF \(7<7) THEN SAY '7 IS NOT LESS THAN 7' IF \(8<7) THEN SAY '8 IS NOT LESS THAN 7' IF(6<=7) THEN SAY '6 IS LESS THAN OR EQUAL TO 7' IF(7<=7) THEN SAY '7 IS LESS THAN OR EQUAL TO 7' EXIT **************************** Bottom of Data ****************************

Das könnte Ihnen auch gefallen