mainframes

58
MAINFRAMES COBOL JCL DB2 VSAM CICS - PRANEETH.V & MOHAN.V

Upload: borisg3

Post on 15-Apr-2017

217 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Mainframes

MAINFRAMES

ü COBOL

ü JCL

ü DB2

ü VSAM

ü CICS

- PRANEETH.V & MOHAN.V

Page 2: Mainframes

COBOL

Ø HELLO WORLD

Ø SIMPLE MOVE

Ø CORRESPONDING MOVE

Ø REFERENCE MODIFICATION

Ø INSPECT

Ø STRING

Ø UNSTRING

Ø IF(By passing Statements)

Ø EVALUATE

Ø REDEFINES

Ø COMPUTATIONAL USAGES(COMP,COMP-1/2/3)

Ø RENAMES

Ø 1 DIMENSIOANL ARRAY

Ø 2 DIMENSIOANL ARRAY

Ø SEARCH

Ø SEARCH ALL

Ø FILE WRITE

Ø FILE READ

Ø FILE RE-WRITE

Ø FILE DELETE

Ø COPY BOOK

Ø CALL

Ø FILE SORT

Page 3: Mainframes

# HELLO WORLD

ID DIVISION.

PROGRAM-ID. HELLO.

PROCEDURE DIVISION.

DISPLAY "HELLO WORLD".

STOP RUN.

# SIMPLE MOVE

ID DIVISION.

PROGRAM-ID. MOV.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 G-1.

02 A PIC X(4).

02 B PIC X(4).

02 C PIC X(4).

01 X PIC X(12).

PROCEDURE DIVISION.

ACCEPT G-1.

DISPLAY G-1.

MOVE G-1 TO X.

DISPLAY X.

STOP RUN.

Page 4: Mainframes

# CORRESPONDING MOVE

ID DIVISION.

PROGRAM-ID. COR.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 G-1.

02 A PIC X(4).

02 B PIC X(4).

02 C PIC X(4).

01 G-2.

02 B PIC X(4).

02 C PIC X(4).

02 A PIC X(4).

PROCEDURE DIVISION.

ACCEPT G-1.

MOVE CORR G-1 TO G-2.

DISPLAY G-2.

STOP RUN.

Page 5: Mainframes

# REFERENCE MODIFICATION

ID DIVISION.

PROGRAM-ID. REF.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 D1 PIC X(10).

01 D2 PIC X(10).

PROCEDURE DIVISION.

ACCEPT D1.

MOVE D1 (6:2) TO D2 (6:2).

DISPLAY D2.

STOP RUN.

#INSPECT

ID DIVISION.

PROGRAM-ID. P1.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 A P IC X(30) VALUE "MAT SOFTWARE SOLUTION".

01 B PIC 9(03).

01 C PIC 9(03).

PROCEDURE DIVISION.

ACCEPT A.

INSPECT A TALLYING B FOR ALL 'M'.

INSPECT A TALLYING C FOR CHARACTERS.

DISPLAY B.

DISPLAY C.

STOP RUN.

Page 6: Mainframes

# STRING

ID DIVISION.

PROGRAM-ID. STR.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 YY PIC X(04).

01 MM PIC X(02).

01 DD PIC X(02).

01 WS-DATA PIC X(10).

PROCEDURE DIVISION.

ACCEPT YY.

ACCEPT MM.

ACCEPT DD.

STRING

YY,

MM,

DD

DELIMITED BY "-"

INTO

WS-DATA

END-STRING.

DISPLAY WS-DATA.

STOP RUN.

Page 7: Mainframes

# UNSTRING

ID DIVISION.

PROGRAM-ID. UNSTR.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 WS-DATE PIC X(16).

01 YY PIC X(4).

01 MM PIC X(2).

01 DD PIC X(2).

PROCEDURE DIVISION.

ACCEPT WS-DATE.

UNSTRING

WS-DATE

DELIMITED BY "-"

INTO

YY

MM

DD

END-UNSTRING

DISPLAY YY.

DISPLAY MM.

DISPLAY DD.

STOP RUN.

Page 8: Mainframes

#IF (By passing statements)

ID DIVISION.

PROGRAM-ID. IFELS.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 G-1.

02 YY PIC 9(4).

02 MM PIC 9(2).

02 DD PIC 9(2).

01 DATE1 PIC X(10).

01 DATE2 PIC X(10).

PROCEDURE DIVISION.

ACCEPT G-1.

IF (G-1 < 19880813)

MOVE G-1 TO DATE1

DISPLAY DATE1

ELSE

MOVE G-1 TO DATE2

DISPLAY DATE2

END-IF.

STOP RUN.

Page 9: Mainframes

# EVALUATE

ID DIVISION.

PROGRAM-ID. EVAL.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 YY PIC 9(4).

88 C-1 VALUE 2000.

88 C-2 VALUE 2001.

88 C-3 VALUE 2002 THRU 2010.

PROCEDURE DIVISION.

ACCEPT YY.

EVALUATE TRUE

WHEN C-1

DISPLAY "mat software solution"

WHEN C-2

DISPLAY "RAINA"

WHEN C-3

DISPLAY "DRAVID"

WHEN OTHER

DISPLAY "SACHIN"

END-EVALUATE.

STOP RUN.

Page 10: Mainframes

#REDEFINES

ID DIVISION.

PROGRAM-ID. REDF.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 A PIC 9(4) VALUE 1234.

01 B REDEFINES A PIC 9(4).

01 C REDEFINES B PIC 9(4).

PROCEDURE DIVISION.

DISPLAY A , B , C.

STOP RUN.

#RENAMES

ID DIVISION.

PROGRAM-ID. REFF.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 G-1.

02 WS-D1 PIC X(10).

02 WS-D2 PIC X(10).

02 WS-D3 PIC X(10).

02 WS-D4 PIC X(10).

66 G-2 RENAMES WS-D2 THRU WS-D3.

PROCEDURE DIVISION.

ACCEPT G-1.

DISPLAY G-2.

STOP RUN.

Page 11: Mainframes

#COMPUTATIONAL USAGES(COMP,COMP-1/2/3)

ID DIVISION.

PROGRAM-ID. P2.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 A PIC 9(3) USAGE IS COMP.

01 B USAGE IS COMP-1.

01 C USAGE IS COMP-2.

01 D PIC 9(3) V 9(3) USAGE IS COMP-3.

01 K PIC S9(3) COMP-3.

PROCEDURE DIVISION.

MOVE 10 TO A.

MOVE 10 TO B.

MOVE 10 TO C.

MOVE 2.3 TO D.

DISPLAY A.

DISPLAY LENGTH OF A.

DISPLAY 'VALUE OF K' K.

DISPLAY LENGTH OF K.

MOVE 2344 TO K.

DISPLAY ' VALUE OF K' K.

DISPLAY LENGTH OF K.

MOVE -4567 TO K.

DISPLAY 'VALUE OF K' K.

DISPLAY LENGTH OF K.

DISPLAY B.

DISPLAY C.

DISPLAY D.

STOP RUN.

Page 12: Mainframes

# 1 DIMENSIOANL ARRAY

ID DIVISION.

PROGRAM-ID. SNGLIN.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 I PIC 9(2).

01 M-DATA.

02 M PIC X(9) OCCURS 12 TIMES.

PROCEDURE DIVISION.

MOVE 1 TO I.

PERFORM UNTIL I > 12

ACCEPT M(I)

ADD 1 TO I

END-PERFORM.

DISPLAY M-DATA.

STOP RUN.

Page 13: Mainframes

#TWO DIMENSIONAL ARRAY

ID DIVISION.

PROGRAM-ID. TDILN.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 M-DATA.

02 M OCCURS 12 TIMES.

03 W PIC X(5) OCCURS 4 TIMES.

01 I PIC 9(2).

01 J PIC 9(1).

PROCEDURE DIVISION.

MOVE 1 TO I.

PERFORM UNTIL I > 12

MOVE 1 TO J

PERFORM UNTIL J > 4

ACCEPT W(I , J)

DISPLAY W(I , J)

ADD 1 TO J

END-PERFORM

ADD 1 TO I

END-PERFORM.

STOP RUN.

Page 14: Mainframes

#SEARCH

ID DIVISION.

PROGRAM-ID. SRCH.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 M-DATA.

02 M PIC 9(1) OCCURS 1 TIMES INDEXED BY I.

01 J PIC 9(1) VALUE ZERO.

PROCEDURE DIVISION.

PERFORM VARYING J FROM 1 BY 1 UNTIL J > 5

ACCEPT M(J)

DISPLAY M(J)

END-PERFORM.

SET I TO 1.

SEARCH M

AT END DISPLAY "EOA"

WHEN M(I) = 4

DISPLAY "FOUND ARRAY"

WHEN M(I) = 6

DISPLAY "MAT"

END-SEARCH.

STOP RUN.

Page 15: Mainframes

#SEARCH ALL

ID DIVISION.

PROGRAM-ID. SRCH.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 M-DATA.

02 M PIC 9(1) OCCURS 5 TIMES ASCENDING KEY IS M INDEXED BY I.

01 J PIC 9(1) VALUE ZERO.

PROCEDURE DIVISION.

PERFORM VARYING J FROM 1 BY 1 UNTIL J > 5

ACCEPT M(J)

DISPLAY M(J)

END-PERFORM.

SET I TO 1.

SEARCH ALL M

AT END DISPLAY "EOA"

WHEN M(I) = 4

DISPLAY "FOUND ARRAY"

END-SEARCH.

STOP RUN.

Page 16: Mainframes

#FILE WRITE

ID DIVISION.

PROGRAM-ID. P1.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT DETAIL-FILE ASSIGN TO DISK.

DATA DIVISION.

FILE SECTION.

FD DETAIL-FILE.

01 DETAIL-REC.

02 POL-NO PIC 9(4).

02 POL-NAME PIC X(10).

02 POL-TYPE PIC X(10).

02 POL-STATUS PIC X(10).

02 POL-AMT PIC 9(5).

02 FILLER PIC (41).

PROCEDURE DIVISION.

OPEN OUTPUT DETAIL-FILE.

PERFORM 10 TIMES

ACCEPT POL-NO

ACCEPT POL-NAME

ACCEPT POL-TYPE

ACCEPT POL-STATUS

ACCEPT POL-AMT

WRITE DETAIL-REC

END-PERFORM.

STOP RUN.

Page 17: Mainframes

#FILE READ

ID DIVISION.

PROGRAM-ID. P1.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT DETAIL-FILE ASSIGN TO DISK.

DATA DIVISION.

FILE SECTION.

FD DETAIL-FILE.

01 DETAIL-REC.

02 POL-NO PIC 9(4).

02 POL-NAME PIC X(10).

02 POL-TYPE PIC X(10).

02 POL-STATUS PIC X(10).

02 POL-AMT PIC 9(5).

02 FILLER PIC X(41).

WORKING-STORAGE SECTION.

01 EOF PIC X(03) VALUE 'M'.

PROCEDURE DIVISION.

OPEN INPUT DETAIL-FILE.

PERFORM UNTIL EOF = 'N'

READ DETAIL-FILE

AT END MOVE 'N' TO EOF

NOT AT END

DISPLAY DETAIL-REC

End-read

END-PERFORM.

CLOSE DETAIL-FILE.

STOP RUN.

Page 18: Mainframes

#FILE RE-WRITE

ID DIVISION.

PROGRAM-ID. P1.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT DETAIL-FILE ASSIGN TO DISK.

DATA DIVISION.

FILE SECTION.

FD DETAIL-FILE.

01 DETAIL-REC.

02 POL-NO PIC 9(4).

02 POL-NAME PIC X(10).

02 POL-TYPE PIC X(10).

02 POL-STATUS PIC X(10).

02 FILLER PIC X(41).

WORKING-STORAGE SECTION.

01 EOF PIC X(03) VALUE 'M'.

PROCEDURE DIVISION.

OPEN I-O DETAIL-FILE.

PERFORM UNTIL EOF = 'N'

READ DETAIL-FILE

AT END MOVE 'N' TO EOF

NOT AT END

IF POL-STATUS = 'OPEN'

MOVE 'CLOSE' TO POL-STATUS

REWRITE DETAIL-REC.

END-IF

END-READ

END-PERFORM.

CLOSE DETAIL-FILE.

STOP RUN.

Page 19: Mainframes

#FILE DELETE

ID DIVISION.

PROGRAM-ID. P1.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT DETAIL-FILE ASSIGN TO DISK.

DATA DIVISION.

FILE SECTION.

FD DETAIL-FILE.

01 DETAIL-REC.

02 POL-NO PIC 9(4).

02 POL-NAME PIC X(10).

02 POL-TYPE PIC X(10).

02 POL-STATUS PIC X(10).

02 FILLER PIC X(41).

WORKING-STORAGE SECTION.

01 EOF PIC X(03) VALUE 'M'.

PROCEDURE DIVISION.

OPEN I-O DETAIL-FILE.

PERFORM UNTIL EOF = 'N'

READ DETAIL-FILE

AT END MOVE 'N' TO EOF

NOT AT END

IF POL-NAME = 'NIRMITHA'

MOVE SPACES TO POL-NAME

REWRITE DETAIL-REC.

END-IF

END-READ

END-PERFORM.

CLOSE DETAIL-FILE.

STOP RUN.

Page 20: Mainframes

#COPY BOOK

ID DIVISION.

PROGRAM-ID. P1.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT DETAIL-FILE ASSIGN TO DISK.

DATA DIVISION.

FILE SECTION.

FD DETAIL-FILE.

COPY 'INREC'.

PROCEDURE DIVISION.

OPEN OUTPUT DETAIL-FILE.

PERFORM 10 TIMES

ACCEPT POL-NO

ACCEPT POL-NAME

ACCEPT POL-TYPE

ACCEPT POL-STATUS

ACCEPT POL-AMT

WRITE DETAIL-REC

END-PERFORM.

STOP RUN.

*****copybook(INREC)*******

01 DETAIL-REC.

02 POL-NO PIC 9(9).

02 POL-NAME PIC X(9).

02 POL-TYPE PIC X(9).

02 POL-STATUS PIC X(10).

02 POL-AMT PIC 9(10)

02 FILLER PIC X(33)

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

Page 21: Mainframes

#CALL

ID DIVISION.

PROGRAM-ID. CLM.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 NM PIC X(20).

PROCEDURE DIVISION.

DISPLAY "THIS IS MAIN PROGRAM".

CALL "SUB".

DISPLAY "SUB PROGRAM IS SUCCESFULLY CALLD".

STOP RUN.

(SUB) /* SUB PROGRAM */

ID DIVISION.

PROGRAM-ID. CLSUB.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 NM PIC X(20).

PROCEDURE DIVISION.

DISPLAY "THIS IS SUB PROGRAM".

EXIT PROGRAM.

Page 22: Mainframes

#FILE SORT

ID DIVISION.

PROGRAM-ID. SRTFIL.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT INFL ASSIGN TO DISK.

SELECT SRTFL ASSIGN TO DISK1.

SELECT OTFL ASSIGN TO DISK2.

DATA DIVISION.

FILE SECTION.

FD INFL.

COPY INREC

REPLACING ==:POL:== BY ==IN==.

SD SRTFL.

COPY INREC

REPLACING ==:POL:== BY ==SRT==.

FD OTFL.

01 OT-REC PIC X(80).

PROCEDURE DIVISION.

OPEN OUTPUT INFL.

PERFORM 5 TIMES

ACCEPT IN-NUM

ACCEPT IN-NM

ACCEPT IN-TYPE

WRITE IN-REC

END-PERFORM.

CLOSE INFL.

SORT SRTFL ON ASCENDING KEY SRT-NUM USING INFL GIVING OTFL.

STOP RUN.

Page 23: Mainframes

TASKS

1) write a program to accept a string from user and display?

2) Write a simple program to preform mathematical operations(add,sub,mul,div)?

3) Write a program to move data from one group to other group?

4) Write a program to get count of characters in a string (inspect/examine)?

5) Write a program to reverse a string ' MAINFRAMES' using reference modification?

6) Write a program to accept first name, last name and display both as full name using STRING ?

7) Write a program to reverse the given string of any length using perform?

8) Write a program to find length of given string?

9) Write a program for Fibonacci series?

10) Write a program to swap two numbers?

11) Write a program to generate random number?

12) Write a program to find factors of given number?

13) Write a program to find whether given number is prime or not?

14) Write a program to pass data using linkage section?

15) Write a program to convert Gregorian date to Julian date?

16) Write a program for following o/p using UN_STRING

I/P: srinivas , trainer , mat

O/P: srinivas

trainer

mat

17) write a program to cal power bill based on slab rate using if and evaluate

Slab rate: 0-100 units 5/-

101-200 units 7/-

200-above 10/-

Formula: Power Bill = SLAB RATE * No. Of Units Used

18) write a sample program involving 3 var a,b,c each redefining other ?

19) Write a sample program for salary generation using comp variables

Formula: Sal = TA + DA + HRA – PF + BASIC

20) write a program to accept data and display data using 3-D array?

Page 24: Mainframes

21) Write a program to search for a value in 2-D in array(ARRAY1) if found write to ARRAY2 if not

write to ARRAY3?

22) Write a program to pass data from one prog to other porg using call by value?

23) Write a program to pass data from one prog to other porg using call by Reference?

24) Write a program involving copybook to copy all working storage section variables from an inrec?

25) Write a program to copy all procedure division logic from inrec?

26) Write a program to read data from one file and the data to other file?

27) Write a program to count number records in a file?

28) Write program to delete last 3 records in your file?

29) Write a program to reverse the order of records in your file?

30) Write a program to eliminate duplicate records in your file?

31) Write a program to merge two files data in to third file in ascending order?

32) write a file program to write some sample data involving header, fotter and feild names as below

*** EMPLOYEE DATA ***

_______________________

eno ename salary location

1 john 500 hyd

2 khan 700 vskp

*** END OF FILE ***

33) Write a program to display total salary for each page along with page number for above format?

34) Write a program to calculate total salary of all employees in above file?

Page 25: Mainframes

JCL

- Job Controlling Language

Ø IEFBR14

Ø IEBCOPY

Ø IEBGENER

Ø SORT

ü SORT FIELDS

ü INCLUDE COND

ü OMITCOND

ü SUMFIELDS

ü STOPAFT<SKIPREC

ü INREC/OUTREC

Ø IEBEDIT

Ø IEBPTPCH

Ø IEHLIST

Ø IEHPROGM

Ø IEBCOMPR

Ø JOBLIB

Ø STEPLIB

Ø IF

Ø COND

Ø RESTART

Ø DUMMY

Ø TEMP

Ø IDCAMS

ü CREATE GDG

ü ADD GENERATIONS

ü DELETE GDG

Ø INSTREAM PROC

Ø CATALOG PROC

Page 26: Mainframes

#IEFBR14 // MAT016AB JOB NOTIFY=&SYSUID // ACT1 EXEC PGM=IEFBR14 // DD1 DD DSN=MAT008.MAT.PS, // UNIT=SYSDA, SPACE= (CYL, (10,10),RLSE), // DISP= (NEW, CATLG, DELETE), // DCB= (LRECL=80, BLKSIZE=800,RECFM=FB,DSORG=PS) // SYSPRINT DD SYSOUT=* // SYSOUT DD SYSOUT=* // SYSIN DD * /* // # Create the dataset(PDS) by using IEFBR14 //MAT014AB JOB NOTIFY=&SYSUID //ACT1 EXEC PGM=IEFBR14 //DD1 DD DSN=MAT008.MAT.JCL, // UNIT=SYSDA,SPACE=(CYL,(10,10,10),RLSE), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB,DSORG=PO), // DISP=(NEW,CATLG,DELETE) //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* //

Page 27: Mainframes

#Copy data from one PDS to another PDS //MAT007EX JOB NOTIFY=&SYSUID //ACT22 EXEC PGM=IEBCOPY //SYSUT1 DD DSN=MAT008.MAT.COBOL,DISP=SHR //SYSUT2 DD DSN=MAT035.MAT.COBOL1,DISP=OLD //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSIN DD * COPY INDD=SYSUT1,OUTDD=SYSUT2 /*** COPY CARD ***/ /* // #Copy data from one PS to another PS //MAT003AB JOB NOTIFY=&SYSUID //STEP01 EXEC PGM=IEBGENER //SYSUT1 DD DSN=MAT008.MAT.PS1,DISP=SHR //SYSUT2 DD DSN=MAT008.MAT.PS2,DISP=OLD //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* //

Page 28: Mainframes

#SORT //MAT001AB JOB NOTIFY=&SYSUID //ACT3 EXEC PGM=SORT //SORTIN DD DSN=MAT002.MAT.PSI,DISP=SHR //SORTOUT DD DSN=MAT002.MAT.PSO,DISP=OLD //SORTXSUM DD DSN=MAT007.MAT.PS2,DISP=OLD //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS= (1, 3, CH, A) /*** SORT CARD ***/ STOPAFT=2

SKIPREC=1 INCLUDE COND= (1, 3, CH, EQ, and C ’001’) OMIT COND= (16, 7, CH, EQ, and C’SURYA’) SUM FIELDS=NONE SUM FIELDS=XSUM MERGE FIELDS=(05,10,CH,A,01,05,CH,A) INREC FIELDS= (1:1, 80, and 81: SEQNUM, 3, ZD) SORT FIELDS= (81, 3, ZD, D) Reversing File Using JCL OUTREC FIELDS= (1:1, 80) / /* //

Page 29: Mainframes

#IEBEDIT //MAT017EX JOB NOTIFY=&SYSUID //ACT001 EXEC PGM=IEBEDIT //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSUT1 DD DSN=MAT022.MAT.PS1,DISP=SHR //SYSUT2 DD SYSOUT=(*,INTRDR) //* internal reader used to read progs from ps *// //SYSIN DD * EDIT TYPE=INCLUDE, STEPNAME= (ACT01, ACT03, ACT05) (OR) EDIT TYPE=EXCLUDE, STEPNAME= (ACT01, ACT03, ACT05) /* // #IEBPTPCH //MAT041EX JOB NOTIFY=&SYSUID //ACT001 EXEC PGM=IEBPTPCH //SYSUT1 DD DSN=MAT007.MAT.PS3,DISP=SHR //SYSUT2 DD DUMMY //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * PRINT /* //

Page 30: Mainframes

#IEHLIST //MAT042EX JOB NOTIFY=&SYSUID, PRTY=15 //ACT001 EXEC PGM=IEHLIST //SYSPRINT DD SYSOUT=* //DD1 DD DISP=OLD, UNIT=3390, VOL=SER=MATV05 //SYSIN DD * LISTPDS DSN=MAT022.MAT.COBOL, VOL=3390=MATV05 /* // #IEHPROGM: //MAT066EX JOB NOTIFY=&SYSUID, PRTY=15 //ACT001 EXEC PGM=IEHPROGM //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=OLD,UNIT=3390,VOL=SER=MATV05 //SYSUT2 DD DISP=OLD,UNIT=3390,VOL=SER=MATV05 //SYSIN DD * SCRATCH DSN=MAT007.MAT.PS1,VOL=3390=MATV05 /* To Un Catlg RENAME DSN=MAT007.MAT.PS,VOL=3390=MATV05, /* To Rename NEWNAME=MAT007.MAT.MANA UNCATLG DSN=MAT007.MAT.PS1 CATLG DSN=MAT007.MAT.PS2,VOL=3390=MATV05 /* //

Page 31: Mainframes

#COMPARE TWO DATA SETS //MAT042CL JOB MAT,MAT,CLASS=A,NOTIFY=&SYSUID //ACT01 EXEC PGM=IEBCOMPR //SYSUT1 DD DSN=MAT008.MAT.COBOL,DISP=SHR //SYSUT2 DD DSN=MAT008.MAT.COBOL1,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * COMPARE TYPORG=PO /* // #JOBLIB: //MAT012CL JOB CLASS=A,NOTIFY=&SYSUID,PRTY=15 //JOBLIB DD DSN=MAT012.MAT.LOADLIB,DISP=SHR //ACT001 EXEC PGM=STR //ACT002 EXEC PGM=STR1 //ACT003 EXEC PGM=SAMPLE #STEP LIB: //MAT012CL JOB CLASS=A,NOTIFY=&SYSUID,PRTY=15 //ACT001 EXEC PGM=STR //STEPLIB DD DSN=MAT012.MAT.LOADLIB,DISP=SHR //STEPLIB DD DSN=MAT012.MAT.LOADLIB1,DISP=SHR //ACT002 EXEC PGM=STR1 //

Page 32: Mainframes

#IF //MAT113EX JOB CLASS=A,MSGCLASS=A,NOTIFY=&SYSUID //JOBLIB DD DSN=MAT168.MAT.LOADLIB,DISP=SHR //STEP1 EXEC PGM=ADD //A1 IF STEP1.RC = 00 THEN //STEP2 EXEC PGM=INSP1 //ENDA1 ENDIF //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* // #COND PARAMETER: //MAT012CL JOB CLASS=A,NOTIFY=&SYSUID,PRTY=15 //JOBLIB DD DSN=MAT012.MAT.LOADLIB1,DISP=SHR //ACT001 EXEC PGM=STR //ACT002 EXEC PGM=STR1, COND = ( 04 , LT ) //ACT003 EXEC PGM=SAMPLE, COND = ( 04 , LT ,ACT002 ) //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* //

Page 33: Mainframes

#RESTART: //MAT012CL JOB CLASS=A,NOTIFY=&SYSUID,PRTY=15,RESTART=ACT002 //JOBLIB DD DSN=MAT012.MAT.LOADLIB1,DISP=SHR //ACT001 EXEC PGM=STR //ACT002 EXEC PGM=STR1 //ACT003 EXEC PGM=SAMPLE //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* // #DUMMY //MAT012CL JOB CLASS=A,NOTIFY=&SYSUID,PRTY=15,RESTART=ACT002 //JOBLIB DD DSN=MAT012.MAT.LOADLIB1,DISP=SHR //ACT001 EXEC PGM=FILEWRITE //DISK DD DSN= MAT012.MAT.PS //DISK1 DD DUMMY //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* //

Page 34: Mainframes

#TEMP //MAT012CL JOB CLASS=A,NOTIFY=&SYSUID,PRTY=15,RESTART=ACT002 //ACT001 EXEC PGM=FILEWRITE //DISK DD DSN=&&TEMP, // UNIT=SYSDA,SPACE=(CYL,(10,10),RLSE), // DISP=(NEW,PASS,DELETE), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB,DSORG=PS) //ACT002 EXEC PGM=FILEREAD //DISK1 DD DSN= *.ACT001.DISK /* Refer Back //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* // #CREATE GDG //MAT153AB JOB NOTIFY=&SYSUID,PRTY=15 //ACT001 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * DEFINE GDG (NAME (MAT143..MAT.GDG)- LIMIT(2)- SCRATCH EMPTY) /*

Page 35: Mainframes

# ADD GENERATIONS //MAT153AB JOB NOTIFY=&SYSUID,PRTY=15 //ACT002 EXEC PGM=IEBGENER //SYSUT1 DD DSN=MAT143.MAT.PS,DISP=SHR //SYSUT2 DD DSN=MAT143.MAT.GDG(+1),DISP=(NEW,CATLG,CATLG), // UNIT=DISK,SPACE=(TRK,(20,10),RLSE), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB,DSORG=PS) //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* // #DELEETE GDG //MAT155AB JOB NOTIFY=&SYSUID,PRTY=15 //ACT001 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * DELETE MAT143.MAT.GDG , FORCE/PURGE /* //

Page 36: Mainframes

#INSTREAM PROC //MAT155AB JOB NOTIFY=&SYSUID, PRTY=15 //PROC01 PROC //ACT001 EXEC PGM=COMP //STEPLIB DD DSN=MAT143.NEETHU.LOADLIB,DISP=SHR // PEND //ACT002 EXEC PROC01 //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * /* // # CATALOG PROC //MAT155AB JOB NOTIFY=&SYSUID,PRTY=15 //PROCLIB JCLLIB ORDER=MAT168.NEETHU.PROCLIB //ACT04 EXEC PROC1 //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSIN DD * /* // ****** PROC 01******** //PROC01 PROC //ACT001 EXEC PGM=COMP //STEPLIB DD DSN=MAT143.NEETHU.LOADLIB,DISP=SHR //

Page 37: Mainframes

DB2

Ø DDL

Ø DCL

Ø DML

Ø COLUMN FUNCTIONS

Ø SCALAR FUNCTIONS

Ø VIEWS

Ø JOINS

Ø UNIOUN

Ø UNIOUN ALL

Ø APPLICATION PROGRAMMING.

ü CREATE

ü INSERT

ü SELECT

ü CURSORS

Page 38: Mainframes

DML COMMANDS

#CREATE TABLE

Create table emp ( eno int,

ename char(10),

job char(5),

sal decimal(7,2) ) in OZAMATDB.OZAMATTS

#ALTER TABLE

Alter table emp add deptno int

#DROP TABLE

Drop table emp

DCL COMMANDS

Ø Grant all on emp to public /* Allows all users to perofrm all operations on table emp */

Ø Revoke alter on emp to public /* Donot allow any user to perform alter operation on table emp

Page 39: Mainframes

DDL COMMANDS

#INSERT

Insert into emp(100, 'James', 'clerk', 5000) /* ALL COLUMNS */

Insert into emp(eno,ename) values(101,'shah') /* SPECIFIC COLUMNS */

#UPDATE

Update emp set sal=5500 where eno=100

#DELETE

Ø Delete from emp /* DELETE ALL ROWS */

Ø Delete from emp where eno=101 /* DELETE SPECIFIC ROWS */

#SELECT

Ø Select * from emp /* To View All Rows with all columns*/

Ø Select eno, ename from emp /* To View all rows but specific columns */

Ø Select * from emp where eno=100 /* To View specific rows and all columns */

Ø Select eno,ename feom emp where eno=100 /* To view specific columns with specific rows */

Page 40: Mainframes

#COLUMN & SCALAR FUNCTIONS

Ø Select Max(sal) from emp /* Returns Maximum Salary */

Ø Select Min(sal) from emp /* Returns Least salary */

Ø Select Avg(sal) from emp /* Returns Average of all salaries */

Ø Select Sum(sal) from emp /* Returns Sum of all salaries */

Ø Select Count(eno) from emp /* Returns count employees */

Ø Select distinct(eno) from emp /* Returns unique eno values elimnating duplicates */

Ø Select * from emp order by sal desc /* Returns all rows in ascending order of salaries */

Ø Select Sum(sal) from emp group by deptno /* Returns sum of salaries for each dept */

Ø Select * from emo where sal between 5000 AND 7000 /* returns details of employees having salary between 5000 and 7000*/

Ø Select * from emp where eno NOT IN (100,200) /* Returns details of all employees except the employees bearing eno 100 and 200) */

Ø Select * from emp where eno = 100 AND sal = 5000 /* returns details of employees who are having eno as 101 and salary as 5000 */

Ø Select * from emp where eno=100 OR sal = 5000 /* returns details of employees who are having eno as 101 or salary as 5000 */

Ø Select * from emp where ename like '%s' /* returns details of employees whose names ends with letter S */

Ø Select * from emp where substr(ename,4,1) = 'A' /* returns details of employees having 4th letter as A in their names */

Page 41: Mainframes

UNION & UNION ALL

Ø Select eno,ename from emp where sal > 5000 UNION

Select eno,ename from emp where sal > 3000

Ø Select eno,ename from emp where sal > 5000 UNION ALL

Select eno,ename from emp where sal > 3000

VIEWS

Ø Create view empview on emp as select * from emp /* creating View*/

Ø Select * from empview /*querying a view*/

Ø Drop empview /*deleting a view */

JOINS

Assume two tables emp and emp1 with common column eno

Ø Select * from emp join emp1 on emp.eno = emp1.eno

Ø Select * from emp right outer join emp1 on emp.eno = emp1.eno

Ø Select * from emp left outer join emp1 on emp.eno = emp1.eno

Ø Select * from emp full outer join emp1 on emp.eno = emp1.eno

Page 42: Mainframes

TASKS ON QUERIES

Emp

Eno Ename Job Sal Deptno Comm

100 Yuvraj HR 5000 1 200

101 Kholi Manager 10000 2 null

102 Raina Clerk 3000 3 300

100 Sachin DBA 2000 4 250

103 Yusaf Clerk null 3 400

104 Sreesanth null 6000 3 null

105 Dhoni DBA 6500 4 600

105 Rohit MANAGER 8000 2 250

106 Dravid HR 12000 1 null

102 Dhoni Security 4700 5 500

Dept

Deptno Deptname

1 s/w

2 Admin

3 Development

4 Database

5 GUI

1) write query to display data of employees having salary greater than 5000?

2) write query to data of employees having salary range between 7,000 and 10,000?

3) write query to display data of employees having more than one job?

4) write query to display data of employees having sal+comm more than 7000?

5) write query to display sum of sal and comm under a column named totalsal?

6) write a query to display 2nd maximum salary?

7) write a query to display top most 10 salaries?

8) write a query to display 1st max and 2nd max salaries?

9) Writye a query to display employee data in ascending order based on their salaries?

10) write a query to display unique eno's?

11) Write a query to group data based on job?

12) Write a query to display data of depts spending more than 10,000 on their salaries?

Page 43: Mainframes

13) Write a query to display number of rows in your table?

14) Write a query to display data of employees who are not clerks?

15) Write a query to display the count of employees having more than one job?

16) Write a query to display data of employees department wise?

17) Write a query to display to concat two columns eno and ename?

18) Write a query to display names of employees whose names start with Y?

19) Write a query to display names of employees having 2nd letter as A in their names?

20) Write a query to display types of jobs in table?

21) Write a query to display data of employees who are having job as clerk and earning more than 5000?

22) write a query to display data of employees having job as manager or earning less than 7000?

23) write a query to display numbers of departments ?

24) Write a quety to create view for emp table to display names of employees having sal+comm less than

6300?

25) Write a query to display details of all managers?

26) Write a query to display details of all managers having comm as null?

27) Write a query to display details of employees having null values as their salaries?

28) Write a query to display details of employees having salary but null as their comm?

29) Write a query Insert 500/- as comm for all employees having null values as their comm?

30) Write a query to update employees salaries of all depratments with 20% hike?

31) Write a query to update comm of all managers with hike of 200/-?

32) write a query to cut salaries of clerks by 100/-?

33) write a query to display data from view created in above query?

34) Write a query to update above view adding 300 sal to each employee?

35) Write a query to display sal+500 under psuedo column newsal?

36) Write a query using joins to display data of employees along with thier department names?

37) Apply right outer join on emp and dept table?

38) Apply left outer join on emp and dept table?

39) Apply full outer join on emp and dept table?

40) Create a table named empdup with number, name, deptno as columns and number as primary key?

41) Create a table deptdup with deptno,deptname as columns with deptno as primary key?

42) Apply foreign key constraint on deptno in deptdup table to deptno in empdup table?

43) Create index on empname column in empdup table? 44) Create unique index on deptno in deptdup table? 45) Write a query to insert details of all employees from emp table to empdup table? 46) Write a query to insert details of all employees having sal greater than 5000 into empdup table? 47) Write a query to display eno,ename and deptname using emp and dept table? 48) Write a query to display list of all employees in emp table but not in empdup table? 49) Write a query to display detials of employees who are in both emp and empdup table? 50) Write a query to display sum of salaries of emp and empdup?

Page 44: Mainframes

APPLICATION PROGRAMMING(COBOL+DB2)

#CREATE

ID DIVISION.

PROGRAM-ID. CREATE.

DATA DIVISION.

WORKING-STORAGE SECTION.

EXEC SQL

INCLUDE SQLCA

END-EXEC.

PROCEDURE DIVISION.

EXEC SQL

CREATE TABLE PLAYERS (PLYORD INT, PLYNM CHAR(20),

PLYSTAT CHAR(20), PLYSCR INT)

IN OZAMATDB.OZAMATTS

END-EXEC.

IF SQLCODE = 00

DISPLAY "SUCCESS"

ELSE

DISPLAY "ERROR IN TABLE" SQLCODE

END-IF.

STOP RUN.

Page 45: Mainframes

#INSERT

ID DIVISION.

PROGRAM-ID. CREATE.

DATA DIVISION.

WORKING-STORAGE SECTION.

EXEC SQL

INCLUDE SQLCA

END-EXEC.

EXEC SQL

INCLUDE PLAYERSDCL

END-EXEC.

PROCEDURE DIVISION.

MOVE 01 TO HV-PLYORD.

MOVE 'SACHIN' TO HV-PLYNM.

MOVE 'BATSMAN' TO HV-PLYSTAT.

MOVE 100 TO HV-PLYSCR.

EXEC SQL

INSERT INTO PLAYERS VALUES(:HV-PLYORD,:HV-PLYNM,

:HV-PLYSTAT,:HV-PLYSCR)

END-EXEC.

IF SQLCODE = 00

DISPLAY "INSERTED"

ELSE

DISPLAY "DATA NOT INSERTED" SQLCODE

END-IF.

STOP RUN.

Page 46: Mainframes

#SELECT

ID DIVISION.

PROGRAM-ID. CREATE.

DATA DIVISION.

WORKING-STORAGE SECTION.

EXEC SQL

INCLUDE SQLCA

END-EXEC.

EXEC SQL

INCLUDE PLAYERSDCL

END-EXEC.

PROCEDURE DIVISION.

MOVE 1 TO HV-PLYORD.

EXEC SQL

SELECT INTO

:HV-PLYORD, :HV-PLYNM, :HV-PLYSTAT ,:HV-PLYSCR

FROM PLAYERS

WHERE PLYORD = :HV-PLYORD

END-EXEC.

IF SQLCODE = 00

DISPLAY HV-PLYORD.

DISPLAY HV-PLYNM.

DISPLAY HV-PLYSTAT.

DISPLAY HV-PLYSCR.

ELSE

DISPLAY "NO DATA SELECTED" SQLCODE

END-IF.

STOP RUN.

Page 47: Mainframes

#CURSOR

ID DIVISION.

PROGRAM-ID. CREATE.

DATA DIVISION.

WORKING-STORAGE SECTION.

EXEC SQL

INCLUDE SQLCA

END-EXEC.

EXEC SQL

INCLUDE PLAYERSDCL

END-EXEC.

EXEC SQL

DECLARE PLYCUR CURSOR FOR

SELECT * FROM .PLAYERS

END-EXEC.

PROCEDURE DIVISION.

EXEC SQL

OPEN CUR

END-EXEC.

PERFORM SQLCODE = 100

EXEC SQL

FETCH PLYCUR INTO

:HV-PLYORD,

:HV-PLYNM,

:HV-PLYSTAT ,

:HV-PLYSCR

END-EXEC.

Page 48: Mainframes

IF SQLCODE = 00

DISPLAY HV-PLYORD.

DISPLAY HV-PLYNM.

DISPLAY HV-PLYSTAT.

DISPLAY HV-PLYSCR.

ELSE

DISPLAY "NO DATA SELECTED" SQLCODE

END-IF.

END-PERFORM.

EXEC SQL

CLOSE PLYCUR

END-EXEC.

STOP RUN.

TASKS

1) write a program to update data of player whose plyord is 1? 2) write a program to details of players having score less than 1000 runs? 3) write a program to fetch data from player table and write to sequential file? 4) Write a program to read data from file and insert in to player table? 5) Write a program to read data from file and insert in to bat table if player is batsman and in to ball

table if he is bowler? 6) Write a program to read data from player table and insert in to batsman file if plystst is batsman and

in to bowler file if plystat is bowler?

Page 49: Mainframes

VSAM -Virtual Storage Access Methods

Ø DEFINING CLUSTERS ü ESDS ü KSDS ü RRDS

Ø RENAMING CLUSTER

Ø IMPORTING DATA

Ø EXPORTING DATA

Ø REPRO

ü INDS ü OUTDS ü FROMKEY/TOKEY ü STOP ü SKIP ü REPLACE ü REUSE

Ø LISTCAT

Ø DEFINING ALTERNATE INDEX

Ø BUILDING PATH

Ø BUILDING ALTERNATE INDEX

Ø PRINT CLUSTER (TO SPOOL)

Ø COBOL + VSAM ü WRITE ü READ ü RE-WRITE

Page 50: Mainframes

DEFINING CLUSTERS #ESDS //MAT045ES JOB NOTIFY=&SYSUID //STEP001 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * DEFINE CLUSTER (-

NAME (MAT007.MAT.ESDS)- RECORDSIZE (29,80)- CYLINDERS (3,2)- CISZ (4096)- NONINDEXED) /* // #KSDS //MAT055KS JOB NOTIFY=&SYSUID //STEP001 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * DEFINE CLUSTER (-

NAME (OZASUP.SUP.KSDS)- RECORDSIZE (29,80)- CYLINDERS (3,2)- FREESPACE (10,20)- KEYS (4,0)- CISZ (4096)- INDEXED) /*

Page 51: Mainframes

#RRDS //MAT055KS JOB NOTIFY=&SYSUID //STEP001 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * DEFINE CLUSTER (-

NAME (OZASUP.SUP.RRDS)- RECORDSIZE (80,80)- CYLINDERS (3,2)- VOLUME (MAT02)- NUMBERED) /* // #RENAMING CLUSTER //MAT122RP JOB NOTIFY=&SYSUID //S1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * ALTER- MAT211.MAT.ESDS.DATA- NEWNAME (MAT211.MONK.ESDS.DATA) /*

Page 52: Mainframes

#IMPORTING DATA //MAT211AA JOB NOTIFY=&SYSUID //STEPNAME EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //DD1 DD DSN=MAT211.MAT.BACKUP, DISP=SHR //SYSIN DD * IMPORT INFILE (DD1) - OUTDATASET (MAT211.MAT.ESDS) /* #EXPORTING DATA //MAT211AA JOB NOTIFY=&SYSUID //STEPNAME EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //DD1 DD DSN=MAT211.MAT.BACKUP, DISP=SHR //SYSIN DD * EXPORT MAT211.MAT.ESDS - OUTFILE (DD1) - ERASE - PERMANENT /* //

Page 53: Mainframes

#REPRO /MAT033EX JOB NOTIFY=&SYSUID //ACT001 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * REPRO - INDATASET (MAT022.MAT.PS2)- OUTDATASET (MAT026.MAT.KSDS10) FROMKEY (100)- TOKEY (150) SKIP (3)- COUNT (3) REPLACE /* To Replace existing Records REUSE /* Applicable only for KSDS , SHLD BE DEFINED WHILE DEFINING CLUSTER /* // #LISTCAT //MAT153LS JOB NOTIFY=&SYSUID //S1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * LISTCAT ENTRIES (MAT211.MAT.KSDS) ALL /*

Page 54: Mainframes

# DEFINING ALTERNATE INDEX //MAT035EX JOB NOTIFY=&SYSUID,PRTY=15 //ACT001 EXEC PGM=IDCAMS //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE AIX (- NAME (MAT022.MONK.KSDKS.ALTX)- RELATE (MAT022.MONK.VSAM.KSDS)- KEYS (05, 20)- TRK (2, 1)- NONUNIQUEKEY- FREESPACE (20,20) ) /* // #BUILDING PATH //MAT211ES JOB NOTIFY=&SYSUID //S1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE PATH (NAME (MAT211.MAT.KSDS.PATH)- PATHENTRY (MAT211.MAT.KSDS.AIX1)- UPDATE ) /* //

Page 55: Mainframes

# BUILDING ALTERNATE INDEX //MAT035EX JOB NOTIFY=&SYSUID, PRTY=15 //ACT001 EXEC PGM=IDCAMS //SYSUT1 DD DSN=MAT022.MONK.VSAM.KSDS,DISP=SHR //SYSUT2 DD DSN=MAT022.MONK.KSDKS.ALTX,DISP=SHR //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSIN DD * BLDINDEX- INFILE (SYSUT1)- OUTFILE (SYSUT2) /* // #PRINT CLUSTER (TO SPOOL) //MAT133PR JOB NOTIFY=&SYSUID //S1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * PRINT INDATASET (MAT211.MAT.KSDS) CHAR /*

Page 56: Mainframes

#COBOL + VSAM

# KSDS WRITE

ID DIVISION.

PROGRAM-ID. INDX.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT EMP-FILE ASSIGN TO PRANEETH

ORGANIZATION IS INDEXED

ACCESS MODE IS RANDOM

RECORD KEY IS ENO.

DATA DIVISION.

FILE SECTION.

FD EMP-FILE.

01 EMP-REC.

02 ENO PIC X(10).

02 ENAME PIC X(10).

02 FILLER PIC X(60).

WORKING-STORAGE SECTION.

01 X PIC X(1).

PROCEDURE DIVISION.

OPEN OUTPUT EMP-FILE.

PERFORM 5 TIMES

ACCEPT ENO

ACCEPT ENAME

WRITE EMP-REC

END_PERFORM.

CLOSE EMP-FILE.

STOP RUN.

Page 57: Mainframes

#REWRITE KSDS

ID DIVISION.

PROGRAM-ID. INDX.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT EMP-FILE ASSIGN TO PRANEETH

ORGANIZATION IS INDEXED

ACCESS MODE IS RANDOM

RECORD KEY IS ENO.

DATA DIVISION.

FILE SECTION.

FD EMP-FILE.

01 EMP-REC.

02 ENO PIC X(10).

02 ENAME PIC X(10).

02 FILLER PIC X(60).

WORKING-STORAGE SECTION.

01 X PIC X(1).

PROCEDURE DIVISION.

OPEN I-O EMP-FILE.

MOVE '102' TO ENO

READ EMP-FILE

INVALID KEY

DISPLAY "NOT FOUND"

NOT INVALID KEY

DISPLAY 'B4 UPDATE' EMP-REC

MOVE 'T.NARESH' TO ENAME

REWRITE EMP-REC

END-READ.

CLOSE EMP-FILE.

STOP RUN.

Page 58: Mainframes

# READ KSDS

ID DIVISION.

PROGRAM-ID. INDX.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT EMP-FILE ASSIGN TO PRANEETH

ORGANIZATION IS INDEXED

ACCESS MODE IS RANDOM

RECORD KEY IS ENO.

DATA DIVISION.

FILE SECTION.

FD EMP-FILE.

01 EMP-REC.

02 ENO PIC X(10).

02 ENAME PIC X(10).

02 FILLER PIC X(60).

WORKING-STORAGE SECTION.

01 X PIC X(1).

PROCEDURE DIVISION.

OPEN INPUT EMP-FILE.

MOVE '104' TO ENO

READ EMP-FILE

INVALID KEY

DISPLAY "NOT FOUND"

NOT INVALID KEY

DISPLAY EMP-REC

END-READ.

CLOSE EMP-FILE.

STOP RUN.