ex.hlp (Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
Pmt# and PPmt# Function Example
                        Example                Contents  Index  Back
──────────────────────────────────────────────────────────────────────────────
' This example uses the Pmt# function to determine the payment for a loan
' over a prescribed period, at a fixed annual percentage rate. It also uses
' the PPmt# function to determine what part of the payment is principal. The
' program subtracts the principal payment from the monthly payment to
' determine the interest part of the payment.
 
' Note: To run this example, you must use the FINANCE.QLB Quick library.
' The FINANCE.BI include file must also be present.
 
' To try this example:
' 1. Choose New Project from the File menu
' 2. Copy the code example below to the code window
' 3. Press F5 to run the example
 
'$INCLUDE: 'FINANCE.BI'
 
 CONST ENDPER = 0
 CONST BEGINPER = 1
 CONST DOLLARFORMAT$ = "$#,###.##     "
 CONST PERCENTFORMAT$ = "##.##"
 FutrVal = 0
 DEFDBL A-Z
 DIM St AS INTEGER
 
 CLS                               ' Clear the screen
 INPUT "Enter the annual percentage rate of your loan"; APR
 PRINT
 INPUT "What is the principal amount of your loan"; PresVal
 PRINT
 INPUT "How many monthly payments is your loan set up for"; Periods
 PRINT
 DO WHILE PaymentTypeString$ <> "B" AND PaymentTypeString$ <> "E"
     PRINT "Are your payments due at the beginning or end of the month? ";
     PaymentTypeString$ = UCASE$(INPUT$(1))
 LOOP
 ' Set up the correct payment type.
 IF PaymentTypeString$ = "B" THEN
     PaymtType = BEGINPER
     PRINT "Beginning"
 ELSE
     PaymtType = ENDPER
     PRINT "End"
 END IF
 PRINT
 ' Calculate and format the monthly payment.
 ' Put APR in proper form.
 IF APR > 1 THEN APR = APR / 100
 Payment = ABS(-Pmt#(APR / 12, Periods, PresVal, FutrVal, PaymtType, St))
 ' Examine St to determine success of failure of any financial function.
 IF St THEN
     ' If unsuccessful, announce a problem.
     PRINT "There was an error in calculating the monthly payment."
 ELSE
     ' Display the calculated monthly payment.
     PRINT "Your monthly payment is ";
     PRINT USING DOLLARFORMAT$; Payment
     PRINT
     PRINT "Would you like a breakdown of the principal and interest by"
     PRINT "month for the entire period of the loan? ";
     DO WHILE Answer$ <> "Y" AND Answer$ <> "N"
         Answer$ = UCASE$(INPUT$(1))
     LOOP
     PRINT Answer$
     PRINT
     IF Answer$ = "Y" THEN
         CLS
         PRINT "Month", "Payment", "Principal", "Interest"
         PRINT
         FOR Per = 1 TO Periods
             ' Calculate the principal part of the payment
 PrPmt = ABS(-PPmt#(APR / 12, Per, Periods, -PresVal, FutrVal, PaymtType, St))
             ' Properly round the result
             PrPmt = (INT((PrPmt + .005) * 100) / 100)
             ' Calculate the interest part of the payment
             IntPmt = Payment - PrPmt
             ' Properly round the result
             IntPmt = (INT((IntPmt + .005) * 100) / 100)
             ' Examine St to determine success or failure
             IF St THEN
                 ' If unsuccessful, announce a problem
                 PRINT "There was an error in calculating the interest or"
                 PRINT "principal for period"; Per; "of your loan."
                 END
             ELSE
                 PRINT USING "###"; Per;
                 PRINT TAB(15);
                 PRINT USING DOLLARFORMAT$; Payment; PrPmt; IntPmt
             END IF
         NEXT Per
     END IF
 END IF