Annuity Valuation Project
This project involves developing a COBOL program to run on a mainframe, calculating monthly annuity payments based on a valid loan amount, interest rate, and duration in years.
Source-code:
IDENTIFICATION DIVISION.
PROGRAM-ID. ANNUITY.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TOTAL-LOAN PIC 9(9)V99 VALUE 100000.
01 INTEREST-RATE PIC 999V99 VALUE 0.05. *> INTEREST OF 5%
01 INTEREST-RATEP PIC 999V99 VALUE ZERO.
01 MONTHS PIC 999 VALUE ZERO.
01 YEARS PIC 999 VALUE ZERO.
01 MONTHLY-PAYMENT PIC 9(9)V99 VALUE ZERO.
01 VALID-INPUT PIC X VALUE 'N'.
01 INPUT-STRING PIC X(10).
01 IS-NUMERIC PIC X(3) VALUE 'N'.
PROCEDURE DIVISION.
DISPLAY "I'M KATE! ALLOW ME TO ASSIST YOU WITH YOUR LOAN.".
MOVE 'N' TO VALID-INPUT
PERFORM UNTIL VALID-INPUT = 'Y'
DISPLAY 'ENTER YOUR TOTAL LOAN.'
ACCEPT INPUT-STRING
IF INPUT-STRING NOT ALPHABETIC
COMPUTE TOTAL-LOAN = FUNCTION NUMVAL (INPUT-STRING)
IF TOTAL-LOAN > 0 AND <= 999999999
MOVE 'Y' TO VALID-INPUT
ELSE DISPLAY 'NOT 9 DIGITS'
END-IF
ELSE DISPLAY 'NOT NUMERIC'
END-IF
END-PERFORM.
MOVE 'N' TO VALID-INPUT
PERFORM UNTIL VALID-INPUT = 'Y'
DISPLAY 'PLEASE ENTER YOUR INTEREST RATE.'
ACCEPT INPUT-STRING
IF INPUT-STRING NOT ALPHABETIC
COMPUTE INTEREST-RATE = FUNCTION NUMVAL (INPUT-STRING)
IF INTEREST-RATE > 0 AND <= 100
COMPUTE INTEREST-RATE = INTEREST-RATE / 100
MOVE 'Y' TO VALID-INPUT
ELSE DISPLAY 'MUST BE BETWEEN 1 TO 100.'
END-IF
ELSE DISPLAY 'NOT NUMERIC'
END-IF
END-PERFORM.
MOVE 'N' TO VALID-INPUT
PERFORM UNTIL VALID-INPUT = 'Y'
DISPLAY 'PLEASE ENTER YEARS.'
ACCEPT INPUT-STRING
IF INPUT-STRING NOT ALPHABETIC
COMPUTE YEARS = FUNCTION NUMVAL (INPUT-STRING)
IF YEARS > 0 AND <= 100
MOVE 'Y' TO VALID-INPUT
ELSE DISPLAY 'MUST BE BETWEEN 1 AND 100.'
END-IF
ELSE DISPLAY 'NOT NUMERIC'
END-IF
END-PERFORM.
COMPUTE INTEREST-RATEP = INTEREST-RATE * 100.
DISPLAY 'TOTAL-LOAN: ' TOTAL-LOAN ' USD - INTEREST-RATE: ' I
- NTEREST-RATEP '%'.
DISPLAY ' Y M AMOUNT '.
DISPLAY '--- --- -------------'.
PERFORM YEARS TIMES
ADD 12 TO MONTHS
COMPUTE MONTHLY-PAYMENT = TOTAL-LOAN * FUNCTION ANNUITY ((I
- NTEREST-RATE / 12), MONTHS)
COMPUTE YEARS = MONTHS / 12
DISPLAY YEARS ' ' MONTHS ' ' MONTHLY-PAYMENT ' USD'
END-PERFORM
GOBACK.
Example Output: