You are on page 1of 58

MAINFRAMES

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



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




# 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.







# 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.








# 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.


# 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.






# 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.







#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.








# 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.






#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.
#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.



# 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.










#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.






#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.







#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.






#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.
#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.
#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.
#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.
#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)

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

#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.






#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.

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?
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?








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


#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 *

/*

//








#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 *

/*

//








#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 CSURYA)

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)
/

/*

//











#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

/*
//











#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

/*
//









#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

//



#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 *
/*

//











#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 *
/*

//












#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)
/*











# 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

/*
//












#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
//







DB2

DDL
DCL
DML
COLUMN FUNCTIONS
SCALAR FUNCTIONS
VIEWS
JOINS
UNIOUN
UNIOUN ALL
APPLICATION PROGRAMMING.
CREATE
INSERT
SELECT
CURSORS















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






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 */





#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 4
th
letter
as A in their names */



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


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 2
nd
maximum salary?
7) write a query to display top most 10 salaries?
8) write a query to display 1
st
max and 2
nd
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?
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 2
nd
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?

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.








#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.
#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.

#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.


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?



















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





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)
/*




#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)
/*












#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
/*
//








#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

/*











# 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 )

/*
//






# 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

/*












#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.







#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.





# 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.

You might also like