home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 04 / heimwerk / zinsen.bas < prev    next >
Encoding:
BASIC Source File  |  1989-01-17  |  8.0 KB  |  219 lines

  1. '* ------------------------------------------------------- *
  2. '*                     ZINSEN.BAS                          *
  3. '*                  Zins und Tilgung                       *
  4. '*                  Turbo Basic 1.0e                       *
  5. '*       (C) 1989 TOOLBOX & Andreas Ballhaus               *
  6. '* ------------------------------------------------------- *
  7. $INCLUDE "EINGABE.INC"              'Eingabe-Modul aus
  8.                                     'dem "Heimwerker"
  9. DIM Daten$(6)                       'Array für die Daten
  10.  
  11. Neustart:                           'Label für neuen Start
  12. CLS
  13. DO
  14.                                     'Auswahl Darlehen/Sparen
  15.   PRINT "Darlehen/Hypotheken   =   d"
  16.   PRINT
  17.   PRINT "Sparen/Versicherung   =   s"
  18.  
  19.   WHILE NOT INSTAT: WEND           'Warten auf ein Zeichen
  20.  
  21.   Steuer$ = UCASE$(INKEY$)         'Groß/Kleinschreibung
  22.  
  23. LOOP UNTIL Steuer$ = "D" OR Steuer$ = "S"
  24.                                    'Eingabe erzwingen
  25.  
  26. Start:                        'Label für Start nach Änderung
  27.  
  28. CALL EingabePrint (Daten$())  'Prozedur bringt die Texte für
  29.                               'Dateneingabe auf den Screen
  30.                                         'Datensammeln
  31. IF Daten$(1) = "" THEN
  32.   CALL Eingabe (35,35,1,"t",Daten$(1))  'Bezeichnung des
  33. END IF                                  'Darlehens
  34. IF Daten$(2) = "" THEN
  35.   CALL Eingabe (10,35,3,"w",Daten$(2))  'Höhe der Schuld am
  36. END IF                                  'Stichtag in DM
  37. IF Daten$(3) = "" THEN
  38.   CALL Eingabe (5,35,5,"w",Daten$(3))   'Höhe des Zinses
  39. END IF                                  'in %
  40. IF Daten$(4) = "" THEN
  41.   CALL Eingabe (2,35,7,"w",Daten$(4))   'Zahlungsweise in
  42. END IF                                  ' Monaten
  43. IF Daten$(5) = "" THEN
  44.   CALL Eingabe (2,35,9,"w",Daten$(5))   'Zinsberechnungs-
  45. END IF                                  'weise in Monaten
  46. IF Daten$(6) = "" THEN
  47.   CALL Eingabe (7,35,11,"w",Daten$(6))  'Höhe der Rate
  48. END IF                                  'in DM
  49. CALL Eingabe (1,35,13,"t",Anzeige$)     'Bildschirmausgabe
  50. Anzeige$ = UCASE$(Anzeige$)
  51. IF Steuer$ = "D" THEN                   'Darlehen
  52.   CALL Darlehen (Daten$(),Anzeige$)     'oder
  53. ELSE
  54.   CALL Sparen (Daten$(),Anzeige$)       'Sparen
  55. END IF
  56.  
  57. LOCATE 24,1
  58. PRINT " N = Neu     A = Änderung     ESC = Ende";
  59. DO
  60.   M$ = UCASE$(INKEY$)
  61.   IF M$ = "N" THEN
  62.     CLEAR                               'Variable löschen
  63.     GOTO Neustart                       'und neu anfangen
  64.   END IF
  65.   IF M$ = "A" THEN GOTO Aenderung       'ändern
  66. LOOP UNTIL M$ = CHR$(27)                'Ende mit <ESC>
  67.  
  68. END
  69.  
  70. '* ------------------------------------------------------- *
  71. Aenderung:                         'Werte teilweise ersetzen
  72. WHILE INSTAT                          'Tastaturpuffer leeren
  73.   M$ = UCASE$(INKEY$)
  74. WEND
  75.  
  76. DO                                    'Start
  77.   CALL Eingabeprint (Daten$())        'Werte darstellen
  78.  
  79.   PRINT                               'Auswahl der Löschung
  80.   PRINT "Ende = ESC"
  81.   PRINT
  82.   PRINT "Bitte Nummer der zu ändernden Position eingeben: "
  83.  
  84.   WHILE NOT INSTAT: WEND              'Warten auf ein
  85.   M$ = UCASE$(INKEY$)                 'Zeichen
  86.   m% = VAL(M$)
  87.                                       'Auswahl der Löschung
  88.   SELECT CASE m%
  89.     CASE 1 TO 6
  90.       Daten$(m%) = ""                 'Löschung
  91.     CASE ELSE                         'Schutz vor Endlos-
  92.       EXIT SELECT                     'schleife
  93.   END SELECT
  94.  
  95. LOOP UNTIL M$ = CHR$(27)              'Ende mit <ESC>
  96.  
  97. GOTO Start                            'Zur Eingabe
  98.  
  99. '* ------------------------------------------------------- *
  100. SUB Darlehen (Daten$(1),Anzeige$)   'Prozedur Berechnung für
  101.                                     'Darlehen
  102. LOCAL Laufzeit                      'nur Turbo Basic
  103. LOCAL GesamtZins
  104.                                     'Funktionsaufruf zur
  105. Schuld   = FNWerte (Daten$(2))      'Umwandlung der Strings
  106. Zins     = FNWerte (Daten$(3))      'in Variable
  107. Zahlung  = FNWerte (Daten$(4))
  108. Rechnung = FNWerte (Daten$(5))
  109. Abschlag = FNWerte (Daten$(6))
  110.  
  111. CLS                'Bildschirm löschen & Anfangswerte zeigen
  112.  
  113. PRINT "   Laufzeit  Schuld   Aufwendung   Zinsen   Tilgung"
  114.  
  115.                                     'Schleife mit Abbruch,
  116. DO WHILE Schuld > Aufwendung        'wenn Darlehen bezahlt
  117.  
  118.   Zinsen = Schuld * Zins / 100      'Effektiver Jahreszins
  119.   Zinsen = Zinsen * Rechnung / 12
  120.   Aufwendung = Abschlag * 12 / Zahlung * Rechnung / 12
  121.  
  122.   Tilgung = Aufwendung - Zinsen     'Tilgung ausrechnen
  123.   IF Tilgung < 0 THEN EXIT LOOP
  124.   Laufzeit = Laufzeit + Rechnung/12 'Laufzeit ausrechnen
  125.  
  126.   PRINT USING "#######.##";Laufzeit,Schuld,_
  127.                          Aufwendung,Zinsen,Tilgung
  128.                                     'Ergebnisse zeigen
  129.  
  130.   IF Anzeige$ = "N" THEN            'Schalter für schnell
  131.     WHILE NOT INSTAT: WEND          'Zum Weitermachen auf
  132.   END IF                            'Tastendruck warten
  133.  
  134.   M$ = UCASE$(INKEY$)
  135.   Schuld = Schuld - Tilgung         'Werte für die nächste
  136.   GesamtZins = GesamtZins + Zinsen  'Periode
  137.   IF M$ = CHR$(27) THEN EXIT LOOP   'Abbruch mit ESCAPE
  138.  
  139. LOOP
  140.                                     'Endwerte zeigen
  141. PRINT Daten$(1)
  142. PRINT USING "Laufzeit: ##.##"; Laufzeit
  143. PRINT USING "Restsumme: #####.##"; Schuld
  144. PRINT USING "Gesamter Zins: #######.##"; GesamtZins
  145.  
  146. END SUB
  147.  
  148. '* ------------------------------------------------------- *
  149. SUB Sparen (Daten$(1),Anzeige$)     'Prozedur Berechnung für
  150. LOCAL Laufzeit                      'Sparen
  151. LOCAL GesamtZins
  152.                                     'Funktionsaufruf zur
  153. Haben   = FNWerte (Daten$(2))       'Umwandlung der Strings
  154. Zins    = FNWerte (Daten$(3))       'in Variable
  155. Zahlung = FNWerte (Daten$(4))
  156. Rechnung= FNWerte (Daten$(5))
  157. Abschlag= FNWerte (Daten$(6))
  158.  
  159. CLS                'Bildschirm löschen & Anfangswerte zeigen
  160.  
  161. PRINT "   Laufzeit   Haben   Aufwendung   Zinsen   Zuwachs"
  162.  
  163. DO
  164.   Zinsen = Haben * Zins / 100       'Effektiver Jahreszins
  165.   Zinsen = Zinsen * Rechnung / 12
  166.   Aufwendung = Abschlag * 12 / Zahlung * Rechnung / 12
  167.  
  168.   Zuwachs = Aufwendung + Zinsen     'Zuwachs ausrechnen
  169.   Laufzeit = Laufzeit + Rechnung/12 'Laufzeit ausrechnen
  170.  
  171.   PRINT USING "#######.##";Laufzeit,Haben,_
  172.                          Aufwendung,Zinsen,Zuwachs
  173.                                     'Ergebnisse zeigen
  174.   IF Anzeige$ = "N" THEN            'Schalter für schnell
  175.     WHILE NOT INSTAT: WEND          'Zum Weitermachen auf
  176.   END IF                            'Tastendruck warten
  177.   M$ = UCASE$(INKEY$)
  178.   Haben = Haben + Zuwachs           'Werte für die nächste
  179.   GesamtZins = GesamtZins + Zinsen  'Periode
  180.   IF M$ = CHR$(27) THEN EXIT LOOP   'Abbruch mit <ESC>
  181. LOOP
  182.                                     'Endwerte zeigen
  183. PRINT Daten$(1)
  184. PRINT USING "Laufzeit: ##.##"; Laufzeit
  185. PRINT USING "Haben: #####.##"; Haben
  186. PRINT USING "Gesamter Zins: #######.##"; GesamtZins
  187.  
  188. END SUB
  189.  
  190. '* ------------------------------------------------------- *
  191. SUB EingabePrint (Daten$(1))        'Texte zur Dateneingabe
  192.  
  193. CLS: RESTORE
  194. DATA Bezeichnung-Stichwort, Soll/Haben, Zinssatz in %
  195. DATA Zahlungsweise in Monaten, Abrechnung Zinsen in Monaten
  196. DATA Abschlag/Einzahlung, schnelle Darstellung j/n
  197.  
  198. LOCATE  1,1: READ a$: PRINT "(1) " + a$ TAB (35) Daten$(1)
  199. LOCATE  3,1: READ a$: PRINT "(2) " + a$ TAB (35) Daten$(2)
  200. LOCATE  5,1: READ a$: PRINT "(3) " + a$ TAB (35) Daten$(3)
  201. LOCATE  7,1: READ a$: PRINT "(4) " + a$ TAB (35) Daten$(4)
  202. LOCATE  9,1: READ a$: PRINT "(5) " + a$ TAB (35) Daten$(5)
  203. LOCATE 11,1: READ a$: PRINT "(6) " + a$ TAB (35) Daten$(6)
  204. LOCATE 13,1: READ a$: PRINT a$: PRINT
  205.  
  206. END SUB
  207.  
  208. '* ------------------------------------------------------- *
  209. DEF FNWerte (a$)                 'Funktion zur Umwandlung
  210. LOCAL a                          'der Inputstrings in
  211.                                  'Realvariable
  212. a = VAL(a$)
  213. a = ABS(a)                       'Keine Minuswerte zulassen
  214. FNWerte = a
  215.  
  216. END DEF
  217. '* ------------------------------------------------------- *
  218. '*                Ende von ZINSEN.BAS                      *
  219.