****************************************************************
**
** PROGRAM NAME: JONAS4.RPG
** AUTHOR: JONAS WIK
** DESCRIPTION: THIS PROGRAM READS IN A
LOAN TAKER(NUMBER&
** NAME) THE LOAN AMOUNT, THE NUMBER OF
YEARS TO PAY OFF
** THE LOAN. THE PROGRAM THEN PRINTS
EACH LOANTAKER WITH
** THE AMOUNT, THE NUMBER OF MONTHS TO
PAY IT OFF IN
** AND THE AMOUNT DUE EACH MONTH AND THE
TOTAL AMOUNT
** ACCUMULATED.
**
****************************************************************
FMMORTP IP
F 80 DISK
FQSYSPRT
O F
80 OF PRINTER
****************************************************************
**
** INPUT RECORD DESCRIPTION:
**
** REFNO =REFERENCE NUMBER 5 CHARACTERS
** CUSNAM=CUSTOMER NAME 20 CHARACTERS
** YEARS =NUMBER OF YEARS FOR LOAN 2 DIGITS NO DECIMAL
** FILLER=NON USED CHARACTERS 5 CHARACTERS
** LOAN
=THE LOAN AMOUNT 6
DIGITS NO DECIMAL
** FILL2 =NON USED CHARACTERS 42 CHARACTERS
**
****************************************************************
IMMORTP NS 01
I 1 50REFNO
I 6 25 CUSNAM
I 26 270YEARS
I 28 32 FILLER
I 33 380LOAN
I 39 80 FILL2
****************************************************************
**
** DECLARED DATASTRUCTURES(#WORK)
**
** MONTHS=YEARS * 12 4 DIGITS NO DECIMALS
** MONPAY=(LOAN*PAYMNT)/MONTHS 6 DIGITS
2 DECIMALS
** PAYMNT=1.005 RAISED TO THE NTH POWER 10
DIG. 9 DECIMALS
** TEMP
=TEMPORARY FOR STORING VALUES 9
DIG. 2 DECIMALS
** COUNT =USED FOR COUNTING 3 DIG. NO DECIMALS
**
****************************************************************
I#WORK DS
I 1 40MONTHS
I 5 102MONPAY
I 11 209PAYMNT
I 21 292TEMP
I 30 330COUNT
****************************************************************
**
** ACCPAY=ACCUMULATED COST FOR LOAN 10 DIG. 2 DECIMALS
**
****************************************************************
I#TOTAL DS
I 1 102ACCPAY
****************************************************************
**
** ALL CALCULATIONS ARE DONE HERE BY
CALLING TWO SUBROUTINES
** ACC AND PAY
**
** INDICATORS USED:
** OF = OVERFLOW INDICATOR.
**
****************************************************************
C Z-ADD0 ACCPAY
C EXCPTHEAD
C EXSR PAY
C EXSR ACC
****************************************************************
**
** SUBROUTINE PAY:
**
** CALCULATES THE PAYMNT BY MULTIPLYING
1.005 WITH ITSELF UN
**
TIL THE COUNT IS EQUAL TO THE MONTHS.
** IT ALSO COMPUTES THE MONPAY BY
(LOAN*PAYMNT)/MONTHS
** IT ALSO ADDS THE MONPAY TO THE ACCPAY.
AND PRINTS THE
** FIRST DETAIL LINE.
**
****************************************************************
CSR PAY BEGSR
C YEARS MULT 12 MONTHS
C Z-ADD0 COUNT
C Z-ADD1.005 PAYMNT
C COUNT DOWLEMONTHS
C PAYMNT MULT 1.005 PAYMNT
H
C ADD 1
COUNT
C END
C LOAN MULT PAYMNT TEMP
H
C TEMP DIV
MONTHS MONPAY H
C ADD MONPAY
ACCPAY
C EXCPTDET1
C ENDSR
****************************************************************
**
** SUBROUTINE ACC:
**
** THIS ADDS THE MONPAY TO THE ACCPAY AND PRINTS
THE SECOND
** DETAIL LINE(DET2) AND THE HEADER ON NEW
PAGE IF OVERFLOW.
** IF OVERFLOW THE FIRST DETAIL LINE IS
ALSO PRINTED(DET1)
**
****************************************************************
CSR ACC BEGSR
C Z-ADD2 COUNT
C COUNT DOWLEMONTHS
C ADD MONPAY
ACCPAY
C ADD 1
COUNT
C EXCPTDET2
C OF EXCPTHEAD
C OF ADD MONPAY
ACCPAY
C OF EXCPTDET1
C OF ADD 1
COUNT
C SETOF OF
C END
C ENDSR
****************************************************************
**
** OUTPUT STARTS HERE. ALL OUTPUT IS
WRITTEN BY USING EXCPT
**
****************************************************************
OQSYSPRT
E 301 HEAD
O 4 'DATE'
O UDATE Y 13
O 51 'LOAN
INSTALLMENT REPORT'
O 75 'PAGE'
O PAGE Z 80
O E 2 HEAD
O 10 'JONAS
WIK'
O E 1 HEAD
O 12 'REFERENCE'
O 24
'CUSTOMER'
O 43 'LOAN'
O 55 'NUMBER
OF'
O 66 'MONTHLY'
O 80
'ACCUMULATED'
O E 12 HEAD
O 10 'NUMBER'
O 22 'NAME'
O 44 'AMOUNT'
O 53 'MONTHS'
O 66 'PAYMENT'
O 78 'PAYMENT'
O E
1 DET1
O REFNO 10
O CUSNAM 33
O 36 '$'
O LOAN J 44
O MONTHSZ 52
O 56 '$'
O MONPAYJ 65
O 66 '$'
O ACCPAYJ 80
O E
1 DET2
O 56 '$'
O MONPAYJ 65
O 66 '$'
O ACCPAYJ 80
****************************************************************
**
** T H E E N D
**
****************************************************************