home *** CD-ROM | disk | FTP | other *** search
- '* ------------------------------------------------------- *
- '* ZINSEN.BAS *
- '* Zins und Tilgung *
- '* Turbo Basic 1.0e *
- '* (C) 1989 TOOLBOX & Andreas Ballhaus *
- '* ------------------------------------------------------- *
- $INCLUDE "EINGABE.INC" 'Eingabe-Modul aus
- 'dem "Heimwerker"
- DIM Daten$(6) 'Array für die Daten
-
- Neustart: 'Label für neuen Start
- CLS
- DO
- 'Auswahl Darlehen/Sparen
- PRINT "Darlehen/Hypotheken = d"
- PRINT
- PRINT "Sparen/Versicherung = s"
-
- WHILE NOT INSTAT: WEND 'Warten auf ein Zeichen
-
- Steuer$ = UCASE$(INKEY$) 'Groß/Kleinschreibung
-
- LOOP UNTIL Steuer$ = "D" OR Steuer$ = "S"
- 'Eingabe erzwingen
-
- Start: 'Label für Start nach Änderung
-
- CALL EingabePrint (Daten$()) 'Prozedur bringt die Texte für
- 'Dateneingabe auf den Screen
- 'Datensammeln
- IF Daten$(1) = "" THEN
- CALL Eingabe (35,35,1,"t",Daten$(1)) 'Bezeichnung des
- END IF 'Darlehens
- IF Daten$(2) = "" THEN
- CALL Eingabe (10,35,3,"w",Daten$(2)) 'Höhe der Schuld am
- END IF 'Stichtag in DM
- IF Daten$(3) = "" THEN
- CALL Eingabe (5,35,5,"w",Daten$(3)) 'Höhe des Zinses
- END IF 'in %
- IF Daten$(4) = "" THEN
- CALL Eingabe (2,35,7,"w",Daten$(4)) 'Zahlungsweise in
- END IF ' Monaten
- IF Daten$(5) = "" THEN
- CALL Eingabe (2,35,9,"w",Daten$(5)) 'Zinsberechnungs-
- END IF 'weise in Monaten
- IF Daten$(6) = "" THEN
- CALL Eingabe (7,35,11,"w",Daten$(6)) 'Höhe der Rate
- END IF 'in DM
- CALL Eingabe (1,35,13,"t",Anzeige$) 'Bildschirmausgabe
- Anzeige$ = UCASE$(Anzeige$)
- IF Steuer$ = "D" THEN 'Darlehen
- CALL Darlehen (Daten$(),Anzeige$) 'oder
- ELSE
- CALL Sparen (Daten$(),Anzeige$) 'Sparen
- END IF
-
- LOCATE 24,1
- PRINT " N = Neu A = Änderung ESC = Ende";
- DO
- M$ = UCASE$(INKEY$)
- IF M$ = "N" THEN
- CLEAR 'Variable löschen
- GOTO Neustart 'und neu anfangen
- END IF
- IF M$ = "A" THEN GOTO Aenderung 'ändern
- LOOP UNTIL M$ = CHR$(27) 'Ende mit <ESC>
-
- END
-
- '* ------------------------------------------------------- *
- Aenderung: 'Werte teilweise ersetzen
- WHILE INSTAT 'Tastaturpuffer leeren
- M$ = UCASE$(INKEY$)
- WEND
-
- DO 'Start
- CALL Eingabeprint (Daten$()) 'Werte darstellen
-
- PRINT 'Auswahl der Löschung
- PRINT "Ende = ESC"
- PRINT
- PRINT "Bitte Nummer der zu ändernden Position eingeben: "
-
- WHILE NOT INSTAT: WEND 'Warten auf ein
- M$ = UCASE$(INKEY$) 'Zeichen
- m% = VAL(M$)
- 'Auswahl der Löschung
- SELECT CASE m%
- CASE 1 TO 6
- Daten$(m%) = "" 'Löschung
- CASE ELSE 'Schutz vor Endlos-
- EXIT SELECT 'schleife
- END SELECT
-
- LOOP UNTIL M$ = CHR$(27) 'Ende mit <ESC>
-
- GOTO Start 'Zur Eingabe
-
- '* ------------------------------------------------------- *
- SUB Darlehen (Daten$(1),Anzeige$) 'Prozedur Berechnung für
- 'Darlehen
- LOCAL Laufzeit 'nur Turbo Basic
- LOCAL GesamtZins
- 'Funktionsaufruf zur
- Schuld = FNWerte (Daten$(2)) 'Umwandlung der Strings
- Zins = FNWerte (Daten$(3)) 'in Variable
- Zahlung = FNWerte (Daten$(4))
- Rechnung = FNWerte (Daten$(5))
- Abschlag = FNWerte (Daten$(6))
-
- CLS 'Bildschirm löschen & Anfangswerte zeigen
-
- PRINT " Laufzeit Schuld Aufwendung Zinsen Tilgung"
-
- 'Schleife mit Abbruch,
- DO WHILE Schuld > Aufwendung 'wenn Darlehen bezahlt
-
- Zinsen = Schuld * Zins / 100 'Effektiver Jahreszins
- Zinsen = Zinsen * Rechnung / 12
- Aufwendung = Abschlag * 12 / Zahlung * Rechnung / 12
-
- Tilgung = Aufwendung - Zinsen 'Tilgung ausrechnen
- IF Tilgung < 0 THEN EXIT LOOP
- Laufzeit = Laufzeit + Rechnung/12 'Laufzeit ausrechnen
-
- PRINT USING "#######.##";Laufzeit,Schuld,_
- Aufwendung,Zinsen,Tilgung
- 'Ergebnisse zeigen
-
- IF Anzeige$ = "N" THEN 'Schalter für schnell
- WHILE NOT INSTAT: WEND 'Zum Weitermachen auf
- END IF 'Tastendruck warten
-
- M$ = UCASE$(INKEY$)
- Schuld = Schuld - Tilgung 'Werte für die nächste
- GesamtZins = GesamtZins + Zinsen 'Periode
- IF M$ = CHR$(27) THEN EXIT LOOP 'Abbruch mit ESCAPE
-
- LOOP
- 'Endwerte zeigen
- PRINT Daten$(1)
- PRINT USING "Laufzeit: ##.##"; Laufzeit
- PRINT USING "Restsumme: #####.##"; Schuld
- PRINT USING "Gesamter Zins: #######.##"; GesamtZins
-
- END SUB
-
- '* ------------------------------------------------------- *
- SUB Sparen (Daten$(1),Anzeige$) 'Prozedur Berechnung für
- LOCAL Laufzeit 'Sparen
- LOCAL GesamtZins
- 'Funktionsaufruf zur
- Haben = FNWerte (Daten$(2)) 'Umwandlung der Strings
- Zins = FNWerte (Daten$(3)) 'in Variable
- Zahlung = FNWerte (Daten$(4))
- Rechnung= FNWerte (Daten$(5))
- Abschlag= FNWerte (Daten$(6))
-
- CLS 'Bildschirm löschen & Anfangswerte zeigen
-
- PRINT " Laufzeit Haben Aufwendung Zinsen Zuwachs"
-
- DO
- Zinsen = Haben * Zins / 100 'Effektiver Jahreszins
- Zinsen = Zinsen * Rechnung / 12
- Aufwendung = Abschlag * 12 / Zahlung * Rechnung / 12
-
- Zuwachs = Aufwendung + Zinsen 'Zuwachs ausrechnen
- Laufzeit = Laufzeit + Rechnung/12 'Laufzeit ausrechnen
-
- PRINT USING "#######.##";Laufzeit,Haben,_
- Aufwendung,Zinsen,Zuwachs
- 'Ergebnisse zeigen
- IF Anzeige$ = "N" THEN 'Schalter für schnell
- WHILE NOT INSTAT: WEND 'Zum Weitermachen auf
- END IF 'Tastendruck warten
- M$ = UCASE$(INKEY$)
- Haben = Haben + Zuwachs 'Werte für die nächste
- GesamtZins = GesamtZins + Zinsen 'Periode
- IF M$ = CHR$(27) THEN EXIT LOOP 'Abbruch mit <ESC>
- LOOP
- 'Endwerte zeigen
- PRINT Daten$(1)
- PRINT USING "Laufzeit: ##.##"; Laufzeit
- PRINT USING "Haben: #####.##"; Haben
- PRINT USING "Gesamter Zins: #######.##"; GesamtZins
-
- END SUB
-
- '* ------------------------------------------------------- *
- SUB EingabePrint (Daten$(1)) 'Texte zur Dateneingabe
-
- CLS: RESTORE
- DATA Bezeichnung-Stichwort, Soll/Haben, Zinssatz in %
- DATA Zahlungsweise in Monaten, Abrechnung Zinsen in Monaten
- DATA Abschlag/Einzahlung, schnelle Darstellung j/n
-
- LOCATE 1,1: READ a$: PRINT "(1) " + a$ TAB (35) Daten$(1)
- LOCATE 3,1: READ a$: PRINT "(2) " + a$ TAB (35) Daten$(2)
- LOCATE 5,1: READ a$: PRINT "(3) " + a$ TAB (35) Daten$(3)
- LOCATE 7,1: READ a$: PRINT "(4) " + a$ TAB (35) Daten$(4)
- LOCATE 9,1: READ a$: PRINT "(5) " + a$ TAB (35) Daten$(5)
- LOCATE 11,1: READ a$: PRINT "(6) " + a$ TAB (35) Daten$(6)
- LOCATE 13,1: READ a$: PRINT a$: PRINT
-
- END SUB
-
- '* ------------------------------------------------------- *
- DEF FNWerte (a$) 'Funktion zur Umwandlung
- LOCAL a 'der Inputstrings in
- 'Realvariable
- a = VAL(a$)
- a = ABS(a) 'Keine Minuswerte zulassen
- FNWerte = a
-
- END DEF
- '* ------------------------------------------------------- *
- '* Ende von ZINSEN.BAS *