Created
September 3, 2008 19:35
-
-
Save joefiorini/8641 to your computer and use it in GitHub Desktop.
Came across a COBOL app I wrote in college. Thought it'd be fun to post.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
IDENTIFICATION DIVISION. | |
PROGRAM-ID. EXAMPLE2. | |
************************************************************************ | |
* Put your name and a description of the program here * | |
* * | |
************************************************************************ | |
ENVIRONMENT DIVISION. | |
INPUT-OUTPUT SECTION. | |
FILE-CONTROL. | |
SELECT INFILE ASSIGN TO "BANKIN.DAT". | |
SELECT OUTFILE ASSIGN TO "BANKOUT.DAT". | |
************************************************************************ | |
DATA DIVISION. | |
FILE SECTION. | |
FD INFILE. | |
01 ACCOUNT-RECORD-IN. | |
05 AR-CUSTOMER-NAME-IN PIC X(20). | |
05 AR-PRINCIPAL-IN PIC 9(7)V99. | |
05 AR-DEPOSIT-IN PIC 9(7)V99. | |
05 AR-DEPOSIT-DAYS-IN PIC 99. | |
05 AR-PRINCIPAL-RATE-IN PIC 99V99. | |
05 AR-DEPOSIT-RATE-IN PIC 99V99. | |
FD OUTFILE. | |
01 OUTPUT-BUFFER PIC X(80). | |
WORKING-STORAGE SECTION. | |
01 ACCOUNT-RECORD. | |
* Declarations for various line formats. | |
01 DETAIL-LINE-OUT. | |
05 PIC XX VALUE SPACES. | |
05 DL-CUSTOMER-NAME-OUT PIC X(20). | |
05 PIC XX VALUE SPACES. | |
05 DL-OLD-PRINCIPAL-OUT PIC Z,ZZZ,ZZ9.99. | |
05 PIC XX VALUE SPACES. | |
05 DL-DEPOSIT-OUT PIC Z,ZZZ,ZZ9.99. | |
05 PIC XX VALUE SPACES. | |
05 DL-INTEREST-OUT PIC Z,ZZZ,ZZ9.99. | |
05 PIC XX VALUE SPACES. | |
05 DL-NEW-PRINCIPAL-OUT PIC $Z,ZZZ,ZZ9.99. | |
05 PIC XX VALUE SPACES. | |
01 MAIN-HEADER. | |
05 PIC X(25) VALUE SPACES. | |
05 PIC X(45) VALUE | |
'Monthly Report on Customer Accounts'. | |
* You need to define the header lines and the summary line appropriately | |
01 COLUMN-HEADERS-LINE1. | |
05 COLUMN-LINE1-HEADER1 PIC X(15) VALUE ' CUSTOMER NAME'. | |
05 COLUMN-LINE1-SPACES1 PIC X(12) VALUE SPACES. | |
05 COLUMN-LINE1-HEADER2 PIC X(8) VALUE | |
'STARTING'. | |
05 COLUMN-LINE1-SPACES2 PIC X(22) VALUE SPACES. | |
05 COLUMN-LINE1-HEADER3 PIC X(8) VALUE 'INTEREST'. | |
05 COLUMN-LINE1-SPACES3 PIC X(3) VALUE SPACES. | |
05 COLUMN-LINE1-HEADER4 PIC X(6) VALUE | |
'ENDING'. | |
01 COLUMN-HEADERS-LINE2. | |
05 COLUMN-LINE2-SPACES1 PIC X(27) VALUE SPACES. | |
05 COLUMN-LINE2-HEADER1 PIC X(7) VALUE 'BALANCE'. | |
05 COLUMN-LINE2-SPACES2 PIC X(7) VALUE SPACES. | |
05 COLUMN-LINE2-HEADER2 PIC X(7) VALUE 'DEPOSIT'. | |
05 COLUMN-LINE2-SPACES3 PIC X(10) VALUE SPACES. | |
05 COLUMN-LINE2-HEADER3 PIC X(6) VALUE 'EARNED'. | |
05 COLUMN-LINE2-SPACES4 PIC X(4) VALUE SPACES. | |
05 COLUMN-LINE2-HEADER4 PIC X(7) VALUE 'BALANCE'. | |
01 DASH-LINE-OUT PIC X(80) VALUE ALL '-'. | |
01 SUMMARY-LINE-OUT. | |
05 SUMMARY-SPACES1 PIC X(36) VALUE SPACES. | |
05 SUMMARY-TOTAL-INTEREST-HEADER PIC X(14) VALUE | |
'TOTAL INTEREST'. | |
05 PIC X(5) VALUE SPACES. | |
05 SUMMARY-TOTAL-INTEREST PIC $ZZ,ZZZ,ZZ9.99 | |
01 FILE-VARIABLES. | |
05 END-OF-DATA-FLAG PIC X VALUE "N". | |
88 NO-MORE-DATA VALUE "Y". | |
01 CALCULATION-RESULTS. | |
05 WS-INTEREST PIC 9(7)V99. | |
* Put declarations for other temp/calculation results here | |
05 WS-PRINCIPAL PIC 9(7)V99. | |
05 WS-DEPOSIT PIC 9(7)V99. | |
05 WS-DEPOSIT-DAYS PIC 99. | |
05 WS-PRINCIPAL-RATE PIC 99V99. | |
05 WS-DEPOSIT-RATE PIC 99V99. | |
01 TEMP-STORAGE. | |
05 WS-PRINC-INTR PIC 9(9)V99. | |
05 WS-P-MONTHLY-INTEREST PIC 99V99. | |
05 WS-D-MONTHLY-INTEREST PIC 99V99. | |
05 WS-DEPOSIT-DEPINT PIC 9(9)V99. | |
05 WS-MONTHS PIC 99. | |
05 WS-SOLUTION PIC 9(10)V99. | |
************************************************************************ | |
PROCEDURE DIVISION. | |
100-MAIN-LOGIC. | |
* open files and introduce program to user | |
OPEN INPUT INFILE | |
OUTPUT OUTFILE | |
DISPLAY " " | |
DISPLAY "RUNNING..." | |
DISPLAY " " | |
* Put the statements to print the headers here | |
PERFORM 105-PRINT-HEADERS | |
* read records and process them until input | |
* is exhausted | |
PERFORM UNTIL NO-MORE-DATA | |
READ INFILE | |
AT END | |
MOVE "Y" TO END-OF-DATA-FLAG | |
NOT AT END | |
PERFORM 200-PROCESS-RECORD | |
END-READ | |
END-PERFORM | |
WRITE OUTPUT-BUFFER FROM SUMMARY-LINE-OUT. | |
* close files & wrap up | |
CLOSE INFILE | |
* Format and print the line of dashes and the line with the total interest here | |
CLOSE OUTFILE | |
DISPLAY "Processing completed" | |
STOP RUN. | |
105-PRINT-HEADERS. | |
WRITE OUTPUT-BUFFER FROM MAIN-HEADER. | |
WRITE OUTPUT-BUFFER FROM COLUMN-HEADERS-LINE1. | |
WRITE OUTPUT-BUFFER FROM COLUMN-HEADERS-LINE2. | |
WRITE OUTPUT-BUFFER FROM DASH-LINE-OUT. | |
200-PROCESS-RECORD. | |
MOVE AR-CUSTOMER-NAME-IN TO DL-CUSTOMER-NAME-OUT | |
MOVE AR-PRINCIPAL-IN TO DL-OLD-PRINCIPAL-OUT | |
MOVE AR-DEPOSIT-IN TO DL-DEPOSIT-OUT | |
* You should replace the next 2 lines with appropriate calculations | |
MOVE AR-PRINCIPAL-RATE-IN TO WS-PRINCIPAL-RATE. | |
MOVE AR-DEPOSIT-RATE-IN TO WS-DEPOSIT-RATE. | |
MOVE AR-PRINCIPAL-IN TO WS-PRINCIPAL. | |
MOVE AR-DEPOSIT-IN TO WS-DEPOSIT. | |
MOVE AR-DEPOSIT-DAYS-IN TO WS-DEPOSIT-DAYS. | |
* Get monthly interest rates | |
DIVIDE WS-PRINCIPAL-RATE BY 12 TO WS-P-MONTHLY-INTEREST. | |
DIVIDE WS-DEPOSIT-RATE BY 12 TO WS-D-MONTHLY-INTEREST. | |
MULTIPLY WS-PRINCIPAL BY WS-P-MONTHLY-INTEREST TO WS-PRINC-INTR. | |
MULTIPLY WS-DEPOSIT BY WS-D-MONTHLY-INTERST TO WS-DEPOSIT-DEPINT. | |
DIVIDE WS-DEPOSIT-DAYS BY 30 TO WS-MONTHS. | |
MULTIPLY WS-DEPOSIT-DEPINT BY WS-MONTHS TO WS-INTEREST. | |
MULTIPLY WS-PRINC-INTR BY WS-SOLUTION TO WS-INTEREST. | |
MOVE WS-INTEREST TO DL-INTEREST-OUT. | |
WRITE OUTPUT-BUFFER FROM DETAIL-LINE-OUT. | |
************************************************************************ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment