IDENTIFICATIONDIVISION. * PROGRAM-ID. LOANT. * DATE-WRITTEN. 04/16/84. * * MODIFIED 10/18/97. * * ******************************* * * * * * Judson D. McClendon * * * Sun Valley Systems * * * 329 37th Court N.E. * * * Birmingham, AL 35215 * * * 205-853-8440 * * * * * ******************************* * ENVIRONMENTDIVISION. * CONFIGURATIONSECTION. * INPUT-OUTPUTSECTION. * FILE-CONTROL. * I-O-CONTROL. * DATADIVISION. * FILESECTION. * WORKING-STORAGESECTION. * * ALPHA 77'S * 77 WS-ANSWER PIC X(01) VALUESPACE. 77 WS-COMMAND PIC X(01) VALUESPACE. 77 WS-ERR-MSG PIC X(40) VALUESPACES. * * NUMERIC 77'S * 77 WS-ESCAPE-FLAG PIC9(01) VALUEZERO. * ****************************************************************** * * * L O A N W O R K A R E A * * * ****************************************************************** * 01 LOAN-WORK-AREA. 03 LW-LOAN-ERROR-FLAG PIC9(01) COMP. 03 LW-LOAN-AMT PIC9(06)V9(02) COMP. 03 LW-INT-RATE PIC9(02)V9(02) COMP. 03 LW-NBR-PMTS PIC9(03) COMP. 03 LW-PMT-AMT PIC9(06)V9(02) COMP. 03 LW-INT-PMT PIC9(01)V9(12) COMP. 03 LW-TOTAL-PMTS PIC9(06)V9(02) COMP. 03 LW-TOTAL-INT PIC9(06)V9(02) COMP. *
SCREEN SECTION. * * * C O M M A N D S C R E E N * 01 COMMAND-SCREEN. 03BLANK SCREEN. 03LINE01COLUMN20VALUE "L O A N C O M P U T A T I O N". 03LINE03COLUMN01VALUE "Press: P=Compute Payment Amount,". 03LINE04COLUMN08VALUE "L=Compute Loan Amount,". 03LINE05COLUMN05VALUE "or ESCape to exit: ". 03PIC X TO WS-COMMAND AUTO. * * * L O A N S C R E E N * 01 LOAN-SCREEN. 03LINE03COLUMN01 ERASE EOS. 03LINE03COLUMN01VALUE"Payment Amt: ". 03PIC ZZZZZ9.99USING LW-PMT-AMT. 03LINE04COLUMN01VALUE"Interest Rate: ". 03PIC Z9.99USING LW-INT-RATE. 03LINE05COLUMN01VALUE"Number Payments: ". 03PIC ZZ9 USING LW-NBR-PMTS. * * * L O A N A N S W E R S C R E E N * 01 LOAN-ANSWER-SCREEN. 03LINE07COLUMN01VALUE"Loan Amount: ". 03PIC ZZZ,ZZ9.99FROM LW-LOAN-AMT. 03LINE08COLUMN01VALUE"Total Inter: ". 03PIC ZZZ,ZZ9.99FROM LW-TOTAL-INT. 03LINE09COLUMN01VALUE"Total Pmts: ". 03PIC ZZZ,ZZ9.99FROM LW-TOTAL-PMTS. * * * P A Y M E N T S C R E E N * 01 PAYMENT-SCREEN. 03LINE03COLUMN01 ERASE EOS. 03LINE03COLUMN01VALUE"Loan Amount: ". 03PIC ZZZZZ9.99USING LW-LOAN-AMT. 03LINE04COLUMN01VALUE"Interest Rate: ". 03PIC Z9.99USING LW-INT-RATE. 03LINE05COLUMN01VALUE"Number Payments: ". 03PIC ZZ9 USING LW-NBR-PMTS. * * * P A Y M E N T A N S W E R S C R E E N * 01 PAYMENT-ANSWER-SCREEN. 03LINE07COLUMN01VALUE"Payment Amt: ". 03PIC ZZZ,ZZ9.99FROM LW-PMT-AMT. 03LINE08COLUMN01VALUE"Total Inter: ". 03PIC ZZZ,ZZ9.99FROM LW-TOTAL-INT. 03LINE09COLUMN01VALUE"Total Pmts: ". 03PIC ZZZ,ZZ9.99FROM LW-TOTAL-PMTS. * * * E R R O R S C R E E N * 01 ERROR-SCREEN. 03LINE24COLUMN20 HIGHLIGHT BLANKLINE PIC X(40) FROM WS-ERR-MSG. 03COLUMN70 PIC X TO WS-ANSWER AUTO.
/ PROCEDUREDIVISION. * * * C O N T R O L * 000000-CONTROL. * INITIALIZE LOAN-WORK-AREA. IF (LW-LOAN-AMT ZERO) OR
(LW-INT-RATE ZERO) OR
(LW-NBR-PMTS ZERO) MOVE1TO LW-LOAN-ERROR-FLAG GOTO004000-EXIT. * DISPLAY COMMAND-SCREEN. * PERFORM000100-GET-COMMAND
THRU 000100-EXIT UNTIL (WS-ESCAPE-FLAG = 1). * 000000-EXIT. STOPRUN. * * * G E T C O M M A N D * 000100-GET-COMMAND. * MOVESPACETO WS-COMMAND. ACCEPT COMMAND-SCREEN ON ESCAPE MOVE1TO WS-ESCAPE-FLAG GOTO000100-EXIT. INSPECT WS-COMMAND CONVERTING"abcdefghijklmnopqrstuvwxyz" TO"ABCDEFGHIJKLMNOPQRSTUVWXYZ". * IF (WS-COMMAND = "P") DISPLAY PAYMENT-SCREEN PERFORM000500-FIND-PAYMENT
THRU 000500-EXIT ELSE IF (WS-COMMAND = "L") DISPLAY LOAN-SCREEN PERFORM000600-FIND-LOAN
THRU 000600-EXIT. * DISPLAY COMMAND-SCREEN. * 000100-EXIT. EXIT. * * * F I N D P A Y M E N T * 000500-FIND-PAYMENT. * ACCEPT PAYMENT-SCREEN ON ESCAPE GOTO000500-EXIT. * PERFORM004000-COMPUTE-PAYMENT
THRU 004000-EXIT. * IF (LW-LOAN-ERROR-FLAG = 1) MOVE"PARAMETER ERROR"TO WS-ERR-MSG DISPLAY ERROR-SCREEN GOTO000500-FIND-PAYMENT. * DISPLAY PAYMENT-ANSWER-SCREEN. * MOVE"PRESS A KEY TO CONTINUE"TO WS-ERR-MSG.. DISPLAY ERROR-SCREEN. ACCEPT ERROR-SCREEN. * 000500-EXIT. EXIT. * * * F I N D L O A N * 000600-FIND-LOAN. * ACCEPT LOAN-SCREEN ON ESCAPE GOTO000600-EXIT. * PERFORM004100-COMPUTE-LOAN
THRU 004100-EXIT. * IF (LW-LOAN-ERROR-FLAG = 1) MOVE"PARAMETER ERROR"TO WS-ERR-MSG DISPLAY ERROR-SCREEN GOTO000600-FIND-LOAN. * DISPLAY LOAN-ANSWER-SCREEN. * MOVE"PRESS A KEY TO CONTINUE"TO WS-ERR-MSG.. DISPLAY ERROR-SCREEN. ACCEPT ERROR-SCREEN. * 000600-EXIT. EXIT. ****************************************************************** * * * C O M P U T E L O A N P A Y M E N T * * * * Judson D. McClendon * * Sun Valley Systems * * 329 37th Court NE * * Birmingham, AL 35215 * * 205/853-8440 * * * * USAGE: MOVE <LOAN AMOUNT> TO LW-LOAN-AMT. * * MOVE <ANNUAL INT %> TO LW-INT-RATE. * * MOVE <NUMBER PAYMENTS> TO LW-NBR-PMTS. * * PERFORM 004000-COMPUTE-PAYMENT * * THRU 004000-EXIT. * * * * RESULT: LW-LOAN-ERROR-FLAG = 0 IF CALC SUCCESSFUL * * LW-LOAN-ERROR-FLAG = 1 IF CALC NOT SUCCESSFUL * * * * IF LW-LOAN-ERROR-FLAG = 0 * * * * LW-PMT-AMT = AMOUNT OF MONTHLY PAYMENT * * LW-TOTAL-PMTS = TOTAL AMOUNT OF PAYMENTS * * LW-TOTAL-INT = TOTAL AMOUNT OF INTEREST * * * ****************************************************************** * 004000-COMPUTE-PAYMENT. * MOVE0TO LW-LOAN-ERROR-FLAG. * IF (LW-LOAN-AMT ZERO) OR
(LW-INT-RATE ZERO) OR
(LW-NBR-PMTS ZERO) MOVE1TO LW-LOAN-ERROR-FLAG GOTO004000-EXIT. * COMPUTE LW-INT-PMT = LW-INT-RATE / 1200 ONSIZEERROR MOVE1TO LW-LOAN-ERROR-FLAG GOTO004000-EXIT. * COMPUTE LW-PMT-AMT ROUNDED =
(LW-LOAN-AMT * LW-INT-PMT) /
(1 - 1.00000000 / ( (1 + LW-INT-PMT) ** LW-NBR-PMTS) ) ONSIZEERROR MOVE1TO LW-LOAN-ERROR-FLAG GOTO004000-EXIT. * COMPUTE LW-TOTAL-PMTS = LW-PMT-AMT * LW-NBR-PMTS ONSIZEERROR MOVE1TO LW-LOAN-ERROR-FLAG GOTO004000-EXIT. * COMPUTE LW-TOTAL-INT = LW-TOTAL-PMTS - LW-LOAN-AMT. * 004000-EXIT. EXIT. * * * ****************************************************************** * * * C O M P U T E L O A N A M O U N T * * * * Judson D. McClendon * * Sun Valley Systems * * 329 37th Court NE * * Birmingham, AL 35215 * * 205/853-8440 * * * * USAGE: MOVE <MONTHLY PAYMENT> TO LW-LOAN-AMT. * * MOVE <ANNUAL INT %> TO LW-INT-RATE. * * MOVE <NUMBER PAYMENTS> TO LW-NBR-PMTS. * * PERFORM 004100-COMPUTE-LOAN * * THRU 004100-EXIT. * * * * RESULT: LW-LOAN-ERROR-FLAG = 0 IF CALC SUCCESSFUL * * LW-LOAN-ERROR-FLAG = 1 IF CALC NOT SUCCESSFUL * * * * IF LW-LOAN-ERROR-FLAG = 0 * * * * LW-LOAN-AMT = AMOUNT OF LOAN * * LW-TOTAL-PMTS = TOTAL AMOUNT OF PAYMENTS * * LW-TOTAL-INT = TOTAL AMOUNT OF INTEREST * * * ****************************************************************** * 004100-COMPUTE-LOAN. * MOVE0TO LW-LOAN-ERROR-FLAG. * IF (LW-PMT-AMT ZERO) OR
(LW-INT-RATE ZERO) OR
(LW-NBR-PMTS ZERO) MOVE1TO LW-LOAN-ERROR-FLAG GOTO004100-EXIT. * COMPUTE LW-INT-PMT = LW-INT-RATE / 1200 ONSIZEERROR MOVE1TO LW-LOAN-ERROR-FLAG GOTO004100-EXIT. * COMPUTE LW-LOAN-AMT = LW-PMT-AMT *
( (1 - 1.00000000 / ( (1 + LW-INT-PMT) ** LW-NBR-PMTS) )
/ LW-INT-PMT) ONSIZEERROR MOVE1TO LW-LOAN-ERROR-FLAG GOTO004100-EXIT. COMPUTE LW-TOTAL-PMTS = LW-PMT-AMT * LW-NBR-PMTS ONSIZEERROR MOVE1TO LW-LOAN-ERROR-FLAG GOTO004100-EXIT. COMPUTE LW-TOTAL-INT = LW-TOTAL-PMTS - LW-LOAN-AMT. * COMPUTE LW-TOTAL-PMTS = LW-PMT-AMT * LW-NBR-PMTS ONSIZEERROR MOVE1TO LW-LOAN-ERROR-FLAG GOTO004100-EXIT. * COMPUTE LW-TOTAL-INT = LW-TOTAL-PMTS - LW-LOAN-AMT. * 004100-EXIT. EXIT.
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-11)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.