Wednesday, May 20, 2009

Cobol learning sites

Are you really interested in learning COBOL
Few sites for COBOL learning

COBOL site one: Very good tutorial on COBOL programming

http://www.csis.ul.ie/COBOL/Course/COBOLIntro.htm

another site which have very good content on cobol programming

http://www.engin.umd.umich.edu/CIS/course.des/cis400/cobol/cobol.html

Hello world program

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. HELLOWORLD.
000300
000400*
000500 ENVIRONMENT DIVISION.
000600 CONFIGURATION SECTION.
000700 SOURCE-COMPUTER. RM-COBOL.
000800 OBJECT-COMPUTER. RM-COBOL.
000900
001000 DATA DIVISION.
001100 FILE SECTION.
001200
100000 PROCEDURE DIVISION.
100100
100200 MAIN-LOGIC SECTION.
100300 BEGIN.
100400 DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
100500 DISPLAY "Hello world!" LINE 15 POSITION 10.
100600 STOP RUN.
100700 MAIN-LOGIC-EXIT.
100800 EXIT.

Program in COBOL that combines the two files to create a single file.

A University has database of students at two different places: its administrative office and College of the student. However, over a period of time it was found that the information stored about the student in college database is most recent, but it does not store the information about the students who have not paid the fee. As per the University policy the data of such student should also be maintained along with other students, but indicating proper status. The student information is stored in the following format:

01-09 Student code
10-35 Student name
36-50 Programme
51-70 Address

Write a Program in COBOL that combines the two files to create a single file. The combined file will have same structure till 70th position and on 71st position a status information code is added about the student. Please note that the latest student addresses are available in College file and the status will be ascertained from the fact that the student name does not appear in college file but exists in administrative office file.



*USED TO MERGE COLLEGE AND ADMINISTRATIVE DATABASE
*INTO A NEW DATABASE
IDENTIFICATION DIVISION.
PROGRAM-ID. QUESTION-2 PROJECT.
AUTHOR GYAN AND CHANDRA.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT COLL-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT ADMIN-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT MERGE-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT WORK-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
DATA-DIVISION.
FILE-SECTION.
FD COLL-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID”COLLEGE.TXT”.
01 COLLEGE-RECORDS.
02 ST-CODE PIC X(9).
02 ST-NAME PIC X(26).
02 PROG PIC X(15).
02 ADDRS PIC X(20).
02 FILLER PIC X(10).
FD ADMIN-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID”OFFICE.TXT”.
01 ADMINS-RECORDS.
02 ST-CODE PIC X(9).
02 ST-NAME PIC X(26).
02 PROG PIC X(15).
02 ADDRS PIC X(20).
02 FILLER PIC X(10).
FD MERGE-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID”MAIN.TXT”.
01 MERGE-RECORDS.
02 STUD-CODE PIC X(9).
02 STUD-NAME PIC X(26).
02 PROGRA PIC X(15).
02 ADDRESS PIC X(20).
02 STATS PIC X(5).
02 FILLER PIC X(5).
SD WORK-FILE.
01 WORK-RECORDS.
02 SCODE PIC X(9).
02 SNAME PIC X(26).
02 PR PIC X(15).
02 ADS PIC X(20).
02 STAT PIC X(5).
02 FILLER PIC X(5).
WORKING-STORAGE SECTION.
01 LINING PIC X(80) VALUEALL’-’.
PROCEDURE DIVISION.
OPEN-PARA.
OPEN OUTPUT COLL-FILE ADMIN-FILE.
DISPLAY “ *********COLLEGE RECORDS*********”.
DISPLAY LINING.
PERFORM COLL-PARA 2 TIMES.
DISPLAY “ ***ADMINISTRATIVE OFFICE RECORDS***”.
DISPLAY LINING.
PERFORM ADMIN-PARA 2 TIMES.
CLOSE COLL-FILE ADMIN-FILE.
COLL-PARA.
DISPLAY “STUDENT CODE:”ACCEPT S-CODE.
DISPLAY “STUDENT NAME:”ACCEPT S-NAME.
DISPLAY “PROGRAMME:”ACCEPT PROGR.
DISPLAY “ADDRESS:”ACCEPT ADDR.
WRITE ADMINS-RECORDS.
MERGE-PARA.
MERGE WORK-FILE ON ASCENDING KEYSCODE
USING COLL-FILE ADMIN-FILE
GIVING MERGE-FILE.

COBOL program that updates the total of fee deposited by the student in Student Master and prints each of the transaction

A University stores following disk files for various transactions relating to fee deposit by its students:

File 1: Student Master
Organisation: Index – Sequential on Student Number
Structure:
01-09 Student Number
10-30 Student Name
31-60 Address
61-66 Programme Code
67-74 Total of fee amount deposited so far
75-80 Unused

File 2: Programme Master
Organisation: Index – Sequential on Programme Code
Structure:
01-06 Programme code
07-51 Programme Name
52-54 Duration
55-57 Level (for example, PG, UG, etc.)
58-66 Total Fees
67-80 Entry Qualification

File 3: Transaction Table (Kept semester wise only)
Unsorted file
Structure:
01-09 Student Number
10-18 Date of Fee deposition
19-26 Amount deposited

Labels are standard. The first field of the records in each file represents the key field.

Write a COBOL program that updates the total of fee deposited by the student in Student Master and prints each of the transaction (Reporting errors if any) in the following output format:

OUTPUT
Structure:
01-10 Transaction Number (A new number is generated for each transaction)
10-18 Date of Transaction
19-20 Amount deposited
21-39 Student name
40-49 Total of fee deposited by student so far
50-55 Programme code of student
56-64 The remaining fee that will be deposited by student later (by subtracting
total of fee deposited by student from Total Programme fee).

The file should be sorted in the Order of Student Number.

Answer PART-1 of Question-1:
*PART-1 OF THE TMP QUESTION-1.
*USED TO CREATE INDEX SEQUENTIAL FILE TO INPUT RECORDS
IDENTIFICATION DIVISION.
PROGRAM-ID. QUESTION-1 PROJECT.
AUTHOR GYAN AND CHANDRA.
ENVIRONMENT DIVISION INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUD-MAST ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS ST-NO.
SELECT PROG-MAST ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS PR-CODE.
DATA DIVISION.
FILE SECTION.
FD STUD-MAST.
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID ”STUDENT.TXT”.
01 STUDENT-RECORDS.
02 ST-NO PIC X(9).
02 SNAME PIC X(21).
02 SADD PIC X(30).
02 P-CODE PIC X(6).
02 D-FEE PIC 9(8).
02 FILLER PIC X(6).
FD PROG-MAST
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID “PROG.TXT”.
01 PROGRAM-RECORDS.
02 PR-CODE PIC X(6).
02 PR-NAME PIC X(45).
02 DURATION PIC X(3).
02 LEVEL PIC X(3).
02 TOT-FEE PIC 9(8).
02 E-QUAL PIC X(14).
PROCEDURE DIVISION.
OPEN-PARA.
OPEN OUTPUT STUD-MAST PROG-MAST.
DISPLAY” STUDENT DETAILS ENTRY”.
DISPLAY”-----------------------------------------”.
PERFORM STUD-PARA 2 TIMES.
DISPLAY”PROGRAMME DETAILS ENTRY”.
DISPLAY”-----------------------------------------”.
PERFORM PROG-PARA 2 TIMES.
CLOSE STUD-MAST PROG-MAST.
STOP RUN.
STUD-PARA.
DISPLAY “STUDENT NUMBER:”ACCEPT ST-NO.
DISPLAY “STUDENT NAME:”ACCEPT SNAME.
DISPLAY “STUDENT ADDRESS:”ACCEPT SADD.
DISPLAY “PROGRAMME CODE:”ACCEPT P-CODE.
WRITE STUDENT-RECORDS.
PROG-PARA.
DISPLAY “PROGRAMME CODE:”ACCEPT PR-CODE.
DISPLAY “PROGRAMME NAME:”ACCEPT PR-NAME.
DISPLAY “PROGRAMME DURATION:”ACCEPT DURATION.
DISPLAY “PROGRAMME LEVEL(e.g.PG,UG):”ACCEPT LEVEL.
DISPLAY “TOTAL FEE:”ACCEPT TOT-FEE.
DISPLAY “ENTRY QUALIFICATION:”ACCEPT E-QUAL.
WRITE PROGRAM-RECORDS.



Answer PART-2 of Question-1:
*USED TO UPDATE RECORDS AND PRINT TRANSACTIONS
IDENTIFICATION DIVISION.
PROGRAM-ID. QUESTION-1 PART-2 PROJECT.
AUTHOR GYAN AND CHANDRA.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUD-MAST ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS ST-NO.
SELECT PROG-MAST ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS PR-CODE.
SELECT STUD-TRAN ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD STUD-MAST.
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID ”STUDENT.TXT”.
01 STUDENT-RECORDS.
02 ST-NO PIC X(9).
02 SNAME PIC X(21).
02 SADD PIC X(30).
02 P-CODE PIC X(6).
02 D-FEE PIC 9(8).
02 FILLER PIC X(6).
FD PROG-MAST
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID “PROG.TXT”.
01 PROGRAM-RECORDS.
02 PR-CODE PIC X(6).
02 PR-NAME PIC X(45).
02 DURATION PIC X(3).
02 LEVEL PIC X(3).
02 TOT-FEE PIC 9(8).
02 E-QUAL PIC X(14).
FD STUD-TRAN
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID “STUD.TXT”.
01 TRANS-RECORDS.
02 S-NO PIC X(9).
02 DATE-FEE PIC X(8).
02 DEP-FEE PIC 9(8).
02 FILLER PIC X(55).
WORKING-STORAGE SECTION.
77T-NO PIC 9(10).
77CH PIC X VALUE’N’.
01 TRAN-DETAILS.
02 TR-NO PIC 9(10).
02 FILLER PIC X(2)VALUE SPACES.
02 TR-DATE PIC X(8).
02 FILLER PIC X(2)VALUE SPACES.
02 AM-DEP PIC 9(8).
02 FILLER PIC X(2)VALUE SPACES.
02 S-NAME PIC X(21).
02 FILLER PIC X(2)VALUE SPACES.
02 T-FEE-DEP PIC 9(8).
02 FILLER PIC X(2)VALUE SPACES.
02 PRO-CODE PIC X(6).
02 FILLER PIC X(2)VALUE SPACES.
02 REM-FEE PIC 9(8).
02 FILLER PIC X(2)VALUE SPACES.
01 TABLE-HEADING.
02 FILLER PIC X(10) VALUE ”TRANS.NO.”.
02 FILLER PIC X(2) VALUE SPACES.

02 FILLER PIC X(8) VALUE ”TR.DATE.”.
02 FILLER PIC X(2) VALUE SPACES.
02 FILLER PIC X(8) VALUE ”AMO.DATE.”.
02 FILLER PIC X(2) VALUE SPACES.
02 FILLER PIC X(21) VALUE ”STUDENT NAME”.
02 FILLER PIC X(2) VALUE SPACES.
02 FILLER PIC X(9) VALUE ”T-FEE DEP”.
02 FILLER PIC X(2) VALUE SPACES.
02 FILLER PIC X(6) VALUE ”P-CODE”.
02 FILLER PIC X(2) VALUE SPACES.
02 FILLER PIC X(9) VALUE ”REM FEE”.
02 FILLER PIC X(2) VALUE SPACES.
01 LINING PIC X(80) VALUE ALL “-”.
PROCEDURE DIVISION.
OPEN PARA.
MOVE 10001 TO T-NO.
OPEN INPUT PROG-MAST OUTPUT STUD-TRAN.
OPEN I-O STUD-MAST.
DISPLAY”*********SEMESTER FEE DEPOSIT*********”.
DISPLAY LINING.
PERFORM TRAN-PARA 2 TIMES.
TRAN-PARA.
DISPLAY “STUDENT NUMBER”.
ACCEPT S-NO.
DISPLAY “DATE OF FEE DEPOSITION”.
ACCEPT DATE-FEE.
DISPLAY “AMOUNT DEPOSITED”.
ACCEPT DEP-FEE.
WRITE TRANS-RECORDS.
DIS-PARA.
DISPLAY TABLE-HEADING.
DISPLAY LINING.
CLOSE STUD-TRAN.
OPEN INPUT STUD-TRAN.
PERFORM READ-PARA UNTIL CH=’Y’.
CLOSE STUD-TRAN STUD-MAST PROG-MAST.
STOP RUN.

READ-PARA.
READ STUD-MAST AT END MOVE ’Y’ TO CH.
READ PROG-MAST AT END MOVE ’Y’ TO CH.
READ STUD-TRAN AT END MOVE ’Y’ TO CH.
MOVE T-NO TO TR-NO.
MOVE 1 TO T-NO.
ADD DEP-FEE TO D-FEE.
SUBTRACT D-FEE FROM TOT-FEE GIVING REM-FEE.
MOVE D-FEE TO T-FEE-DEP.
MOVE DATE-FEE TO TR-DATE.
MOVE DEP-FEE TO AM-DEP.
MOVE SNAME TO S-NAME.
MOVE PR-CODE TO PRO-CODE.
DISPLAY TR-NO.
DISPLAY TR-DATE.
DISPLAY AM-DEP.
DISPLAY S-NAME.
DISPLAY T-FEE-DEP.
DISPLAY PRO-CODE.
DISPLAY REM-FEE.

Tuesday, May 19, 2009

program in COBOL that sorts the records in a student file

Write a program in COBOL that sorts the records in a student file (assume suitable structure an organization) on the alphabetical order of names. Make and state suitable assumptions.







IDENTIFICATION DIVISION.

PROGRAM-ID. QUESTION2.

AUTHOR. GYAN AND CHANDRA.

ENVIRONMENT DIVISION.

WORKING- STORAGE SECTION.

01 STUDENT-RECORD

02 STUDENT OCCUR 5 TIMES.

03 ENR-NO PIC 9(9)

03 NAME PIC X (20).

03 COURSE PIC X(5)

01 DATA-FOR-SORTING

02 I PIC 9.

02 J PIC 9.

02 C PIC 9 VALUE 5.

02 TEMP-EN PIC 9(9).

02 TEMP-N PIC X(20).

02 TEMP-C PIC X(5)

PROCEDURE DIVISION.

MAIN-PARA.

DISPLAY “ INPUT STUDENT RECORDS”.

DISPLAY “ ---------------- “.

PERFORM PROCESS-PARA

VARYING I FORM 1 BY 1

UNTIL I>C.

PERFORM SORTING-PARA

VARING I FORM 1 BY 1

UNTIL I > C.

STOP RUN.

PROCESS-PARA.

DISPLAY “INPUT ENROLMENT NO.”

ACCEPT ENR-NO(I)

DISPLAY “INPUT COURSE NAME:”.

ACCEPT COURSE(I)

DISPLAY “INPUT STUDENT NAME:”

ACCEPT NAME (I)

SORTING-PARA.

PERFORM COMPARISION-PARA

VARYING J FROM 1 BY 1

UNTIL J>C.

COMPARISION-PARA.

IF NAME(I)
MOVE NAME(I) TO TEMP-N

MOVE NAME(J) TO NAME-(I)

MOVE TEMP-N TO NAME-(J)

MOVE ENR-NO(I) TO TEMP-EN

MOVE ENR-NO(J) TO ENR-NO(I)

MOVE TEMP-EN TO ENR-NO(J)

MOVE COURSE(I) TO TEMP-C

MOVE COURSE(J) TO COURSE(I)

MOVE TEMP-C TO COURSE(J)

PRINTING-PARA.

DISPLAY “ENROLMENT NO.:”

DISPLAY ENR-NO(I)

DISPLAY “STUDENT NAME.:’

DISPLAY NAME(I)

DISPLAY “COURSE NAME:”

DISPLAY COURSE (I).

features/advantages/disadvantages of various file organisations in COBOL

Compare and contrast the features/advantages/disadvantages of various file organisations in COBOL? Suggest an application for each file organisation. Create a Relative file for the following input records (Write the Program. Make suitable assumptions, if needed).

Input File:

File Name: client_details
Organisation: Relative
File Format:
1-10 Client Code
11-35 Client name
36-50 Client Phone
51-70 Business Volume
71-72 Status (Project is On, Project is over, Negotiation for project is on, Clients having bad track record etc.)
73-80 Not used

The created relative file should be used for the following searching:
To ascertain the status of a client, prior to a project negotiation.
To display the contact phone of a client.

Write the COBOL program for the above.




There are three types of file organizations in COBOL:
(i) Sequential file organisation
(ii) Index Sequential file organization
(iii) Relative file organization


Sequential file organization
In sequential file organization, records are arranged sequentially. A sequential file is a file whose records can be accessed on the order of their appearance in the file. The order in which the records are stored is determined by the order in which they are written when the file was prepared. This order does not charge. Records may be added at the end of file only. The records may be accessed in the order on which they were originally written into a file. A magnetic tape file, such as printer, can only have a sequential organization. A sequentially organized file may be stored on either a serial –access or direct access storage medium. The task of file handling is the responsibility of the system software known as Input-output Control System (IOCS). Block is used to group a number of consecutive records. IOCS takes care of blocking. IOCS reserves a memory space equal to the size of a block of the file.

Advantages of sequential file organization: -
(i) Simple to implement
(ii) Requires very low software support
(iii) Efficiency of blocking is good
(iv) Blocking results in saving in terms of input-output time required handling a file.
(v) A substantial amount of storage space on the disk can be saved.

Disadvantages of sequential file organization: -
(i) Updates are not easily accommodated
(ii) Random access is not possible
(iii) All records must be structurally identical, if a new field has to be added, and then every record must be rewritten to provide space for the new field.
(iv) Continuous areas may not be possible because both the primary data file and the transaction file must be looked during merging.

Area of Use: -
Sequential files are most frequently used in commercial batch oriented data processing applications where there is the concept of a master file to which details are added periodically. Example: - Payroll applications.

Index Sequential file organization: -
When there is need to access records sequentially by some key value and also to access records directly by the same key value, the collection of records may be organized in an effective manner called index sequential file organization. In index sequential file organization, the records are stored in the key sequence order usually in ascending order. Some index tables are also created and maintained with the file. Index table provide to identify the groups of records in the file. When an indexed file is accessed randomly, the programmers control the sequence on which the records are accessed by specifying the value of a data item called record key. When the new records are inserted in the data file, the sequence of records needs to be preserved and also the index is accordingly updated.

Advantage of index sequential file organization:
1. In indexed sequential file organization, the item in the table can be examined sequentially if all the records in the file must be accessed.
2. Indexed sequential file organization is very useful when a random access or records by specifying the key is required.
3. Updating is easily accommodated.
4. Random access is possible.

Area of use: -
Index sequential file organization support applications that selectively access individual records rather than searching thru the entire collection in sequence.
Example- Train Enquiry System, Reservation Enquiry System.

Relative file Organization: -
A relative file is organized in such a way that a relative record number identifies each record. The relative record number specifies the position of the record from the beginning of the file. A relative file may be accessed sequentially. randomly and dynamically . In sequential access, records are accessed in order of ascending relative record numbers. In random access, the programmer must specify relative record number. In dynamic, both random and sequential access modes may be intermixed.

Advantages of Relative File Organization: -
(i) A relative file may be accessed sequentially randomly or dynamically.
(ii) It organizes data when there is a need to access individual records directly.
(iii) Updating is easily accommodated.
(iv) Processing efficiency is high.

Disadvantages of relative file organization: -
(i) In most applications it may be difficult to specify the relative record position. For example if we wish to read the record corresponding to the employee number sw1073 in the personnel file. If the file has a relative organization, knowledge of the employee number sw1073 is not good enough to read the desired record.
(ii) In the case when have to access the records randomly and want to identify them by the value of the key, rather than the relative record number, then relative file organization is not suitable.

Area of Use: - Relative file organization is used where the records of a file are updated for a number of times during a working day. Price list can be a file, which is to be constantly interrogated during a billing run.

*THIS PROGRAM IS USED TO CREATE A RELATIVE TO INPUT RECORDS.
IDENTIFICATION DIVISION.
PROGRAM-ID. QUESTION-1 PART-1.
AUTHOR GYAN AND CHANDRA.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CL-FILE ASSIGN TO DISK
ORGANIZATION IS RELATIVE
ACCESS MODE IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD CL-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE ID “CLIENT.TXT”.
01 CLIENT-DETAILS.
02 CLIENT-CODE PIC Z(10).
02 CNAME PIC X(25).
02 CPHONE PIC Z(15).
02 BUS-VOL PIC X(20).
02 STAT PIC X(2).
02 FILLER PIC X(8).
PROCEDURE DIVISION.
MAIN-PARA.
OPEN OUTPUT CL-FILE.
DISPLAY “ ENTER CLIENT DETAILS”.
DISPLAY “ ----------------------------------”.
PERFORM PROCESS-PARA 5 TIMES.
CLOSE CL-FILE.
STOP RUN.
PROCESS PARA.
DISPLAY “CLIENT CODE:”.
ACCEPT CLIENT-CODE.
DISPLAY “CLIENT NAME:”.
ACCEPT CNAME.
DISPLAY “CLIENT CONTACT PHONE NUMBER:”.
ACCEPT CPHONE.
DISPLAY “CLIENT BUSINESS VOLUME:”.
ACCEPT BUS-VOL.
DISPLAY “CLIENT PROJECT STATUS:”.
ACCEPT STAT.
WRITE CLIENT-DETAILS.

Program in cobol that merges the two inventory file into a single file.

A store has two branches:
Branch A and Branch B. Both the branches of the store sells many products. Some of these products are common to both the branches, while some are available in one branch. Both the store keeps the unsorted inventory file in the following format:
01-05 Product Code
06-25 Product name
26-30 Quantity
However due to some reason the store decided to merge the two branches. Thus the inventory files are also be merged. Write a program in cobol that merges the two inventory file into a single file.




IDENTIFICATION DIVISION.
PROGRAM-ID. SORTPROG.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INPUT_FILE-1 ASSIGN TO DISK1.
SELECT INPUT_FILE-2 ASSIGN TO DISK2.
SELECT MERGE-THEM ASSIGN TO DISK ‘WORK’.
SELECT OUTPUT FILE ASSIGN TO DISK ‘DISK’.

DATA DIVISION.
FD INPUT-FILE-1
LABEL RECORDS ARE STANDARD.
01 IN-REC-1
FD INPUT-FILE-1
01 INPUT_REC
02 PCODE PIC X(100).
02 PNAME PIC X(100).
02 QUANTITY PIC X(100).
FD INPUT-FILE-2
LABEL RECORDS ARE STANDARD.
01 INPUT_REC.
02 IPCODE-NO PIC X(100).
02 IPNAME PIC X(100).
02 IQUANTITY PIC X (100).
SD MERGE-THEM.
01 MERGE-REC.
05 M-PCODE-NO PIC X(100).
05 M-PNAME PIC X(100).
05 M-QUANTITY PIC X(100).
FD OUTPUT-FILE.
LABEL RECORD ARE STANDARD.
01 OUT-REC PIC X(100).
PROCEDURE DIVISION.
100-MAIN-MODULE.
ON ASSCENDING KEY KEY-FIELD
USING INPUT-FILE-1, INPUT-FILE-2
GIVING OUTPUT-FILE
STOP RUN.

Cobol program that updates the balance in the account master and prints each of the transaction.

A bank stores following disk files for various transactions relating to money deposit and withdrawl:

File 1:Account Master
Organisation:Index-Sequential on Account Number
Structure:
01-09 Account Number
10-30 Account Holder Name
31-60 Account Holder Address
61-62 Account Type
63-70 Account Balance
71-80 Unused

File 2:Employee Master
organisation Index-sequential on employee Number
structure:
01-09 Employee number
10-30 Employee name
31-40 Employee Designation
41-50 Employee Phone
51-60 Highest Qualification
61-70 Date of Birth

File 3:Transaction Table
Unsorted file
Structure:
01-09 Transaction Number
10-18 Date Of Transaction
19-20 Transaction Type(Withdrawl/deposit etc.)
21-29 Account Number who has processed the transaction

Labels are standard.The first field of the records in each file represents the key field.
Write a cobol program that updates the balance in the account master and prints each of the transaction
(reporting error if any) in the following output format.
output
structure:
0-09 Transaction Number
10-18 Date of transaction
19-20 Transaction type(withdrawl/deposit etc)
21-29 Account Number for withdrawl or deposit
30-49 Account Holder's name
50-57 Balance after transaction
58-66 Employee number who has processed the transaction
67-86 Name of the person who has processed the transaction
the file should be sorted in the order of date of transaction and if the date is same then on account number.


Solution:


IDENTIFICATION DIVISION.
PROGRAM-ID. CAL-OF-SALARY.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ACCT-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT EMP-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT TRANS-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD ACCT-FILE
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS “ACCT1.DAT”.
01 ACCT-REC.
02 ANO PIC Z(5).
02 ENAME PIC A(30).
02 ADD PIC Z(5).
02 ATYPE.
FD EMP-FILE
LABLE RECORDS ARE STANDARD
VALUE OF FILE-ID IS “EMP1.DAT”.
01 EMP-REC.
02 ENO1 PIC Z(5).
02 ENAME1 PIC A(30).
02 EDESG Z(5).
02 EPHONE Z(5).
02 QUAL Z(5).
02 DOB Z(5).
FD TRAN-FILE
LABLE RECORDS ARE STANDARD
VALUE OF FILE-ID IS “TRAM1.DAT”.
01 TRAN-REC.
02 TNO PIC Z(5).
02 TTYPE PIC A(30).
02 TDATE PIC A.
02 ACC Z(5).
02 ENO Z(5).
WORKING STORAGE SECTION.
77 ANS PIC A VALUE “Y”.
77 TCODE PIC Z(5).
77 ALLW PIC 9(5).
77 LBS PIC 9(5).
77 LDA PIC 9(2).
77 LITAX PIC 9(4).
77 LRG PIC A.
77 LOB PIC 9(4).
77 LND PIC 9(2).
77 LDW PIC 9(3).
77 TEMP PIC A.
77 LPFD PIC 9(5).
77 RPAY PIC 9(6).
77 NPAY PIC 9(6).
77 IT-TAX PIC 9(8).
01 EOF PIC A VALUE “N”.
77 CHOICE PIC 9.
77 CHI PIC 9.
77 MOD PIC A.
77 SEAR PIC A.
77 ADDP PIC A.
77 CONT PIC 9 USAGE IS COMP.
77 T-FILE PIC 9 USAGE IS COMP.

PROCEDURE DIVISION.

MENU-PARA.
PERFORM UNTIL ANS =”N” OR ANS=”n”
DISPLAY ERASE
MOVE “ “ TO TRAN
MOVE “ “ TO ACCT-REC
MOVE ”N” TO MOD
MOVE “N” TO SEAR
MOVE ZERO TO CHOICE
DISPLAY “ NEELKANTH OVERSEAS PVT. LTD.” AT 0422

DISPLAY “**********************************” AT 0622
DISPLAY “*****************************************” AT 1020
DISPLAY “* MAIN MENU *” AT 1120
DISPLAY “*************************” AT 1220
DISPLAY “1. TRANSACTION NO.”
DISPLAY “2. DATE OF TRANSACTION”
DISPLAY “3. ACCOUNT NO OF WITHDRAWAL AND DEPOSTI” AT 1820
DISPLAY “4. ACCOUNT HOLDER’S NAME” AT 2020
DISPLAY “5. BALANCE ” AT 2220
DISPLAY “6. EMPLOYEE PROCESS TRANSACTION AT 2420
DISPLAY “7. EMPLOYEE NAME AT 2620

DISPLAY “ ”
DISPLAY “ ENTER YOUR CHOICE……………” AT 2415
ACCEPT CHOICE
EVALUATE CHOICE
WHEN 1
MOVE “Y” TO TEMP
PERFORM ADDP
WHEN 2
CALL “CBL_CHECK_FILE_EXIST” USING “ACCT1.DAT”
RETURNING CONT
IF CONT = 0 THEN

MOVE “Y” TO MOD
PERFORM MOD-PARA
ELSE
DISPLAY “ NO FILE EXIST………”
ACCEPT EOF
END-IF



WHEN 3
CALL “CBL_CHECK_FILE EXIST” USING “ACCT1.DAT”
RETURNING CONT
IF CONT = 0 THEN
CALL “CBL_CHECK_FILE EXIST” USING “TRAN1.DAT”
RETURNING T-FILE
IF T-FILE = O THEN
PERFORM REPORT-PARA
ELSE
PERFORM CONVERT-PARA
PERFORM REPORT-PARA
END-IF
ELSE
DISPLAY “ ”
DISPLAY “ NO DATA IS THE FILE……” AT 2530
ACCEPT EOF
END-IF

WHEN 4
CALL “CBL_CHECK_FILE_EXIST” USING “ACCT1.DAT”
RETURNING CONT
IF CONT = 0 THEN
CALL “CBL_CHECK_FILE EXIST” USING “TRAN1.DAT”
RETURNING T-FILE
IF T-FILE = O THEN
PERFORM SEAR-PARA
END-IF
ELSE
DISPLAY “ ”
DISPLAY “ NO DATA IS THE FILE……” AT 2530
ACCEPT EOF
END-IF

WHEN 5
MOVE “N” TO ANS
DISPLAY ERASE
WHEN OTHER

DISPLAY “INVALID CHOICE”
MOVE ZERO TO CHOICE
END-EVALUATE
END-PERFORM.
STOP-RUN.
END-MENU-PARA.

ADDP.


MAIN-PARA.
OPEN EXTEND WORKER-FILE.
MOVE “N” TO TCODE.
DISPLAY ERASE.
DISPLAY “ENTER THE EMPLOYEE NUMBER ………” AT 0605
ACCEPT TCODE AT O636
PERFORM CHECK-PARA.
MOVE TCODE TO ENO.
DISPLAY “ ”
DISPLAY “DATE OF TRANSACTION ……………” AT 0805
ACCEPT ENAME AT 0836
DISPLAY “ ”.
MOVE TEMP TO RG.
MOVE RG TO LRG.
DISPLAY “ ”
DISPLAY “ ”
MOVE ZERO TO RPAY
MOVE BS TO RPAY
PERFORM IT-PARA
MOVE BS TO LBS
MOVE DA TO LDA
MOVE OB TO LOB
MOVE PFD TO LPFD
CALCU-PARA.
DISPLAY ERASE.
IF LRG = “Y” RO LRG = “y” THEN
MOVE ZERO TO RPAY
COMPUTE ALLW = LBS * ( 1 + LDA / 100 )
COMPUTE RPAY = ALLW + LOB
COMPUTE LPFD = LPFD + LITAX
COMPUTE RPAY = RPAY – LPFD
IF MOD =“Y” OR MOD =”Y” THEN
MOVE RPAY TO TT-SALARY
ELSE
MOVE RPAY TO T-SALARY
END-IF
ELSE
MOVE ZERO TO NPAY
MULTIPLY LND BY LDW GIVING NPAY
COMPUTE NPAY= LND * LDM
IF MOD =”Y” RO MOD =”Y” THEN
MOVE NPAY TO TT-SALARY
ELSE
MOVE NPAY TO T-SALARY

END-IF
END-IF.
END-CALCU-PARA.

CHECK-PARA.
CLOSE WORKER-FILE.
OPEN-INPUT WORKER-FILE.
PERFORM READ-FILE UNTIL EOF=”Y”.
OR TCODE=ENO.
IF TCODE = ENO THEN
DISPLAY “ ”
DISPLAY “THE EMP-NUMBER IS ALREADY EXIST….”AT 1420
ACCEPT EOF
CLOSE WORKER-FILE
TO GO ADDP
ELSE
CLOSE WORKER-FILE
OPEN EXTEND WORKER-FILE
END IF
END-CHECK-PARA.
READ-FILE.
READ WORKER-FILE AT END MOVE “Y” TO EOF.
END READ-FILE.


READ-FILE1.
READ TEMP FILE AT END MOVE “Y’ TO EOF.
END-READ-FILE1.

REPORT-PARA.
DISPLAY ERASE.
MOVE “N” TO EOF.
MOVE “ ” TO TCODE.
OPEN INPUT TEMP-FILE.
DISPLAY “WHICH RECORD YOU WANT TO SEE (ENO…)…:” AT 1205.
ACCEPT TCODE AT 1240.
PERFORM READ-FILE1 UNTILL EOF=”Y”.
OR TCODE=TENO.
IF TCODE = TENO THEN
DISPLAY ERASE
DISPLAY “ THE RECORD OF EMPLOYEE SALARY”
DISPLAY “ ”
DISPLAY “ -----------------------------”
DISPLAY “EMPLOYEE CODE: ”,TENO
DISPLAY “ ”
DISPLAY “ ”
DISPLAY “EMPLOYEE NAME : ”,TENAME
DISPLAY “ ”
ACCEPT TEMP.
END-IF.
ACCEPT TEMP.
CLOSE TEMP-FILE.
END-REPORT-PARA.

IT-PARA.
COMPUTE RPAY = RPAY * 12.
IF RPAY > 0 AND RPAY < 50000 THEN
MOVE ZERO TO IT TAX.
ELSE
IF RPAY >= 50000 AND RPAY < 80000 THEN
MOVE 15000 TO IT-TAX.
ELSE
IF RPAY >= 80000 AND RPAY < 100000 THEN
COMPUTE IT_TAX = 10 * RPAY + 15000
ELSE
COMPUTE IT_TAX = 20 * RPAY / 100 + 15000
END-IF
END-IF
END-IF.
IF IT-TAX <> ZERO THEN
IF MOD = “Y” OR MOD= “y” THEN
COMPUTE TITAX =IT TAX / 12
ELSE
COMPUTE ITAX =IT-TAX /12
END-IF
ELSE
IF MOD = “Y” RO MOD “y” THEN
MOVE ZERO TO TITAX
ELSE
MOVE ZERO TO ITAX
END-IF
END-IF.
END-IT-PARA.

MOD-PARA.
DISPLAY ERASE.
OPEN OUTPUT TEMP-FILE.
MOVE “N” TO EOF.
MOVE “ ” TO TCODE.
MOVE “N” TO TMEP.
DISPLAY “ENTER THE EMP-NO WHICH U WANT TO MODIFY:” AT 0605
ACCEPT TCODE AT 0645.
PERFORM TRANSFER-PARA UNTIL EOF = “Y” OR EOF =”y”.
CLOSE TMEP-FILE.
CLOSE WORKER-FILE.
PERFORM T-SALARY-PARA.
END-MOD-PARA.

TRANSFER-PARA.
READ WORKER-FILE AT END MOVE “Y” TO EOF.
MOVE “ ” TO TEMP-REC.
IF TCODE = ENO THEN
MOVE TCODE TO TENO
DISPLAY “ ”
DISPLAY “ENTER THE EMPLOYEE NAME……:” AT 0805
ACCEPT TENAME AT 0836
DISPLAY “ ”
DISPLAY “REGULAR STAFF OR NOT (Y/N)……:” AT 1005
PERFORM UNTIL TRG=”Y” OR TRG=”Y”
OR TRG=”N” OR TRG=”n”
MOVE SPACES TO TRG
ACCEPT TRP AT 1036
EN-PERFORM
DISPLAY “ ”
MOVE TRG TO LRG

IF THE =”Y” RO TRG =”T” THEN
DISPLAY “ENTER THE BASIC ……” AT 1205.
ACCEPT TBS AT 1236
DISPLAY “ “
DISPLAY “ENTER THE PERCENT OF DA” AT 1405.
ACCEPT TDA AT 1436
DISPLAY “ “
DISPLAY “ENTER THE OTHER Benefit…” AT 1605
ACCEPT TOB AT 1636
DISPLAY “ “
DISPLAY “ENTER THE PROVIDENT FUND .. . .” AT 1805
ACCEPT TPFD AT 1836
MOVE TBS TO RPAY
PERFORM IT-PARA
MOVE TBS TO LBS
MOVE TDA TO LDA
MOVE TOB TO LOB
MOVE TITAX TO LITAX
MOVE TPFD TO DPFI
PERFORM CALCU-PARA
WRITE TEMP-REC
ELSE
DISPLAY “NO. OF DAYS WORKED IN MONTH .. .. .. “ AT 1205
PERFORM UNTIL TND >= 01 AND TND <= 31
MOVE ZERO TO TND
ACCEPT TND AT 1230
END PERFORM
DISPLAY “ “

ACCEPT TDW AT 1436
MOVE TND TO LND
MOVE TDW TO LDW
PERFORM CALCU-PARA
WRITE TEMP-REC
END-IF
ELSE
WRITE TEMP-REC FROM WORKER-REC
END-IF.
SEAR-PARA.
Display ERASE.
MOVE “N” TO EOF.
MOVE “ “ TO TEMP-FILE.

DISPLAY “WHICH RECORD U WANT TO SEE (ENO .. .) .. .:”AT 1205.
ACCEPT TCODE AT 1240.
PERFORM READ-FILE1 UNTIL EOF = “Y”
OR TCODE=TENO.
IF TCODE = TENO THEN
DISPLAY ERASE
DISPLAY “ THE RECORD OF PARTICULAR EMPLOYEE”
DISPLAY “ “
DISPLAY “ -------------------------------------“
DISPLAY “EMPLOYEE CODE :”,TENO
DISPLAY “ “

Find-data.
read worker-file at end move “y” to eof.



CONVERT-PARA.
OPEN INPUT WORKER-FILE.
OPEN OUTPUT TEMP-FILE.
MOVE “N” TO EOF.
PERFORM CON-PARA UNTIL EOF =”Y” OR EOF =”Y”
CLOSE WORKER-FILE.
CLOSE TEMP-FILE.
END-CONVERT-PARA.

CON-PARA.
READ WORKER-FILE AT END MOVE “Y” TO EOF.
MOVE “ ” TO TEMP-REC.
WRITE TEMP-REC FROM WORKER-REC.
END-CON-PARA.

T-SALARY-PARA.
OPEN INPUT TEMP-FILE.
OPEN OUTPUT WORKER-FILE.
MOVE “N” TO EOF.
PERFORM READ-FILE2 UNTIL EOF=”Y” RO EOF =”y”.
CLOSE TEMP-FILE, WORKER-FILE.
END-T-SALARY-PARA.
READ-FILE2.
READ TEMP-FILE AT END MOVE “Y” TO EOF.
MOVE “ ” TO WORKER-REC.
WHITE WORKER-REC FROM TEMP-REC.
END-READ-FILE2.