Tuesday, May 19, 2009

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.

No comments:

Post a Comment