Skip to content

Instantly share code, notes, and snippets.

@joefiorini
Created September 3, 2008 19:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joefiorini/8641 to your computer and use it in GitHub Desktop.
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.
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