Beruflich Dokumente
Kultur Dokumente
07MCA26
INDEX
N TITLE PAGE
O NO
INTRODUCTION OF COBOL 3–5
1 WRITE A PROGRAM FOR THE FOLLOWING: 6–7
1.1. Evaluate the following equation using COMPUTE Verb.
Z= (A-B)*C.
1.2. To Find the sum of individual digits in the given ‘n’ digit
Decimal Number.
2 WRITE A PROGRAM FOR THE FOLLOWING: 8– 10
2.1. Generate Odd and Even numbers between the given limits using
PERFORM statement.
2.2. Sorting Numeric Numbers.
3 BY USING TABLE HANDLING CONCEPTS, WRITE A PROGRAM FOR 11 – 14
3.1. Sorting Alphanumeric data.
3.2. Searching Numeric Number using SEARCH verb.
4 BY USING TABLE HANDLING CONCEPTS, WRITE A PROGRAM FOR MATRIX 15– 17
ADDITION AND MATRIX SUBTRACTION.
5 BY USING TABLE HANDLING CONCEPTS, WRITE A PROGRAM FOR MATRIX 18 – 20
MULTIPLICATION.
SEQUENTIAL FILE 21 - 22
SORTING AND MERGING 23
6 WRITE A PROGRAM FOR THE FOLLOWING: 24 – 35
6.1. To SORT records in the file using SORT verb.
6.2. To merge files using MERGE verb.
7 WRITE A PROGRAM TO READ EMPLOYEE FILE AS A SEQUENTIAL FILE AND 36 – 39
CALCULATE GROSS PAY AND NET PAY FOR EMPLOYEE IN THE
ORGANIZATION.
8 WRITE A PROGRAM TO STORE STUDENT DETAILS WITH RESULTS IN A FILE 40 – 44
WITH SEQUENTIAL FILE HANDLING TECHNIQUES.
9 WRITE A PROGRAM TO UPDATE A MASTER SEQUENTIAL FILE USING A 45– 50
SEQUENTIAL TRANSACTION FILE.
INDEX FILE 51 – 52
10 USING THE INDEX FILE ORGANIZATION, WRITE A PROGRAM TO STORE 53 – 60
EMPLOYEE DETAILS.
11 USING THE INDEX FILE ORGANIZATION, WRITE A PROGRAM TO UPDATE 61 – 64
THE EMPLOYEE SALARY (INCREASE DA BY 3%).
12 WRITE A PROGRAM FOR THE FOLLOWING: 65 – 73
12.1. To DELETE a Record in the INDEX file.
12.2. To SEARCH a Record in the INDEX file.
RELATIVE FILE 74 – 75
Introduction to COBOL
To move the cursor from top section to below section and vice
versa you press F3 X.
To RUN the program
C:\MCA>RUNCOB TEST.COB
If you are working on file programs then you have to open
input-file and give data to it, and to see the result open the
output-file.
F3 S → SAVE
F3 E → SAVE and EXIT
F3 X → EXCHANGE WINDOWS
Coding format for COBOL Programs
Position Field
1–6 Sequence
7 Indicator (e.g.:- / for comment line)
8 – 11 Area A
12 – 72 Area B
73 – 80 Identification.
[SECURITY. entry.]
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. entry.
OBJECT-COMPUTER. entry.
[SPECIAL NAMES. entry.]
[INPUT-OUTPUTSECTION.
FILE-CONTROL. entry.
[I-O-CONTROL. entry.]
DATA DIVISION.
[FILE SECTION.
File section entries…
…………………….]
[WORKING-STORAGE SECTION.
Working-storage entries…
…………………….]
PROCEDURE DIVISION.
{section-name SECTION.
[PARAGRAPH-NAME. [SENTENCE]…]…}…
Advantages:
-Simple and user-friendly language.
-Portable.
-Maintainable
Disadvantages:
-Very wordy and too lengthy.
-Very rigid format. This rigidity causes many errors in coding
and contributes to the difficulty of learning the language.
-Not designed to handle scientific applications.
-Less interactive.
IDENTIFICATION DIVISION.
PROGRAM-ID. EQUA.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 9(3).
77 B PIC 9(3).
77 C PIC 9(3).
77 Z PIC 9(5).
77 EZ PIC Z(4)99.
PROCEDURE DIVISION.
PARA.
DISPLAY "ENTER THE VALUES FOR A , B AND C".
ACCEPT A.
ACCEPT B.
ACCEPT C.
COMPUTE Z = ( A - B ) * C.
MOVE Z TO EZ.
DISPLAY "THE VALUE IS" EZ.
STOP RUN.
======================SAMPLE
OUTPUT======================
IDENTIFICATION DIVISION.
PROGRAM-ID. SUMM.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NUM PIC 9999.
77 I PIC 9 VALUE 0.
77 S PIC 99 VALUE 0.
77 Q PIC 99.
77 R PIC 99.
PROCEDURE DIVISION.
PARA-1.
DISPLAY "ENTER NUMBER".
ACCEPT NUM.
PERFORM PARA-2 UNTIL NUM <= 0.
DISPLAY "SUM = " S.
STOP RUN.
PARA-2.
DIVIDE NUM BY 10 GIVING NUM REMAINDER R.
COMPUTE S = S + R.
======================SAMPLE
OUTPUT======================
ENTER NUMBER
136
SUM = 10
IDENTIFICATION DIVISION.
PROGRAM-ID. ODDEVEN.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 LIM PIC 99.
77 I PIC 99.
PROCEDURE DIVISION.
PARA-1.
DISPLAY "ENTER THE RANGE".
ACCEPT LIM.
DISPLAY "LIST OF EVEN NUMBERS".
PERFORM PARA-2 VARYING I FROM 2 BY 2 UNTIL I > LIM.
DISPLAY "LIST OF ODD NUMBERS".
PERFORM PARA-3 VARYING I FROM 1 BY 2 UNTIL I > LIM.
STOP RUN.
PARA-2.
DISPLAY I.
PARA-3.
DISPLAY I.
======================SAMPLE
OUTPUT======================
07
09
PROGRAM 2.2: PROGRAM TO SORT NUMERIC NUMBERS.
IDENTIFICATION DIVISION.
PROGRAM-ID. SORTNUM.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUMARRAY.
02 A PIC 99 OCCURS 10 TIMES.
77 I PIC 99.
77 J PIC 99.
77 LIM PIC 99.
77 TEMP PIC 99.
77 K PIC 99.
PROCEDURE DIVISION.
PARA-1.
DISPLAY "ENTER THE RANGE".
ACCEPT LIM.
PERFORM ACC-PARA VARYING I FROM 1 BY 1 UNTIL I > LIM.
PERFORM PARA-2 VARYING I FROM 1 BY 1 UNTIL I > LIM.
DISPLAY "LIST OF SORTED NUMBERS".
PERFORM DISP-PARA VARYING I FROM 1 BY 1 UNTIL I > LIM.
STOP RUN.
ACC-PARA.
DISPLAY "ENTER THE NUMBER".
ACCEPT A(I).
DISP-PARA.
DISPLAY A(I).
PARA-2.
COMPUTE K = I + 1.
PERFORM PARA-3 VARYING J FROM K BY 1 UNTIL J > LIM.
PARA-3.
IF A(I) > A(J)
MOVE A(I) TO TEMP
MOVE A(J) TO A(I)
MOVE TEMP TO A(J).
======================SAMPLE
OUTPUT======================
IDENTIFICATION DIVISION.
PROGRAM-ID. SORTA.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ANUMARRAY.
02 NAME PIC X(15) OCCURS 10 TIMES.
77 I PIC 99.
77 J PIC 99.
77 LIM PIC 99.
77 TEMP PIC X(10).
77 K PIC 99.
PROCEDURE DIVISION.
PARA-1.
DISPLAY "ENTER THE RANGE".
ACCEPT LIM.
PERFORM ACC-PARA VARYING I FROM 1 BY 1 UNTIL I > LIM.
PERFORM PARA-2 VARYING I FROM 1 BY 1 UNTIL I > LIM.
DISPLAY "LIST OF SORTED NAMES".
PERFORM DISP-PARA VARYING I FROM 1 BY 1 UNTIL I > LIM.
STOP RUN.
ACC-PARA.
DISPLAY "ENTER THE NAME".
ACCEPT NAME(I).
DISP-PARA.
DISPLAY NAME(I).
PARA-2.
COMPUTE K = I + 1.
PERFORM PARA-3 VARYING J FROM K BY 1 UNTIL J > LIM.
PARA-3.
IF NAME(I) > NAME(J)
MOVE NAME(I) TO TEMP
MOVE NAME(J) TO NAME(I)
MOVE TEMP TO NAME(J).
======================SAMPLE
OUTPUT======================
IDENTIFICATION DIVISION.
PROGRAM-ID. SRCHARR.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUMARRAY.
02 NUM PIC 9(3) OCCURS 5 TIMES INDEXED BY A1.
77 LIM PIC 99.
77 I PIC 9(2).
77 N PIC 9(2).
PROCEDURE DIVISION.
PARA-1.
DISPLAY "ENTER THE RANGE".
ACCEPT LIM.
PERFORM ACC-PARA VARYING I FROM 1 BY 1 UNTIL I > LIM.
DISPLAY "ENTER NUMBER TO BE SEARCHED".
ACCEPT N.
SET A1 TO 1.
SEARCH-PARA.
SEARCH NUM
AT END DISPLAY "NUMBER NOT FOUND"
WHEN N = NUM (A1)
DISPLAY "NUMBER FOUND".
END-PARA.
STOP RUN.
ACC-PARA.
DISPLAY "ENTER THE NUMBER".
ACCEPT NUM(I).
DISP-PARA.
DISPLAY NUM(I).
======================SAMPLE
OUTPUT======================
IDENTIFICATION DIVISION.
PROGRAM-ID. ADDSUBMAT.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MAT.
02 A OCCURS 10 TIMES.
03 B PIC 9(5) OCCURS 10 TIMES.
03 C PIC 9(5) OCCURS 10 TIMES.
03 D PIC 9(2) OCCURS 10 TIMES.
03 E PIC 9(2) OCCURS 10 TIMES.
77 M PIC 999.
77 N PIC 999.
77 P PIC 999.
77 Q PIC 999.
77 I PIC 999.
77 J PIC 999.
PROCEDURE DIVISION.
PARA-1.
DISPLAY "ENTER THE ORDER OF MATRIX1".
ACCEPT M.
ACCEPT N.
DISPLAY "ENTER THE ORDER OF MATRIX2".
ACCEPT P.
ACCEPT Q.
IF M EQUAL TO P AND N EQUAL TO Q
DISPLAY "ENTER THE ELEMENTS OF THE MATRIX1"
PERFORM READ-PARA VARYING I FROM 1 BY 1 UNTIL I>M
AFTER J FROM 1 BY 1 UNTIL J>N
DISPLAY "ENTER THE ELEMENTS OF THE MATRIX2"
PERFORM READ-PARA1 VARYING I FROM 1 BY 1 UNTIL I>P
AFTER J FROM 1 BY 1 UNTIL J>Q
ELSE
DISPLAY "ORDERS ARE INVALID".
STOP RUN.
READ-PARA.
ACCEPT B(I,J).
READ-PARA1.
ACCEPT C(I,J).
ADD-PARA.
COMPUTE D(I,J) = B(I,J) + C(I,J).
SUB-PARA.
COMPUTE E(I,J) = B(I,J) - C(I,J).
DISP-PARA.
DISPLAY D(I,J).
DISP-PARA-1.
DISPLAY E(I,J).
======================SAMPLE
OUTPUT======================
IDENTIFICATION DIVISION.
PROGRAM-ID. MATMUL.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MAT.
02 A OCCURS 10 TIMES.
03 B PIC 9(5) OCCURS 10 TIMES.
03 C PIC 9(5) OCCURS 10 TIMES.
03 D PIC 9(2) OCCURS 10 TIMES.
77 M PIC 999.
77 K PIC 999.
77 N PIC 999.
77 P PIC 999.
77 Q PIC 999.
77 I PIC 999.
77 J PIC 999.
PROCEDURE DIVISION.
PARA-1.
DISPLAY "ENTER THE ORDER OF MATRIX1".
ACCEPT M.
ACCEPT N.
DISPLAY "ENTER THE ORDER OF MATRIX2".
ACCEPT P.
ACCEPT Q.
IF M EQUAL TO P AND N EQUAL TO Q
DISPLAY "ENTER THE ELEMENTS OF THE MATRIX1"
PERFORM READ-PARA VARYING I FROM 1 BY 1 UNTIL I>M
AFTER J FROM 1 BY 1 UNTIL J>N
DISPLAY "ENTER THE ELEMENTS OF THE MATRIX2"
PERFORM READ-PARA1 VARYING I FROM 1 BY 1 UNTIL I>P
AFTER J FROM 1 BY 1 UNTIL J>Q
DISPLAY "THE MULTIPLICATION MATRIX IS"
PERFORM CALC-PARA VARYING I FROM 1 BY 1 UNTIL I>M
AFTER J FROM 1 BY 1 UNTIL J>Q
READ-PARA.
ACCEPT B(I,J).
READ-PARA1.
ACCEPT C(I,J).
CALC-PARA.
COMPUTE D(I,J) = 0.
PERFORM CALC-PARA1 VARYING K FROM 1 BY 1 UNTIL K>N.
CALC-PARA1.
COMPUTE D(I,J) = D(I,J) + B(I,K) * C(K,J).
DISP-PARA.
DISPLAY D(I,J).
======================SAMPLE
OUTPUT======================
FILE CONCEPTS
SEQUENTIAL FILES
A Sequential file is a file, whose records can be accessed in the order of their
appearance in the file.
AREAS
[; ORGANIZATION IS SEQUENTIAL ]
All Sequential files basically have 3 verbs. These are READ, WRITE, REWRITE.
In addition, there are OPEN & CLOSE verbs.
(i) OPEN STATEMENT: A file can be opened in any one of the 4 open modes –
INPUT, OUTPUT, EXTEND and I-O. When a file is opened in a INPUT mode,
it becomes an input file. When a file should be created for the first time it
must be opened in the OUTPUT mode. The EXTEND mode is useful when
an existing file should be appended by adding new records at its end.
When a file is opened in the I-O mode records can be read through READ
statements & can be written on the file through the REWRITE statement.
The WRITE statement cannot be used for the files opened in the I-O mode.
OPEN INPUT
EXTEND
I-O
INPUT
EXTEND
I-O
(ii) CLOSE STATEMENT: The CLOSE statement terminates the processing of the
file. As a result of the execution of the CLOSE statement, the IOCS
performs the end of file processing. When a CLOSE statement is executed,
the file must be open.
SORT VERB :
The SORT verb form is to be used when it is required to sort a given input
file. The input file is not disturbed; instead, a new output file containing the
records in a sorted order is created. Besides the input and output files, the
SORT verb also requires a work file. The work file is used during the process
of sorting. Thus the simple SORT verb requires the naming of three files are
the unsorted input file, the sorted output file and the work file. The format of
the SORT verb is as follows:
ON ASCENDING
DESCENDING KEY data-name-3, data-name-4 ……
File-name-1 is the name of the work file, whereas the names of the input
and output files are to be specified in file-name-2 and file-name-3
respectively. File-name-2 and file-name-3 should be described in the usual
SD file-name
IDENTIFICATION DIVISION.
PROGRAM-ID. SEQSRT.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO DISK.
SELECT S-FILE ASSIGN TO DISK.
SELECT EMP-OUT-FILE ASSIGN TO DISK.
DATA DIVISION.
FILE SECTION.
FD EMP-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "EMP.DAT"
DATA RECORD IS EMP-REC.
01 EMP-REC.
02 EMP-NO PIC 9(2).
02 EMP-NAME PIC X(20).
02 EMP-DEPT PIC X(20).
02 EMP-BP PIC 9(10).
FD EMP-OUT-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "EMP-OUT.DAT"
GO TO READOUT-PARA.
END-PARA.
CLOSE EMP-FILE.
ACCEPT FG.
DISPLAY "LIST OF RECORDS AFTER SORTING".
SORT-PARA.
SORT S-FILE ON DESCENDING KEY S-EMP-NO
USING EMP-FILE GIVING EMP-OUT-FILE.
OPEN INPUT EMP-OUT-FILE.
SORTREAD-PARA.
READ EMP-OUT-FILE AT END GO TO FINAL-PARA.
DISPLAY "EMPLOYEE NUMBER :" O-EMP-NO.
DISPLAY "EMPLOYEE NAME :" O-EMP-NAME.
DISPLAY "EMPLOYEE DEPARTMENT :" O-EMP-DEPT.
DISPLAY "EMPLOYEE BASIC PAY :" O-EMP-BP.
DISPLAY " ".
GO TO SORTREAD-PARA.
FINAL-PARA.
CLOSE EMP-OUT-FILE.
STOP RUN.
======================SAMPLE
OUTPUT======================
EMPLOYEE NO IS: 01
ENTER EMPLOYEE NAME
MOHAN
ENTER EMPLOYEE DEPARTMENT
SALES
ENTER EMPLOYEE BASIC PAY
10000
DO U WANT TO CONTINUE ? Y / N
Y
EMPLOYEE NO IS: 02
ENTER EMPLOYEE NAME
VIJAY
ENTER EMPLOYEE DEPARTMENT
ACCOUNTANT
ENTER EMPLOYEE BASIC PAY
12000
DO U WANT TO CONTINUE ? Y / N
Y
EMPLOYEE NO IS: 03
ENTER EMPLOYEE NAME
VINAY
ENTER EMPLOYEE DEPARTMENT
MARKETING
ENTER EMPLOYEE BASIC PAY
13000
DO U WANT TO CONTINUE? Y / N
N
EMPLOYEE NUMBER : 01
EMPLOYEE NAME : MOHAN
EMPLOYEE DEPARTMENT : SALES
EMPLOYEE BASIC PAY : 10000
EMPLOYEE NUMBER : 02
EMPLOYEE NAME : VIJAY
EMPLOYEE DEPARTMENT : ACCOUNTANT
EMPLOYEE BASIC PAY : 12000
EMPLOYEE NUMBER : 03
EMPLOYEE NAME : VINAY
EMPLOYEE DEPARTMENT : MARKETING
EMPLOYEE BASIC PAY : 13000
EMPLOYEE NUMBER : 03
EMPLOYEE NAME : VINAY
EMPLOYEE DEPARTMENT : MARKETING
EMPLOYEE BASIC PAY : 13000
EMPLOYEE NUMBER : 02
EMPLOYEE NAME : VIJAY
EMPLOYEE DEPARTMENT : ACCOUNTANT
EMPLOYEE BASIC PAY : 12000
EMPLOYEE NUMBER : 01
EMPLOYEE NAME : MOHAN
EMPLOYEE DEPARTMENT : SALES
EMPLOYEE BASIC PAY : 10000
MERGE VERB:
The merging of the files can also be done in COBOL with the help of the
MERGE verb. It is possible to merge two or more files with one MERGE
statement. The format of the simple MERGE verb is as follows:
MERGE file-name-1
ASCENDING
ON KEY data-name-1 [ , data-name-2 ] …
DESCENDING
ON ASCENDING
DESCENDING KEY data-name-2 [, data-name-4] …….
IDENTIFICATION DIVISION.
PROGRAM-ID. SEQMERGE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT A-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT B-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT C-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT S-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD A-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "A.DAT"
BLOCK CONTAINS 2 RECORDS
DATA RECORD IS A-REC.
01 A-REC.
02 A-EMP-NO PIC 9(2).
02 A-EMP-NAME PIC X(20).
02 A-EMP-DEPT PIC X(20).
02 A-EMP-BP PIC 9(10).
FD B-FILE
WRITE A-REC.
DISPLAY "DO U WANT TO CONTINUE ? Y / N".
ACCEPT ANS.
IF ANS = "Y" GO TO READ1-PARA.
CLOSE1-PARA.
CLOSE A-FILE.
OPEN OUTPUT B-FILE.
READ2-PARA.
DISPLAY "ENTER RECORDS FOR II FILE".
DISPLAY "ENTER EMPLOYEE NO".
ACCEPT B-EMP-NO.
DISPLAY "ENTER EMPLOYEE NAME".
ACCEPT B-EMP-NAME.
DISPLAY "ENTER EMPLOYEE DEPARTMENT".
ACCEPT B-EMP-DEPT.
DISPLAY "ENTER EMPLOYEE BASIC PAY".
ACCEPT B-EMP-BP.
WRITE B-REC.
DISPLAY "DO U WANT TO CONTINUE ? Y / N".
ACCEPT ANS.
IF ANS = "Y" GO TO READ2-PARA.
CLOSE2-PARA.
CLOSE B-FILE.
OPEN INPUT A-FILE.
PERFORM DISP-PARA1.
CLOSE-A-PARA.
CLOSE A-FILE.
OPEN INPUT B-FILE.
PERFORM DISP-PARA2.
CLOSE-B-PARA.
CLOSE B-FILE.
MERGE S-FILE ON ASCENDING KEY S-EMP-NO
USING A-FILE, B-FILE
GIVING C-FILE.
OPEN INPUT C-FILE.
DISPLAY " ".
DISPLAY "LIST OF RECORDS AFTER MERGING".
PERFORM DISPOUT-PARA.
FINAL-PARA.
CLOSE C-FILE.
STOP RUN.
DISP-PARA1.
READ A-FILE AT END GO TO CLOSE-A-PARA.
DISPLAY " ".
=====================SAMPLE
OUTPUT======================
EMPLOYEE NUMBER : 01
EMPLOYEE NAME : VIJAY
EMPLOYEE DEPARTMENT : SALES
EMPLOYEE BASIC PAY : 23000
EMPLOYEE NUMBER : 03
EMPLOYEE NAME : MOHAN
EMPLOYEE DEPARTMENT : ACCOUNTING
EMPLOYEE BASIC PAY : 24000
EMPLOYEE NUMBER : 02
EMPLOYEE NAME : HARISH
EMPLOYEE DEPARTMENT : MARKETING
EMPLOYEE BASIC PAY : 30000
EMPLOYEE NUMBER : 04
EMPLOYEE NAME : PRASHANTH
EMPLOYEE DEPARTMENT : FINANCE
EMPLOYEE BASIC PAY : 35000
EMPLOYEE NUMBER : 01
EMPLOYEE NAME : VIJAY
EMPLOYEE NUMBER : 02
EMPLOYEE NAME : HARISH
EMPLOYEE DEPARTMENT : MARKETING
EMPLOYEE BASIC PAY : 30000
EMPLOYEE NUMBER : 03
EMPLOYEE NAME : MOHAN
EMPLOYEE DEPARTMENT : ACCOUNTING
EMPLOYEE BASIC PAY : 24000
EMPLOYEE NUMBER : 04
EMPLOYEE NAME : PRASHANTH
EMPLOYEE DEPARTMENT: FINANCE
EMPLOYEE BASIC PAY : 35000
IDENTIFICATION DIVISION.
PROGRAM-ID. SEQFILE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO DISK.
DATA DIVISION.
FILE SECTION.
FD EMP-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "EMP.DAT"
DATA RECORD IS EMP-REC.
01 EMP-REC.
02 EMP-NO PIC 9(2).
02 EMP-NAME PIC X(20).
02 EMP-DEPT PIC X(20).
02 EMP-SAL.
03 BPAY PIC 9(10).
03 DA PIC 9(5).
03 HRA PIC 9(8).
03 DED PIC 9(8).
03 GROSSPAY PIC 9(10).
03 NETPAY PIC 9(10).
WORKING-STORAGE SECTION.
77 NUM PIC 9(3) VALUE ZERO.
77 ANS PIC X(2) VALUE SPACES.
77 N PIC 9.
77 BP PIC Z(10).
77 GP PIC Z(10).
77 NP PIC Z(10).
77 C PIC XX.
PROCEDURE DIVISION.
OPEN-PARA.
OPEN OUTPUT EMP-FILE.
READ-PARA.
DISPLAY "ENTER EMPLOYEE NO".
ACCEPT EMP-NO.
DISPLAY "ENTER EMPLOYEE NAME".
ACCEPT EMP-NAME.
DISPLAY "ENTER EMPLOYEE DEPARTMENT".
ACCEPT EMP-DEPT.
DISPLAY "ENTER EMPLOYEE BASIC PAY".
ACCEPT BPAY.
DISPLAY "ENTER EMPLOYEE DEARNESS ALLOWANCE".
ACCEPT DA.
DISPLAY "ENTER EMPLOYEE HRA".
ACCEPT HRA.
DISPLAY "ENTER EMPLOYEE DEDUCTIONS".
ACCEPT DED.
COMPUTE GROSSPAY = BPAY + DA + HRA.
COMPUTE NETPAY = GROSSPAY - DED.
WRITE EMP-REC.
DISPLAY "DO U WANT TO CONTINUE ? Y / N".
ACCEPT ANS.
IF ANS = "Y" GO TO READ-PARA.
CLOSE-PARA.
CLOSE EMP-FILE.
OPEN INPUT EMP-FILE.
READOUT-PARA.
READ EMP-FILE AT END GO TO END-PARA.
DISPLAY "EMPLOYEE NUMBER :" EMP-NO.
DISPLAY "EMPLOYEE NAME :" EMP-NAME.
DISPLAY "EMPLOYEE DEPARTMENT :" EMP-DEPT.
MOVE BPAY TO BP.
DISPLAY "EMPLOYEE BASIC PAY :" BP.
MOVE GROSSPAY TO GP.
DISPLAY "EMPLOYEE GROSS PAY :" GP.
MOVE NETPAY TO NP.
DISPLAY "EMPLOYEE NET PAY :" NP.
ACCEPT C.
GO TO READOUT-PARA.
END-PARA.
CLOSE EMP-FILE.
STOP RUN.
======================SAMPLE
OUTPUT======================
DO U WANT TO CONTINUE ? Y / N
Y
ENTER EMPLOYEE NO
2
ENTER EMPLOYEE NAME
SUBASH
ENTER EMPLOYEE DEPARTMENT
ACCOUNTING
ENTER EMPLOYEE BASIC PAY
30000
ENTER EMPLOYEE DEARNESS ALLOWANCE
700
ENTER EMPLOYEE HRA
400
ENTER EMPLOYEE DEDUCTIONS
600
DO U WANT TO CONTINUE ? Y / N
EMPLOYEE NUMBER : 01
EMPLOYEE NAME : VINAY
EMPLOYEE DEPARTMENT : SALES
EMPLOYEE BASIC PAY : 20000
EMPLOYEE GROSS PAY : 20800
EMPLOYEE NET PAY : 20400
EMPLOYEE NUMBER : 02
EMPLOYEE NAME : SUBASH
EMPLOYEE DEPARTMENT : ACCOUNTING
EMPLOYEE BASIC PAY : 30000
EMPLOYEE GROSS PAY : 31100
EMPLOYEE NET PAY : 30500
IDENTIFICATION DIVISION.
PROGRAM-ID. STURES.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STU-FILE ASSIGN TO DISK.
DATA DIVISION.
FILE SECTION.
FD STU-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "STURES.DAT"
DATA RECORD IS STU-REC.
01 STU-REC.
02 STU-NO PIC 9(3).
02 STU-NAME PIC X(20).
02 STU-DEPT PIC X(20).
02 MRK1 PIC 9(3).
02 MRK2 PIC 9(3).
02 MRK3 PIC 9(3).
02 MRK4 PIC 9(3).
02 MRK5 PIC 9(3).
02 RES1 PIC X(4).
02 RES2 PIC X(4).
02 RES3 PIC X(4).
02 RES4 PIC X(4).
02 RES5 PIC X(4).
02 TOTAL PIC 9(3).
WORKING-STORAGE SECTION.
77 ANS PIC X(2) VALUE SPACES.
77 C PIC XX.
PROCEDURE DIVISION.
OPEN-PARA.
OPEN OUTPUT STU-FILE.
READ-PARA.
DISPLAY "ENTER STUDENT NO".
ACCEPT STU-NO.
DISPLAY "ENTER STUDENT NAME".
ACCEPT STU-NAME.
DISPLAY "ENTER STUDENT DEPARTMENT".
ACCEPT STU-DEPT.
DISPLAY "ENTER MARKS IN COBOL".
ACCEPT MRK1.
DISPLAY "ENTER MARKS IN UNIX".
ACCEPT MRK2.
DISPLAY "ENTER MARKS IN DS".
ACCEPT MRK3.
DISPLAY "ENTER MARKS IN MIS".
ACCEPT MRK4.
DISPLAY "ENTER MARKS IN OR".
ACCEPT MRK5.
IF MRK1 IS > 40 OR MRK1 EQUAL TO 40
MOVE "PASS" TO RES1
ELSE MOVE "FAIL" TO RES1.
WRITE STU-REC.
DISPLAY "DO U WANT TO CONTINUE ? Y / N".
ACCEPT ANS.
IF ANS = "Y" GO TO READ-PARA.
CLOSE-PARA.
CLOSE STU-FILE.
OPEN INPUT STU-FILE.
READOUT-PARA.
READ STU-FILE AT END GO TO END-PARA.
DISPLAY "STUDENT NUMBER :" STU-NO.
DISPLAY "STUDENT NAME :" STU-NAME.
DISPLAY "DEPARTMENT NAME:" STU-DEPT.
DISPLAY " SUBJECT " "MARKS" "RESULT".
DISPLAY " COBOL " MRK1 " " RES1.
DISPLAY " UNIX " MRK2 " " RES2.
DISPLAY " DS " MRK3 " " RES3.
DISPLAY " MIS " MRK4 " " RES4.
DISPLAY " OR " MRK5 " " RES5.
DISPLAY " ".
DISPLAY " TOTAL " TOTAL.
DISPLAY " ".
DISPLAY " ".
ACCEPT C.
GO TO READOUT-PARA.
END-PARA.
CLOSE STU-FILE.
STOP RUN.
======================SAMPLE
OUTPUT======================
ENTER STUDENT NO
1
ENTER STUDENT NAME
VENITHA
ENTER STUDENT DEPARTMENT
MCA
ENTER MARKS IN COBOL
66
ENTER MARKS IN UNIX
78
ENTER MARKS IN DS
34
ENTER MARKS IN MIS
56
ENTER MARKS IN OR
70
DO U WANT TO CONTINUE ? Y / N
Y
ENTER STUDENT NO
2
ENTER STUDENT NAME
TANUJA
ENTER STUDENT DEPARTMENT
MCA
ENTER MARKS IN COBOL
89
ENTER MARKS IN UNIX
39
ENTER MARKS IN DS
67
ENTER MARKS IN MIS
89
ENTER MARKS IN OR
70
DO U WANT TO CONTINUE ? Y / N
N
*****************STUDENT DETAILS*******************
STUDENT NUMBER : 01
STUDENT NAME : VENITHA
DEPARTMENT NAME : MCA
IDENTIFICATION DIVISION.
PROGRAM-ID. FILEUP1.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OLDMAS ASSIGN TO DISK
SELECT TRANS ASSIGN TO DISK.
SELECT NEWMAS ASSIGN TO DISK.
SELECT SORT-FILE ASSIGN TO DISK.
DATA DIVISION.
FILE SECTION.
FD OLDMAS
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "OLDMAS.DAT"
DATA RECORD IS OLDMAS-REC.
01 OLDMAS-REC.
02 O-SALESMANNO PIC 9(5).
02 O-NAME PIC X(20).
02 O-TOTSALES PIC 9(8).
FD TRANS
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "TRANS.DAT"
DATA RECORD IS TRANS-REC.
01 TRANS-REC.
02 T-SALESMANNO PIC 9(5).
02 T-NAME PIC X(20).
02 T-SALES PIC 9(8).
FD NEWMAS
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "NEWMAS.DAT"
DATA RECORD IS NEWMAS-REC.
01 NEWMAS-REC.
02 N-SALESMANNO PIC 9(5).
02 N-NAME PIC X(20).
02 N-TOTSALES PIC 9(8).
SD SORT-FILE.
01 SORT-REC.
02 S-SALESMANNO PIC 9(5).
02 FILLER PIC X(20).
02 FILLER PIC X(20).
WORKING-STORAGE SECTION.
======================SAMPLE
OUTPUT======================
DO U WANT TO CONTINUE ? Y / N
Y
DO U WANT TO CONTINUE ? Y / N
Y
DO U WANT TO CONTINUE ? Y / N
Y
DO U WANT TO CONTINUE ? Y / N
Y
INDEX FILES
To access the records randomly and to identify them by the values of the key rather
than the relative record numbers, the file may be organized an indexed sequential
file.
In Index files, the records are stored in the key sequence order. In addition some
index tables are also created & maintained with the file. The purpose of the index
table is that they provide a means of identifying the groups of records in the file.
Thus in order to have access to a record first the group to which a record belongs is
identified with the help of the index tables. Then the group is sequentially search to
locate the record.
, ORGANIZATION IS INDEXED
RANDOM
DYNAMIC
[WITH DUPLICATES] ]…
READ STATEMENT : When either the RANDOM or DYNAMIC access mode is specified
& the records are to be read in a random manner.
[; KEY IS data-name ]
WRITE STATEMENT : The records are written to the logical position as determined
from the value of the record key. When the file is opened in the OUTPUT mode, the
records must be released to the file in the ascending order of the record key values
regardless of the access mode.
DELETE STATEMENT :The DELETE Statement deletes the data contained in the
specified record position of a relative file.
Imperative-statement ]
START STATEMENT : The START statement enables the programmer to position the
relative file at some specified point. So that subsequent sequential operations on
the file can start from this point instead of the beginning.
IDENTIFICATION DIVISION.
PROGRAM-ID. EMPIND.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS EMP-NO.
DATA DIVISION.
FILE SECTION.
FD EMP-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "EMPIND.DAT"
DATA RECORD IS EMP-REC.
01 EMP-REC.
02 EMP-NO PIC 9(5).
02 EMP-NAME PIC X(25).
02 EMP-DEPT PIC X(25).
02 EMP-SAL PIC 9(10).
WORKING-STORAGE SECTION.
77 TOTREC PIC 9(3) VALUE ZERO.
77 ANS PIC X(2) VALUE SPACES.
77 CH PIC 9.
77 C PIC X.
PROCEDURE DIVISION.
PARA-1.
DISPLAY (1, 1) ERASE.
DISPLAY "1. CREATE".
DISPLAY "2. DISPLAY".
DISPLAY "3. INSERT".
DISPLAY "4. DELETE".
DISPLAY "5. MODIFY".
DISPLAY "6. EXIT".
DISPLAY "ENTER YOUR CHOICE".
ACCEPT CH.
IF CH=1 GO TO OPEN-PARA.
IF CH=2 GO TO DIS-PARA.
IF CH=3 GO TO INS-PARA.
IF CH=4 GO TO DEL-PARA.
IF CH=5 GO TO MOD-PARA.
IF CH=6 GO TO END-PARA.
OPEN-PARA.
OPEN OUTPUT EMP-FILE.
READ-PARA.
DISPLAY (1, 1) ERASE.
DISPLAY "ENTER THE EMPLOYEE DETAILS".
DISPLAY "ENTER EMPLOYEE NUMBER: ".
ACCEPT EMP-NO.
DISPLAY "ENTER EMPLOYEE NAME".
ACCEPT EMP-NAME.
DISPLAY "ENTER EMPLOYEE DEPARTMENT".
ACCEPT EMP-DEPT.
DISPLAY "ENTER EMPLOYEE SALARY".
ACCEPT EMP-SAL.
INS-PARA.
OPEN I-O EMP-FILE.
I-PARA.
DISPLAY (1, 1) ERASE.
DISPLAY "ENTER EMPLOYEE DETAILS".
DISPLAY "ENTER EMPLOYEE NO: ".
ACCEPT EMP-NO.
DISPLAY "ENTER EMPLOYEE NAME".
ACCEPT EMP-NAME.
DISPLAY "ENTER EMPLOYEE DEPARTMENT".
ACCEPT EMP-DEPT.
======================SAMPLE
OUTPUT======================
1. CREATE
2. DISPLAY
3. INSERT
4. DELETE
5. MODIFY
6. EXIT
ENTER YOUR CHOICE
1
4. DELETE
5. MODIFY
6. EXIT
ENTER YOUR CHOICE
2
EMPLOYEE NUMBER : 00100
EMPLOYEE NAME : SUNIL
EMPLOYEE DEPARTMENT : MARKETING
EMPLOYEE SALARY : 0000025000
1. CREATE
2. DISPLAY
3. INSERT
4. DELETE
5. MODIFY
6. EXIT
ENTER YOUR CHOICE
3
1. CREATE
2. DISPLAY
3. INSERT
4. DELETE
5. MODIFY
6. EXIT
ENTER YOUR CHOICE
4
ENTER THE EMPLOYEE NO TO BE DELETED
103
ONE RECORD IS DELETED
1. CREATE
2. DISPLAY
3. INSERT
4. DELETE
5. MODIFY
6. EXIT
ENTER YOUR CHOICE
2
EMPLOYEE NUMBER : 00100
EMPLOYEE NAME : SUNIL
EMPLOYEE DEPARTMENT : MARKETING
EMPLOYEE SALARY : 0000025000
1. CREATE
2. DISPLAY
3. INSERT
4. DELETE
5. MODIFY
6. EXIT
ENTER YOUR CHOICE
5
ENTER THE CUSTOMER NO OF THE RECORD TO BE MODIFIED
102
1. CREATE
2. DISPLAY
3. INSERT
4. DELETE
5. MODIFY
6. EXIT
ENTER YOUR CHOICE
6
PROGRAM 11: PROGRAM TO UPDATE THE EMPLOYEE SALARY
(INCREASE OF DA BY 3%) BY USING THE INDEX FILE ORGANIZATION.
IDENTIFICATION DIVISION.
PROGRAM-ID. EMPSALUP.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMPUP-FILE ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS EMP-NO.
DATA DIVISION.
FILE SECTION.
FD EMPUP-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "EMPUP.DAT"
DATA RECORD IS EMPUP-REC.
01 EMPUP-REC.
02 EMP-NO PIC 9(2).
02 EMP-NAME PIC X(20).
02 EMP-DEPT PIC X(20).
02 EMP-SAL.
03 BPAY PIC 9(10).
03 DA PIC 9(5).
03 HRA PIC 9(8).
03 DED PIC 9(8).
03 GROSSPAY PIC 9(10).
03 NETPAY PIC 9(10).
WORKING-STORAGE SECTION.
77 NUM PIC 9(3) VALUE ZERO.
77 ANS PIC X(2) VALUE SPACES.
77 N PIC 9.
77 D1 PIC 9(4).
77 D2 PIC 9(4).
77 C PIC XX.
77 BP PIC Z(10).
77 GP PIC Z(10).
77 NP PIC Z(10).
PROCEDURE DIVISION.
OPEN-PARA.
OPEN OUTPUT EMPUP-FILE.
READ-PARA.
DISPLAY "ENTER EMPLOYEE NO".
ACCEPT EMP-NO.
DISPLAY "ENTER EMPLOYEE NAME".
ACCEPT EMP-NAME.
======================SAMPLE
OUTPUT======================
ENTER EMPLOYEE NO
12
DA INCREASED BY 3 PERCENT
EMPLOYEE NUMBER : 12
EMPLOYEE NAME : VIJAY
EMPLOYEE DEPARTMENT : SALES
EMPLOYEE BASIC PAY : 20000
EMPLOYEE GROSS PAY : 21600
EMPLOYEE NET PAY : 21100
IDENTIFICATION DIVISION.
PROGRAM-ID. PG12.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS EMP-NO.
DATA DIVISION.
FILE SECTION.
FD EMP-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "EMPSRCH.DAT"
DATA RECORD IS EMP-REC.
01 EMP-REC.
02 EMP-NO PIC 9(5).
02 EMP-NAME PIC X(25).
02 EMP-DEPT PIC X(25).
02 EMP-SAL PIC 9(10).
WORKING-STORAGE SECTION.
77 ENO PIC 9(5) VALUE ZERO.
77 ANS PIC X(2) VALUE SPACES.
77 OP PIC 9.
77 C PIC X.
PROCEDURE DIVISION.
PARA-1.
DISPLAY (1, 1) ERASE.
DISPLAY "1. CREATE".
DISPLAY "2. DISPLAY".
DISPLAY "3. INSERT".
DISPLAY "4. DELETE".
DISPLAY "5. MODIFY".
DISPLAY "6. SEARCH".
DISPLAY "7. EXIT".
DISPLAY "ENTER YOUR CHOICE".
ACCEPT OP.
IF OP=1 GO TO OPEN-PARA.
IF OP=2 GO TO DIS-PARA.
IF OP=3 GO TO INS-PARA.
IF OP=4 GO TO DEL-PARA.
IF OP=5 GO TO MOD-PARA.
IF OP=6 GO TO SEARCH-PARA.
IF OP=7 GO TO END-PARA.
OPEN-PARA.
OPEN OUTPUT EMP-FILE.
READ-PARA.
INS-PARA.
OPEN I-O EMP-FILE.
I-PARA.
DISPLAY (1, 1) ERASE.
DISPLAY "ENTER EMPLOYEE DETAILS".
DISPLAY "ENTER CUSTOMER NO: ".
ACCEPT EMP-NO.
DISPLAY "ENTER EMPLOYEE NAME".
ACCEPT EMP-NAME.
DISPLAY "ENTER EMPLOYEE DEPARTMENT".
ACCEPT EMP-DEPT.
DISPLAY "ENTER EMPLOYEE SALARY".
ACCEPT EMP-SAL.
WRITE EMP-REC INVALID KEY DISPLAY "ERROR "
CLOSE EMP-FILE GO TO PARA-1.
DISPLAY "DO U WANT TO CONTINUE ? Y / N".
ACCEPT ANS.
IF ANS = "Y" GO TO I-PARA.
ENDINS-PARA.
CLOSE EMP-FILE.
GO TO PARA-1.
DEL-PARA.
OPEN I-O EMP-FILE.
DISPLAY "ENTER THE EMPLOYEE NO TO BE DELETED".
ACCEPT EMP-NO.
DELETE EMP-FILE RECORD INVALID KEY
DISPLAY "EMPLOYEE NO DOES NOT EXIST"
CLOSE EMP-FILE GO TO PARA-1.
DISPLAY "ONE RECORD IS DELETED".
ACCEPT C.
CLOSE EMP-FILE.
GO TO PARA-1.
MOD-PARA.
OPEN I-O EMP-FILE.
DISPLAY "ENTER THE CUSTOMER NO OF THE RECORD TO BE
MODIFIED".
ACCEPT EMP-NO.
READ EMP-FILE RECORD INVALID KEY
DISPLAY "RECORD DOES NOT EXIST - MODIFICATION NOT POSSIBLE"
CLOSE EMP-FILE GO TO PARA-1.
DISPLAY " "
DISPLAY "OLD INFORMATIONS ARE".
DISPLAY "====================".
DISPLAY " ".
DISPLAY "EMPLOYEE NUMBER : " EMP-NO.
DISPLAY "EMPLOYEE NAME : " EMP-NAME.
DISPLAY "DEPARTMENT : " EMP-DEPT.
DISPLAY "EMPLOYEE SALARY : " EMP-SAL.
DISPLAY " "
DISPLAY "ENTER THE NEW INFORMATION TO BE UPDATED".
DISPLAY " ".
DISPLAY "ENTER EMPLOYEE DETAILS".
DISPLAY "EMPLOYEE NO: " EMP-NO.
DISPLAY "ENTER EMPLOYEE NAME".
ACCEPT EMP-NAME.
======================SAMPLE
OUTPUT======================
1. CREATE
2. DISPLAY
3. INSERT
4. DELETE
5. MODIFY
6. SEARCH
7. EXIT
ENTER YOUR CHOICE
1
ENTER THE EMPLOYEE DETAILS
ENTER EMPLOYEE NUMBER:
10
ENTER EMPLOYEE NAME
VIJAY
ENTER EMPLOYEE DEPARTMENT
SALES
ENTER EMPLOYEE SALARY
30000
DO U WANT TO CONTINUE ? Y / N
Y
ENTER THE EMPLOYEE DETAILS
ENTER EMPLOYEE NUMBER:
20
ENTER EMPLOYEE NAME
MOHAN
ENTER EMPLOYEE DEPARTMENT
MARKETING
ENTER EMPLOYEE SALARY
40000
DO U WANT TO CONTINUE ? Y / N
N
1. CREATE
2. DISPLAY
3. INSERT
4. DELETE
5. MODIFY
6. SEARCH
7. EXIT
ENTER YOUR CHOICE
2
1. CREATE
2. DISPLAY
3. INSERT
4. DELETE
5. MODIFY
6. SEARCH
7. EXIT
ENTER YOUR CHOICE
3
ENTER EMPLOYEE DETAILS
ENTER CUSTOMER NO:
40
ENTER EMPLOYEE NAME
VINAY
ENTER EMPLOYEE DEPARTMENT
PRODUCTION
ENTER EMPLOYEE SALARY
50000
DO U WANT TO CONTINUE ? Y / N
N
1. CREATE
2. DISPLAY
3. INSERT
4. DELETE
5. MODIFY
6. SEARCH
7. EXIT
ENTER YOUR CHOICE
2
EMPLOYEE NUMBER : 00010
EMPLOYEE NAME : VIJAY
EMPLOYEE DEPARTMENT : SALES
EMPLOYEE SALARY : 30000
1. CREATE
2. DISPLAY
3. INSERT
4. DELETE
5. MODIFY
6. SEARCH
7. EXIT
ENTER YOUR CHOICE
4
ENTER THE EMPLOYEE NO TO BE DELETED
20
ONE RECORD IS DELETED
1. CREATE
2. DISPLAY
3. INSERT
4. DELETE
5. MODIFY
6. SEARCH
7. EXIT
ENTER YOUR CHOICE
2
EMPLOYEE NUMBER : 00010
EMPLOYEE NAME : VIJAY
EMPLOYEE DEPARTMENT : SALES
EMPLOYEE SALARY : 30000
AREAS
; ORGANIZATION IS RELATIVE
RANDOM
The statements OPEN, CLOSE, WRITE & REWRITE, DELETE & START are all
available for the relative files.
READ STATEMENT : READ statement reads a record of the file. The file must
be open in either the INPUT or I-O mode.
Format -1
[ ; AT END imperative-statement ]
Format-2
WRITE STATEMENT : At the time of execution of the WRITE statement, the file
must be open either in the OUTPUT or I-O mode.
Imperative-statement ]
NOT <
IDENTIFICATION DIVISION.
PROGRAM-ID. RELEMP.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT RELEMP-FILE ASSIGN TO DISK
ORGANIZATION IS RELATIVE
ACCESS MODE IS DYNAMIC
RELATIVE KEY IS REL-KEY.
DATA DIVISION.
FILE SECTION.
FD RELEMP-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "RELEMP.DAT"
DATA RECORD IS RELEMP-REC.
01 RELEMP-REC.
02 EMPNO PIC 9(2).
02 EMPNAME PIC X(20).
02 EMPDEPT PIC X(20).
02 EMPSAL.
03 BASIC PIC 9(10).
03 DA PIC 9(5).
03 HRA PIC 9(6).
03 PT PIC 9(5).
03 IT PIC 9(5).
03 PFD PIC 9(5).
03 GROSS PIC 9(10).
03 NETPAY PIC 9(10).
WORKING-STORAGE SECTION.
77 REL-KEY PIC 99 VALUE ZERO.
77 C PIC X.
77 ANS PIC X(2) VALUE SPACES.
PROCEDURE DIVISION.
OPEN-PARA.
OPEN OUTPUT RELEMP-FILE.
READ-PARA.
ADD 1 TO REL-KEY.
DISPLAY "ENTER EMPLOYEE DETAILS".
DISPLAY "ENTER EMPLOYEE NO: ".
ACCEPT EMPNO.
DISPLAY "ENTER EMPLOYEE NAME".
ACCEPT EMPNAME.
DISPLAY "ENTER DEPARTMENT".
ACCEPT EMPDEPT.
DISPLAY "ENTER BASIC PAY".
ACCEPT BASIC.
DISPLAY "ENTER DA".
ACCEPT DA.
DISPLAY "ENTER HRA".
ACCEPT HRA.
END-PARA.
CLOSE RELEMP-FILE.
STOP RUN.
ERROR-PARA.
DISPLAY "ERROR IN FILE ACCESSION".
GO TO END-PARA.
======================SAMPLE
OUTPUT======================
500
ENTER HRA
600
ENTER PROFESSIONAL TAX
200
ENTER INCOME TAX
300
ENTER PF
200
DO U WANT TO CONTINUE ? Y / N
Y
DO U WANT TO CONTINUE ? Y / N
N
=====================
EMPLOYEE NUMBER : 10
EMPLOYEE NAME : VIJAY
DEPARTMENT : SALES
=====================
SALARY DETAILS
==============
BASIC PAY : 30000
ALLOWANCES
==========
HRA : 000600
DA : 00500
DEDUCTIONS
==========
PROFESSIONAL TAX : 00200
INCOME TAX : 00300
PROVIDENT FUND : 00200
=====================
GROSS PAY : 31100
NET PAY : 30400
=====================
=====================
EMPLOYEE NUMBER : 20
EMPLOYEE NAME : MOHAN
DEPARTMENT : PRODUCTION
=====================
SALARY DETAILS
==============
BASIC PAY : 40000
ALLOWANCES
==========
HRA : 000500
DA : 00300
DEDUCTIONS
==========
PROFESSIONAL TAX : 00200
INCOME TAX : 00100
PROVIDENT FUND : 00250
=====================
GROSS PAY : 40800
NET PAY : 40250
=====================
SUBROUTINES
A basic requirement of modular programming is to divide a large program
into smaller and more manageable parts known as modules. A module in a
COBOL program can be realized in two ways as a PERFORM module or as a
separately compiled subroutine.
The term subroutine is used to mean only those modules that are coded and
compiled separately from the calling modules. A subroutine can be compiled
separately but cannot be executed independently. Before execution, the
object code of the subroutine must be bound with the object code of the
program calling the subroutine to form the run unit.
A RUN UNIT is a set of one or more object programs which functions as a
unit during execution.
The operands of the USING phrase must be either 01-level or 77-level data
items. These must be defined in a section of the DATA DIVISION known as
the linkage section.
Structurally, the linkage section is similar to a working-storage section &
appears in the DATA DIVISION immediately after the working-storage section.
The linkage section appears in the called program and describes records or
noncontiguous data items in respect of which connection should be
established with the calling program.
LINKAGE SECTION.
01-level-data-description-entry …..
Record-description-entry
In the case of a main program, a STOP RUN statement indicates the logical
end of a program. A STOP RUN statement cannot be used for the purpose in
the case of a subroutine. This is because the STOP RUN statement always
terminates a run unit regardless of whether it is used in a subroutine or in a
main program. Upon the execution of a subroutine it is required that the
control must be returned to the calling program. For this purpose the EXIT
PROGRAM statement is available in COBOL.
The format of this statement is:
EXIT PROGRAM
The statement must be the only statement in the paragraph.
[ ; ON OVERFLOW imperative-statement ]
The execution of the CALL statement causes the transfer of the control to the
first statement in the PROCEDURE DIVISION of the called subroutine.
The operands of the USING phrase in the CALL statement are called as actual
parameters.
The data names in the USING phrase of the PROCEDURE DIVISION header are
referred to as
formal parameters.
The values of the various attributes of the local files as well as the values of
all the local data items constitute the state of the subroutine. When the
subroutine is called first time, it is said to be in its initial state. When a
subroutine is called next, it will be in its last-used state.
Getting back the subroutine in its last used state can be gainfully utilized in
certain situations, in other situations this may be undesirable. For this reason
the CANCEL statement is provided in COBOL.
If a subroutine is cancelled through the CANCEL statement & then called
again, its execution will begin with the initial state rather than the last used
state.
MAIN PROGRAM:
IDENTIFICATION DIVISION.
PROGRAM-ID. P14.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 P PIC 99999.
77 N PIC 99.
77 R PIC 99.
77 SI PIC 9(6)V999 VALUE IS ZERO.
77 CI PIC 9(6)V999 VALUE IS ZERO.
77 C PIC 9.
77 SI1 PIC 999999.999.
77 CI1 PIC 999999.999.
PROCEDURE DIVISION.
PARA1.
DISPLAY "-----------------"
DISPLAY "1.SIMPLE INTREST".
DISPLAY "2.COMPOUND INTREST".
DISPLAY "3.EXIT".
DISPLAY " ".
DISPLAY "ENTER UR CHOICE:".
ACCEPT C.
IF C = 1 GO TO S-PARA.
IF C = 2 GO TO C-PARA.
IF C = 3 GO TO E-PARA.
S-PARA.
DISPLAY "ENTER PRINCIPAL AMOUNT,TIME,RATE:".
ACCEPT P.
ACCEPT N.
ACCEPT R.
CALL "SINTSUB" USING P , N , R , SI.
MOVE SI TO SI1.
DISPLAY " ".
DISPLAY (1, 1) ERASE.
DISPLAY "SIMPLE INTREST CALCULATION:".
DISPLAY "PRINCIPAL AMOUNT:" P.
DISPLAY "TIME:" N.
DISPLAY "RATE:" R.
DISPLAY "SIMPLE INTREST IS:" SI1.
GO TO PARA1.
C-PARA.
DISPLAY "ENTER PRINCIPAL AMOUNT,TIME,RATE:".
ACCEPT P.
ACCEPT N.
ACCEPT R.
CALL "CINTSUB" USING P , N , R , CI.
MOVE CI TO CI1.
DISPLAY " ".
======================SUBROUTINE======
================
IDENTIFICATION DIVISION.
PROGRAM-ID. SINTSUB
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
01 P PIC 9(10)V9(4).
01 N PIC 9(5).
01 R PIC 9(3)V9(4).
01 SI PIC 9(10)V9(4).
PROCEDURE DIVISION USING P, N, R, SI.
MAIN-PARA.
COMPUTE SI = ( P * N * R ) / 100.
EXIT-PARA.
EXIT PROGRAM.
IDENTIFICATION DIVISION.
PROGRAM-ID. CINTSUB.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 V1 PIC 9(10)V9(4).
77 V2 PIC 9(10)V9(4).
77 V3 PIC 9(10)V9(4).
LINKAGE SECTION.
01 P PIC 9(10)V9(4).
01 N PIC 9(5).
01 R PIC 9(3)V9(4).
01 CI PIC 9(10)V9(4).
PROCEDURE DIVISION USING P, N, R, CI.
MAIN-PARA.
COMPUTE V1 = 1 + R / 100.
COMPUTE V2 = V1 ** N.
COMPUTE V3 = P * V2.
MOVE V3 TO CI.
EXIT-PARA.
EXIT PROGRAM.
======================SAMPLE
OUTPUT======================
-----------------
1. SIMPLE INTREST
2. COMPOUND INTREST
3. EXIT
ENTER UR CHOICE:
1
ENTER PRINCIPAL AMOUNT, TIME, RATE:
1000
3
200
ENTER UR CHOICE:
2
ENTER PRINCIPAL AMOUNT,TIME,RATE:
1000
3
200
COMPOUND INTREST CALCULATION:
PRINCIPAL AMOUNT : 01000
TIME : 03
RATE :20
COMPOUND INTREST IS: 490313.489
IDENTIFICATION DIVISION.
PROGRAM-ID. PG15.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT SALES-FILE ASSIGN TO DISK.
DATA DIVISION.
FILE SECTION.
FD SALES-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "SALES.DAT".
01 SALES-REC.
02 ZONE PIC X(14).
02 DISTRICT PIC X(14).
02 SALESMANNO PIC 999.
02 PRODUCTNO PIC 999.
02 AMOUNT PIC 9(6).
WORKING-STORAGE SECTION.
77 EOF PIC X VALUE "N".
77 CH PIC X VALUE "Y".
SCREEN SECTION.
01 SCR1.
02 BLANK SCREEN.
02 LINE 02 COLUMN 10 VALUE "SALESMANNO".
02 LINE 02 COLUMN 30 PIC 999 TO SALESMANNO.
02 LINE 04 COLUMN 10 VALUE "DISTRICT".
02 LINE 04 COLUMN 30 PIC X(15) TO DISTRICT.
02 LINE 06 COLUMN 10 VALUE "ZONE".
02 LINE 06 COLUMN 30 PIC X(15) TO ZONE.
02 LINE 08 COLUMN 10 VALUE "PRODUCTNO".
02 LINE 08 COLUMN 30 PIC 999 TO PRODUCTNO.
02 LINE 10 COLUMN 10 VALUE "AMOUNT".
02 LINE 10 COLUMN 30 PIC 9(6) TO AMOUNT.
01 SCR2.
02 BLANK SCREEN.
02 LINE 02 COLUMN 20 VALUE "**" HIGHLIGHT BLINK.
02 LINE 02 COLUMN 23 VALUE "SALES-REC" HIGHLIGHT BLINK.
02 LINE 02 COLUMN 38 VALUE "**" HIGHLIGHT BLINK.
02 LINE 04 COLUMN 05 VALUE "SALESMAN-NO".
02 LINE 04 COLUMN 18 VALUE "ZONE".
02 LINE 04 COLUMN 26 VALUE "DISTRICT".
02 LINE 04 COLUMN 38 VALUE "PRODUCTNO".
02 LINE 04 COLUMN 50 VALUE "AMOUNT".
PROCEDURE DIVISION.
MAIN-PARA.
OPEN OUTPUT SALES-FILE.
PERFORM ACCEPT-PARA UNTIL CH = 'N'.
CLOSE SALES-FILE.
OPEN INPUT SALES-FILE.
DISPLAY SCR2.
READ SALES-FILE AT END MOVE 'Y' TO EOF.
MOVE 6 TO LIN.
PERFORM DISP-PARA UNTIL EOF='Y'.
CLOSE SALES-FILE.
STOP RUN.
ACCEPT-PARA.
DISPLAY ( 1 1 ) ERASE.
DISPLAY SCR1.
ACCEPT SCR1.
WRITE SALES-REC.
DISPLAY ( 14 , 10 ) " DO U WANT TO CONTINUE(Y/N) ".
ACCEPT CH.
DISP-PARA.
MOVE 4 TO COL.
DISPLAY( LIN , COL )SALESMANNO.
ADD 11 TO COL.
DISPLAY( LIN , COL )ZONE.
ADD 11 TO COL.
DISPLAY( LIN , COL )DISTRICT.
ADD 11 TO COL.
DISPLAY( LIN , COL )PRODUCTNO.
ADD 11 TO COL.
DISPLAY( LIN , COL )AMOUNT.
ADD 11 TO COL.
ADD 1 TO LIN.
READ SALES-FILE AT END MOVE "Y" TO EOF.
======================SAMPLE
OUTPUT======================
SALESMANNO 111
DISTRICT ANANTTAPUR
ZONE EAST
PRODUCTNO 678
AMOUNT 002000
DO U WANT TO CONTINUE(Y/N) Y
SALESMANNO 222
DISTRICT SHIMOGA
ZONE SOUTH
PRODUCTNO 777
AMOUNT 004000
DO U WANT TO CONTINUE(Y/N) N
** SALES-REC ORD **
**************************************************************
* SALESMAN-NO ZONE DISTRICT PRODUCTNO AMOUNT *
**************************************************************
* 111 EAST ANANTTAPUR 678 002000 *
* 222 SOUTH SHIMOGA 777 004000 *
**************************************************************