Menügesteuerte Finanzmathematik
Zwei herausragende Eigenschaften machen dieses Programm für alle C 64-Besitzer interessant: Die sehr gute Menütechnik und der modulare Bildschirmmaskenaufbau.
Wer wünscht sich nicht, daß Programme von Diskette auf Tastendruck geladen, beziehungsweise nachgeladen werden? Wenn Sie das Menüprogramm dieses Listings übernehmen und für Ihren Bedarf abändern, ist das Laden von Programmen kein Problem mehr.
Das Programm wird geladen mit dem Befehl:
LOAD "Menü" ,8
Gestartet wird dann mit dem Befehl: RUN
Wählen Sie nun mit den Funktionstasten F3 und F5 die Nummer des Programmes, mit welchem Sie als nächstes arbeiten wollen. Sie erkennen Ihre augenblickliche Position an der blinkenden Zahl.
Nach beendeter Wahl drücken Sie »RETURN«. Dann wird das Programm geladen, dessen Zahl gerade blinkt und an der sich nach »RETURN« ein ← (Pfeil links) befindet.
Bedienungsanleitung für das Programm:
Erstellen eines Tilgungsplanes.
Nach erfolgter Auswahl im Hauptmenü wird das Programm automatisch gestartet.
Durch entsprechende Informationen in der Fußzeile erklärt sich das Programm im wesentlichen selbst. Allerdings mußte manchmal wegen Platzmangel darauf verzichtet werden.
Grundsätzlich gilt:
Bis auf die Funktionstasten erfolgt bei jeder Eingabe und Auswahl ein Abschluß mit »RETURN«.
Bei der Auswahl im Programm, wird immer mit den Tasten F3 und F5 gewählt, nach Drücken von »RETURN« wird immer das als nächstes ausgeführt, was zuletzt geblinkt hat.
Zum Abschluß der Dateneingabe gilt für die Abfrage, ob die Eingabe korrekt ist, folgendes:
Zugelassen sind die Buchstaben j (a) und n (nein).
Die Antwort kann bis zum Abschluß mit »RETURN« durch die Taste »DEL« korrigiert werden.
Während der Dateneingabe, kann man durch Drücken der Taste Fl zum ersten Auswahlmenü zurückkehren.
Wird die Tabelle auf dem Bildschirm ausgedruckt, kann man den Bildschirmausschnitt, innerhalb der festgesetzten Grenzen verändern.
Mit F1 kehrt man zur alten Bildschirmmaske zurück.
Das Ausgabefeld »Resultat« enthält folgende Informationen:
Zinsaufwand (gesamt): Dieser Summe entsprechen sämtliche in den einzelnen Jahren zu zahlende Zinsen.
Annuität (gesamt): Dies ist die Summe, die man insgesamt zurückzahlen muß (Zins- und Tilgungsanteil zusammen),
Im linken unteren Feld wird noch einmal angegeben, wie hoch der Zinsanteil von der Annuität in Prozent ist. Dieses Programm stellt Tilgungspläne bis zu einer Laufzeit von 50 Jahren auf. Falls dies nicht ausreicht, braucht in Zeile neun nur die Dimensionierung der Variablen e und e$ erhöht werden.
(Klaus Klöker/rg)
Lebenslauf
Ich bin 20 Jahre alt, habe im Frühjahr dieses Jahres mein Abitur bestanden und im August eine Ausbildung als Bankkaufmann begonnen.
In meiner Freizeit beschäftige ich mich gerne mit Geschichte und der Computerprogrammierung.
Entstehungsgeschichte und Anwendung
Entstanden ist das Programm aufgrund eines Kurses über Finanzmathematik.
Es schien mir damals zweckmäßig, Tilgungspläne mit dem Computer aufzustellen. Dieser absolviert seine Arbeit sekundenschnell und fehlerfrei. Wer selbst einmal Tilgung »zu Fuß« geplant hat, weiß, daß gerade letzteres keine Selbstverständlichkeit ist (bei 20 Jahren Laufzeit und 6 Beträgen pro Jahr, müssen immerhin 120 Beträge einzeln berechnet werden).
Einen großen Teil der Programmierzeit beanspruchte der Aufbau der Bildschirmmasken und die Menüsteuerung. Ich hielt diesen Aufwand für angebracht, weil die Anwendung bequemer ist und außerdem mehr Spaß macht. Wer sich das Programm »Tilgungspläne« genauer anschaut, wird feststellen, daß man durch einfaches Austauschen der Formeln verschiedene Tabellen aufstellen kann, obwohl nur eine begrenzte Zahl von Eingabekriterien notwendigist.
(Klaus Klöker)
Programmdokumentation: Menü
200 - 260:
Aufbau der Bildschirmmaske
300 - 390:
Auswahlroutine durch Betätigen der Funktionstasten
400 - 410:
Sprung in die Zeile, in der das entsprechende Programm geladen, oder in der das Programm beendet wird
900 - 960:
Festlegung der Variablen
Variablenliste: Menü
na$ (...) =
Nummern der Programme
nb$ (...) =
Namen der Programme
Z =
Zeile
S =
Spalte
Y =
Index der indizierten Variablen
g$ =
Eingabevariable der get-Anweisung
Programmdokumentation: Zinsrechnung
10-30
Unterprogramm zum Löschen des rechten oberen und linken unteren Bildschirmfensters
70-75
Unterprogramm zur Rundung der Ergebnisse und zur Umwandlung in einen String
80
Unterprogramm zum Laden des Menüs
90
Unterprogramm zum Setzen des Cursors, an die Stelle, welche mit Z = Zeile und S = Spalte vor dem Sprungbefehl festgelegt wurde
95
Unterprogramm zum Zeichnen einer Linie
100 - 195
Auswahlroutine mit den Funktionstasten der entsprechenden reversen Felder oben links und unten links.
200 - 290
Auswahlroutine mit den Funktionstasten der Fußzeile.
300 - 480
Eingaberoutine
1000 - 1180
Beginn des Hauptprogramms:
— Aufbau der Bildschirmmaske
— Sprung in die Auswahlroutine, um festzulegen, was berechnet werden soll.
2000 - 2140
Aufbau der Eingabemaske und Eingabe der Daten mittels der Eingaberoutine. Anschließend erfolgt Abfrage, ob die Eingabe korrekt ist.
3000 - 3040
Berechnung des vorher ausgewählten Ergebnisses
3500 - 3610
Ausdruck des Ergebnisses. Es werden ausgedruckt:
— die am Anfang festgelegten Kriterien
— die eingegebenen Daten
— das Endergebnis
Es folgt: Aufbau der Fußzeile mit der Möglichkeit durch Wahl mit den Funktionstasten entsprechend zu verzweigen.
Variablenliste: Zinsrechnung
ma$:
Kopfzeile
mb$, mc$, md$:
Fußzeilen
a$ (...)
Eingabekriterien
ka$; p$; zi$; ja$; mo$; ta$
Ein- und Ausgabekriterien
pm$; pu$:
Punkte in der Eingabemaske
Z:
Zeile der Cursorposition
S:
Spalte der Cursorposition
Z1:
niedrigste Zeile, die gelöscht werden soll
Z2:
höchste Zeile, die gelöscht werden soll
Y:
Variablenindex
Y1:
kleinster Index
Y2:
größter Index
SW:
Schrittweite
k; c:
Konstanten, die, je nach ihrer Wertigkeit, bestimmte Vorgaben ausführen.
f:
gibt an, welche Berechnung erfolgen soll
e:
gibt an, die Art der Laufzeit
h:
legt die Art der Laufzeit in der Berechnung fest
in$:
Variable in der Eingaberoutine
ab$:
Endergebnis
Programmdokumentation: Tilgungsrechnung
10-20
Unterroutine zum Löschen der rechten
Bildschirmhälfte
30-55
Unterroutine zum Runden des Ergebnisses und zum Umwandeln in einen String
70
Unterroutine zum Laden des Menüs
80
Unterroutine zum Zeichen einer Linie
90
Unterroutine zur Festlegung der Cursorposition
95
Unterroutine zum Löschen der Fußzeile
100 - 195
Unterroutine zur Auswahl der vorgegebenen Möglichkeiten mit den Tasten F3 und F5, der Abschluß erfolgt mit »RETURN«.
200 - 290
Unterroutine zur Auswahl bei der Fußzeile mit den Tasten F3 und F5, der Abschluß erfolgt mit »RETURN«.
300 - 480
Eingaberoutine. Durch Drücken der Taste Fl kann man von vorne beginnen
900 - 960
Aufbau der Bildschirmmaske
1010 - 1080
Ausdruck der Kopfzeile und Bildschirmmaske, Sprung in die Auswahlroutine (100-195)
2000 - 2140
Aufbau der Eingabemaske und Sprung in die Eingaberoutine. Zum Schluß wird abgefragt, ob die Eingabe korrekt ist. Die Antwort wird mit »RETURN« eingegeben und kann vorher mit »DEL« korrigiert werden.
3000 - 3720
Ausführung der Rechnung mit Sprung in die Rundungs- und Stringumwandlungsroutine
3800 - 3900
Ausdruck des Resultates auf dem Bildschirm
3910 - 3950
Aufbau der Wahlfußzeile und Sprung in die Auswahlroutine (200-290)
4000 - 4590
Ausdruck der Tabelle und Verändern des Bildschirmausdrucks mit den Cursortasten: Mit Fl erfolgt ein Rücksprung
5000 - 5090
Änderung der eingegebenen Daten
5500 - 5660
Papierausdruck der eingegebenen Daten und der Tabelle
6000 - 6500
Festlegung der Variablen
Variablenliste: Tilgungsrechnung
ma$
Kopfzeile
mb$ mc$ me$ mf$ mh$
Fußzeilen
md$
Löschzeile zum Löschen des Bildschirms
Z:
Zeile der Cursorposition
S:
Spalte der Cursorposition
Y:
Variablenindex, der einfach dimensionierten Variablen
Y1:
niedrigster Variablenindex
Y2:
höchster Variablenindex
Sw:
Schriftweite
g$:
Variable der GET-Anweisung
g:
ASC (g$)
i,j:
Variablenindizes der zweifach dimensionierten Variablen
c:
Konstante, von der bestimmte Bedingungen abhängen
f:
gibt das Ergebnis der Auswahlroutine an
h:
beschränkt die maximale Eingabelänge
in$:
Variablenindex
pns:
füllt den Ergebnisstring mit Punkten auf
is:
gibt das Jahr in der Tabelle an
tb$:
chr$(16): Tabulator
ta$:
chr$(10): Leerzeile
XI:
Variable die den kleinsten Index der Tabelle angibt
X2:
Variable die den größten Index der Tabelle angibt
Variablen der Rechnung t1,t2,J2,r1,a1,Z1,Z2
70 rem (c) by klaus kloeker
80 goto100
90 poke214,z:poke211,s:sys58732:return
100 rem * menue *
110 print"{clr}{wht}":poke53280,0:poke53281,0:poke53272,23:poke788,52:gosub900
200 print"{rvon} F{$a0}I{$a0}N{$a0}A{$a0}N{$a0}Z{$a0}M{$a0}A{$a0}T{$a0}H{$a0}E{$a0}M{$a0}A{$a0}T I{$a0}K {rvof}"
210 z=4:s=6:gosub90:print"Menue :":z=5:gosub90:print"-------"
220 z=7:s=0:y=1:fori=1to5:gosub90:printna$(i);nb$(i)
230 z=z+2:y=y+1:next
240 z=18:gosub90:print"{rvon} {rvof} Waehlen Sie mit {rvon} F3 {rvof} und {rvon} F5 {rvof} !"
250 z=20:s=7:gosub90:print"Druecken Sie dann ' RETURN{$a0}' {$a0}!"
260 z=23:s=0:gosub90:print"{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}{CBM-I}"
300 rem * auswahlroutine *
310 z=7:y=1
320 gosub90:print"{rvon} {rvof}":fori=1to75:next
330 print"{up}";na$(y):fori=1to125:next
340 getg$:ifg$<>chr$(134)andg$<>chr$(135)andg$<>chr$(13)then320
350 ifg$=chr$(13)thengosub90:print"{rvon}>{rvof}";:goto400
355 ifg$=chr$(135)then380
360 z=z+2:y=y+1:ifz>15thenz=7:y=1
370 goto320
380 z=z-2:y=y-1:ifz<7thenz=15:y=5
390 goto320
400 onygoto500,510,520,530,540
410 end
500 loadnb$(1),8
510 loadnb$(2),8
520 loadnb$(3),8
530 loadnb$(4),8
540 print"{clr}":poke53272,21:poke788,49:end
900 rem * variablen *
910 na$(1)="{rvon}- 1 -{rvof} ":na$(2)="{rvon}- 2 -{rvof} ":na$(3)="{rvon}- 3 -{rvof} "
920 na$(4)="{rvon}- 4 -{rvof} ":na$(5)="{rvon}- 5 -{rvof} "
930 nb$(1)="Zinsrechnung":nb$(2)="Zinseszinsrechnung"
940 nb$(3)="Diskontieren eines Kapitals"
950 nb$(4)="Erstellen eines Tilgungsplaenes":nb$(5)="Programmende"
960 return
Listing »Menüprogramm«
7 poke45,peek(174):poke46,peek(175):clr
8 rem (c) by klaus kloeker
9 clr:dima$(15),a(15):goto1000
10 z1=3:z2=9:s=13:rem * maske loeschen *
20 forz=z1toz2:gosub90:print" ":next:ifc=0thenreturn
30 z1=12:z2=20:c=0:goto20
50 return
70 a$(12)=str$(int(a(12)*100+.5)):rem * runden
75 ab$=left$(a$(12),len(a$(12))-2)+"."+right$(a$(12),2):return
80 load"menue",8:rem *load menue
90 poke214,z:poke211,s:sys58732:return:rem * cursorposition
95 a=55869:fori=1597to1622:pokei,100:pokea,1:a=a+1:next:return
100 rem * auswahlroutine *
110 gosub90:print"{rvon} {rvof}":fori=1to75:nexti
120 gosub90:print"{rvon}"a$(y)"{rvof}":fori=1to125:next
130 getg$:ifg$<>chr$(133)andg$<>chr$(134)andg$<>chr$(135)andg$<>chr$(13)then110
140 ifg$=chr$(133)andcthenc=0:return
150 ifg$=chr$(13)thengosub90:print"{rvon}>{rvof}":return
160 ifg$=chr$(135)then190
170 z=z+sw:y=y+1:ifz>z2thenz=z1:y=y1
180 goto110
190 z=z-sw:y=y-1:ifz<z1thenz=z2:y=y2
195 goto110
200 rem * wahl-fusszeile *:s=0
210 z=23:gosub90:print"{rvon} {rvof}";:fori=1to75:next
220 gosub90:print"{rvon}"ba$(y)"{rvof}";:fori=1to175:next
230 getg$:ifg$<>chr$(134)andg$<>chr$(135)andg$<>chr$(13)then210
240 ifg$=chr$(13)thengosub90:print"{rvon}>{rvof}";:return
250 ifg$=chr$(135)then280
260 s=s+10:y=y+1:ifs>31thens=0:y=1
270 goto210
280 s=s-10:y=y-1:ifs<0thens=30:y=4
290 goto210
300 rem * eingaberoutine *
310 gosub90
320 in$=""
330 print"{CBM-I}{left}";
340 getg$:ifg$=""then340
350 g=asc(g$):ifg=13thengoto460
370 ifg$<"0"org$>"9"then420
380 in$=in$+g$
390 printg$;
400 iflen(in$)>nthenfori=1tolen(in$):printchr$(20);:next:goto320
410 goto330
420 ifg=46then380
425 ifg$=chr$(133)then9
430 ifg<>20then330
440 iflen(in$)<1then330
450 in$=left$(in$,len(in$)-1):goto390
460 pn$="":fori=1to(10-len(in$)):pn$=pn$+".":next:printpn$
470 iflen(in$)<1then310
480 return
999 :
1000 rem ** zinsrechnung **
1010 gosub5000:printma$
1020 a=55388:fori=1076to1906step40:pokei,101:pokea,1:a=a+40:next
1030 a=55736:fori=1464to1474:pokei,100:pokea,1:a=a+1:next
1040 a=55749:fori=1477to1502:pokei,100:pokea,1:a=a+1:next
1050 z=23:s=0:gosub90:printmb$
1060 z=3:gosub90:print"Auswahl :":print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
1070 z=5:fori=1to5:gosub90:print"{rvon}"a$(i)"{rvof}":z=z+1:next
1080 z=5:z1=z:z2=9:s=0:y=1:y1=y:y2=5:sw=1:c=0:gosub100:f=y:iff=5then80
1090 z=13:s=0:gosub90:print"Laufzeit in":print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
1100 z=15:fori=6to8:s=0:gosub90:print"{rvon}"a$(i)"{rvof}":z=z+1:next
1110 z=15:z1=z:z2=17:s=0:y=6:y1=y:y2=8:sw=1:c=0:gosub100:e=y
1120 ife=6thena$(11)=ja$:h=1
1130 ife=7thena$(11)=mo$:h=12
1140 ife=8thena$(11)=ta$:h=360
1150 iff=1thena$(9)=ka$:a$(10)=p$:k=1
1160 iff=2thena$(9)=zi$:a$(10)=p$:k=1
1170 iff=3thena$(9)=ka$:a$(10)=zi$:k=0
1180 iff=4thena$(9)=ka$:a$(10)=zi$:a$(11)=p$:k=2
2000 rem * eingabemaske *
2010 z=3:s=13:gosub90:print"Eingabe :":z=4:gosub90:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
2020 z=5:fori=9to11:s=13:gosub90:print"{rvon}"a$(i)"{rvof} : ";pm$
2030 z=z+2:next:z=23:s=0:gosub90:printmc$
2040 z=5:s=27:n=10:gosub300:a(9)=val(in$)
2050 z=7:s=27:n=10:gosub300:a(10)=val(in$)
2060 z=9:s=27:n=10:gosub300:a(11)=val(in$)
2070 z=13:s=13:gosub90:print"Eingabe korrekt ? (j/n):":gosub95
2080 z=13:s=38:gosub90:print"{CBM-I}{left}";
2090 getg$:ifg$<>"j"andg$<>"n"then2090
2100 printg$:ifg$="j"theny=1
2110 ifg$="n"theny=0
2120 geti$:ifi$<>chr$(13)andi$<>chr$(20)then2120
2130 ifi$=chr$(20)then2080
2140 c=1:gosub10:ify=0then2010
3000 rem * rechnung *
3010 iff=1thena(12)=(a(9)*a(10)*a(11))/(100*h)
3020 iff=2thena(12)=(a(9)*100*h)/(a(10)*a(11))
3030 iff=3thena(12)=(a(10)*100*h)/(a(9)*a(11))
3040 iff=4thena(12)=(a(10)*100*h)/(a(9)*a(11))
3500 rem * bildschirm
3510 z=3:s=13:gosub90:print"Eingabe :":z=4:gosub90:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
3520 z=5:fori=9to11:gosub90:printa$(i)" :"a(i):z=z+2:next
3530 z=13:gosub90:print"Resultat :":z=14:gosub90:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}":gosub70
3540 z=16:gosub90:print"{rvon}"a$(f)"{rvof} :";:printtab(38-len(ab$));ab$
3550 printtab(39-len(ab$));:fori=1tolen(ab$)-1:print"=";:next
3560 z=20:gosub90:ifk=1thenprint"Ausdruck in DM{$a0}!":goto3580
3570 ifk=0thenprint"Ausdruck in Prozent !"
3580 z=23:s=0:gosub90:fori=1to4:print"{rvon}"ba$(i)"{rvof}";:next
3590 y=1:gosub200:ify=4then80
3600 ify=3then1010
3610 ify=2then4500
4000 rem * aenderung *
4010 c=1:gosub10
4020 z=3:s=13:gosub90:print"Aenderung :":z=4:gosub90:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
4030 z=5:s=13:fori=9to11:gosub90:print"{rvon}"a$(i)"{rvof} :";a(i):z=z+2:next
4040 z=23:s=0:gosub90:printmd$;
4050 z=5:z1=z:z2=9:s=13:y=9:y1=y:y2=11:sw=2:c=1:gosub100
4060 ifc=0thengosub10:goto3000
4070 z=13:s=13:gosub90:print"{rvon}"a$(y)"{rvof} : ";pm$:gosub95
4080 z=23:s=0:gosub90:printmc$;:z=13:s=27:gosub300:a(y)=val(in$):goto4010
4500 rem * ausdruck *
4510 open4,4,7:print#4,chr$(14);chr$(16);"28ZINSRECHNUNG"
4520 print#4,chr$(16);"28------------";chr$(10)
4530 fori=9to11:print#4,chr$(15);chr$(16);"10*** "a$(i)" : ";a(i):next
4540 gosub70:print#4,chr$(10);chr$(16);"14"a$(f)" : "ab$
4550 print#4,chr$(16);"15";:fori=1to2+len(a$(f)+ab$):print#4,"=";:next
4560 print#4:print#4:print#4
4570 print#4,chr$(13);chr$(16);"10*** Kapital und Zinssatz werden";
4580 print#4," in ' DM ' ausgedruckt,"
4590 print#4,chr$(16);"16der Zinssatz in ' % ' !"
4600 print#4:fori=1to40:print#4,"==";:next:print#4:print#4:print#4:print#4
4610 close4:fori=56176to56215:pokei,0:next:goto3580
5000 rem * variablenliste *
5010 ma$="{clr}{rvon} Z{$a0}I{$a0}N{$a0}S{$a0}R{$a0}E{$a0}C{$a0}H{$a0}N{$a0}U{$a0}N{$a0}G {rvof}"
5020 mb$="{rvon} F3 u. F5 - Wahl ! 'RETURN' - Eingabe !{rvof}"
5030 mc$="{rvon} F1 - Neu ! Geben Sie ein ! {rvof}"
5040 md$="{rvon} F1 - Resultat ! F3 u. F5 - Wahl ! {rvof}"
5050 ka$=" Kapital ":p$=" Zinssatz ":zi$=" Zinsertrag"
5060 ja$=" Jahre ":mo$=" Monate ":ta$=" Tage ":pm$=".........."
5110 ba$(1)=" Aendern "
5120 ba$(2)=" Kopie "
5130 ba$(3)=" N.Berech."
5140 ba$(4)=" Menue "
5510 a$(1)=" Zinsertrag"
5520 a$(2)=" Kapital "
5530 a$(3)=" Zinssatz "
5540 a$(4)=" Laufzeit "
5550 a$(5)=" Menue "
5560 a$(6)=" Jahre "
5570 a$(7)=" Monate "
5580 a$(8)=" Tage "
5590 a$(13)=" Aendern "
5600 a$(14)=" Resultat "
5610 a$(15)=" Menue ":return
Listing »Zinsrechung«
7 poke45,peek(174):poke46,peek(175):clr
8 rem (c) by klaus kloeker
9 clr:dima$(19),a(19),ba$(4):goto1000
10 z1=2:z2=10:s=13:rem * maskeloeschen *
20 forz=z1toz2:gosub80:print" ":next:ifc=0thenreturn
30 z1=12:z2=20:c=0:goto20
40 s=0:forz=12to20:gosub80:print" ":next:return
50 a$(a)=str$(int(a(a)*100+.5)):rem * runden
60 ab$=left$(a$(a),len(a$(a))-2)+"."+right$(a$(a),2):return
70 load"menue",8:rem *
80 poke214,z:poke211,s:sys58732:return:rem * cursorposition
90 a=55869:fori=1597to1622:pokei,100:pokea,1:a=a+1:next:return
100 rem * auswahlroutine
110 gosub80:print"{rvon} {rvof}":fori=1to75:next
120 gosub80:print"{rvon}"a$(y)"{rvof}":fori=1to125:next
130 getg$:ifg$<>chr$(133)andg$<>chr$(134)andg$<>chr$(135)andg$<>chr$(13)then110
140 ifg$=chr$(133)andcthenc=0:return
150 ifg$=chr$(13)thengosub80:print"{rvon}>{rvof}";:return
160 ifg$=chr$(135)then190
170 z=z+sw:y=y+1:ifz>z2thenz=z1:y=y1
180 goto110
190 z=z-sw:y=y-1:ifz<z1thenz=z2:y=y2
195 goto110
200 rem * wahl-fusszeile:s=0
210 z=23:gosub80:print"{rvon} {rvof}";:fori=1to75:next
220 gosub80:print"{rvon}"ba$(y)"{rvof}";:fori=1to175:next
230 getg$:ifg$<>chr$(134)andg$<>chr$(135)andg$<>chr$(13)then210
240 ifg$=chr$(13)thengosub80:print"{rvon}>{rvof}";:return
250 ifg$=chr$(135)then280
260 s=s+10:y=y+1:ifs>30thens=0:y=1
270 goto210
280 s=s-10:y=y-1:ifs<0thens=30:y=4
290 goto210
300 rem * eingaberoutine
310 gosub80
315 in$=""
320 print"{CBM-I}{left}";
330 getg$:ifg$=""then330
340 g=asc(g$):ifg=13then460
360 ifg<48org>57then410
370 in$=in$+g$:in=len(in$)
380 printg$;
390 ifin>nthenfori=1toin:printchr$(20);:next:goto310
400 goto320
410 ifg=46then370
420 ifg$=chr$(133)then9
430 ifg<>20then320
440 ifin<1then320
450 in$=left$(in$,in-1):goto380
460 pn$="":fori=1to(10-len(in$)):pn$=pn$+".":next:printpn$
470 iflen(in$)<1then310
480 return
999 :
1000 rem * zinseszinsrechnung
1010 gosub5000:printma$
1020 a=55388:fori=1076to1906step40:pokei,101:pokea,1:a=a+40:next
1030 a=55736:fori=1464to1474:pokei,100:pokea,1:a=a+1:next
1040 a=55749:fori=1477to1502:pokei,100:pokea,1:a=a+1:next
1050 z=23:s=0:gosub80:printmb$
1060 z=2:gosub80:print"Auswahl :":print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
1070 z=4:fori=1to5:gosub80:print"{rvon}"a$(i)"{rvof}":z=z+1:next
1080 z=4:z1=z:z2=8:s=0:y=1:y1=y:y2=5:sw=1:c=0:gosub100:f=y:iff=5then70
1090 iff=1thena$(9)=ko$:a$(10)=p$:a$(11)=n$:k=1
1100 iff=2thena$(9)=kn$:a$(10)=p$:a$(11)=n$:k=1
1110 iff=3thena$(9)=ko$:a$(10)=kn$:a$(11)=n$:k=0
1120 iff=4thena$(9)=ko$:a$(10)=kn$:a$(11)=p$:k=2
2000 rem * eingabemaske
2010 z=2:s=13:gosub80:print"Eingabe :":z=3:gosub80:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
2020 z=4:fori=9to12:s=13:gosub80:print"{rvon}"a$(i)"{rvof} : ";pm$:z=z+2:next
2030 z=23:s=0:gosub80:printmc$;
2040 z=4:s=27:n=10:gosub300:a(9)=val(in$)
2050 z=6:gosub300:a(10)=val(in$)
2060 z=8:gosub300:a(11)=val(in$)
2065 z=10:n=9:gosub300:a(12)=val(in$)
2070 z=13:s=13:gosub80:print"Eingabe korrekt ? (j/n):":gosub90
2080 z=13:s=38:gosub80:print"{CBM-I}{left}";
2090 getg$:ifg$<>"j"andg$<>"n"then2090
2100 printg$:ifg$="j"theny=1
2110 ifg$="n"theny=0
2120 geti$:ifi$<>chr$(13)andi$<>chr$(20)then2120
2130 ifi$=chr$(20)then2080
2140 c=1:gosub10:ify=0then2010
3000 rem * rechnung
3010 iff=1thena(16)=a(9)*(1+(a(10)/(a(12)*100)))^(a(11)*a(12))
3020 iff=1thena(19)=100*((1+(a(10)/(a(12)*100)))^a(12)-1):d=1
3030 iff=2thena(16)=a(9)/(1+(a(10)/(a(12)*100)))^(a(11)*a(12)):d=0
3040 iff=3thena(16)=((a(10)/a(9))^(1/(a(11)*a(12)))-1)*100*a(12):d=0
3050 iff=4thena(16)=(log(a(10)/a(9))/log(1+(a(11)/(a(12)*100))))/a(12):d=0
3500 rem * screen
3510 z=2:s=13:gosub80:print"Eingabe :":z=3:gosub80:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
3520 z=4:fori=9to12:gosub80:printa$(i)" :"a(i):z=z+2:next
3530 z=13:gosub80::print"Resultat :":z=14:gosub80:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}":a=16:gosub50
3540 z=15:gosub80:print"{rvon}"a$(f)"{rvof} :"tab(38-len(ab$));ab$
3550 printtab(39-len(ab$));:fori=1tolen(ab$)-1:print"=";:next
3560 z=20:gosub80:ifk=1thenprint"Ausdruck in DM !":goto3580
3570 ifk=0thenprint"Ausdruck in Prozent !"
3580 ifd=0then3620
3590 z=13:s=0:gosub80::print"{rvon}"a$(17)"{rvof}":print"{rvon}"a$(18)"{rvof}"
3600 z=17:s=1:gosub80:a=19:gosub50:printab$" %"
3610 printtab(7-len(ab$));:fori=1tolen(ab$)+1:print"=";:next
3620 z=23:s=0:gosub80:fori=1to4:print"{rvon}"ba$(i)"{rvof}";:next
3630 y=1:gosub200:ify=4then70
3640 ify=3then1010
3650 ify=2then4500
4000 rem * aenderung
4010 c=1:gosub10:ifdthengosub40
4020 z=2:s=13:gosub80::print"Aenderung :":z=3:gosub80:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
4030 z=4:s=13::fori=9to12:gosub80:print"{rvon}"a$(i)"{rvof} :";a(i):z=z+2:next
4040 z=23:s=0:gosub80:printmd$;
4050 z=4:z1=z:z2=10:s=13:y=9:y1=y:y2=12:sw=2:c=1:gosub100
4060 ifc=0thengosub10:goto3000
4070 z=13:s=13:gosub80:print"{rvon}"a$(y)"{rvof} : ";pm$:gosub90
4080 z=23:s=0:gosub80:printmc$;:z=13:s=27:gosub300:a(y)=val(in$):goto4010
4500 rem * printer
4505 ta$=chr$(10):tb$=chr$(16)
4510 open4,4,7:print#4,chr$(14);tb$"25ZINSESZINSRECHNUNG"
4520 print#4,tb$"25-----------------"ta$
4530 fori=9to12:print#4,chr$(15)tb$"10*** "a$(i)" : "a(i):next
4540 a=16:gosub50:print#4,ta$;tb$"14"a$(f)" : "ab$
4550 print#4,tb$"15";:fori=1to2+len(a$(f)+ab$):print#4,"=";:next
4560 print#4,chr$(13):ifdthengosub4620
4565 print#4,ta$;ta$;ta$
4570 print#4,chr$(13);tb$"10*** Kapital und Zinssatz werden";
4580 print#4," in ' DM ' ausgedruckt,"
4590 print#4,tb$"16Zinssatz und Jahreszins (falls vorhanden) in ' %{$a0}' !"
4600 print#4:fori=1to40:print#4,"==";:next:print#4,ta$;ta$;ta$
4610 close4:fori=56176to56215:pokei,0:next:goto3620
4620 ifdthenprint#4,ta$;tb$"15"a$(17)" "a$(18)" : ";
4630 a=19:gosub50:print#4,ab$
4640 print#4,tb$"15";:fori=1tolen(a$(18)+a$(19)+ab$)+10:print#4,"=";:next
4650 return
5000 rem * variablen
5010 ma$="{clr}{rvon} Z{$a0}I{$a0}N{$a0}S{$a0}E{$a0}S{$a0}Z{$a0}I{$a0}N{$a0}S{$a0}R{$a0}E{$a0}C{$a0}H{$a0}N{$a0}U{$a0}N{$a0}G{$a0}{$a0}{rvof}"
5020 mb$="{rvon} F3 u. F5 - Wahl ! 'RETURN' - Eingabe !{rvof}"
5030 mc$="{rvon} F1 - Neu ! Geben Sie ein ! {rvof}"
5040 md$="{rvon} F1 - Resultat ! F3 u. F5 - Wahl ! {rvof}"
5050 ko$=" An.kapital":p$=" Zinssatz ":kn$=" Endkapital"
5060 n$=" Jahre ":a$(12)=" Zinsper./a":pm$=".........."
5100 ba$(1)=" Aendern "
5110 ba$(2)=" Kopie "
5120 ba$(3)=" Neu "
5130 ba$(4)=" Menue "
5500 a$(1)=kn$
5510 a$(2)=ko$
5520 a$(3)=p$
5530 a$(4)=" Laufzeit "
5540 a$(5)=" Menue "
5600 a$(13)=" Aendern "
5610 a$(14)=" Resultat "
5620 a$(15)=" Menue "
5630 a$(17)="Effektiver"
5640 a$(18)="Jahreszins":return
Listing »Zinseszinsrechnung«
8 poke45,peek(174):poke46,peek(175):clr
9 clr:dima$(15),a(15):goto1000
10 z1=3:z2=9:s=13:rem * maske loeschen *
20 forz=z1toz2:gosub90:print" ":next:ifc=0thenreturn
30 z1=12:z2=20:c=0:goto20
50 return
70 a$(12)=str$(int(a(12)*100+.5)):rem * runden
75 ab$=left$(a$(12),len(a$(12))-2)+"."+right$(a$(12),2):return
80 load"menue",8:rem *load menue
90 poke214,z:poke211,s:sys58732:return:rem * cursorposition
95 a=55869:fori=1597to1622:pokei,100:pokea,1:a=a+1:next:return
100 rem * auswahlroutine *
110 gosub90:print"{rvon} {rvof}":fori=1to75:nexti
120 gosub90:print"{rvon}"a$(y)"{rvof}":fori=1to125:next
130 getg$:ifg$<>chr$(133)andg$<>chr$(134)andg$<>chr$(135)andg$<>chr$(13)then110
140 ifg$=chr$(133)andcthenc=0:return
150 ifg$=chr$(13)thengosub90:print"{rvon}>{rvof}":return
160 ifg$=chr$(135)then190
170 z=z+sw:y=y+1:ifz>z2thenz=z1:y=y1
180 goto110
190 z=z-sw:y=y-1:ifz<z1thenz=z2:y=y2
195 goto110
200 rem * wahl-fusszeile *:s=0
210 z=23:gosub90:print"{rvon} {rvof}";:fori=1to75:next
220 gosub90:print"{rvon}"ba$(y)"{rvof}";:fori=1to175:next
230 getg$:ifg$<>chr$(134)andg$<>chr$(135)andg$<>chr$(13)then210
240 ifg$=chr$(13)thengosub90:print"{rvon}>{rvof}";:return
250 ifg$=chr$(135)then280
260 s=s+10:y=y+1:ifs>31thens=0:y=1
270 goto210
280 s=s-10:y=y-1:ifs<0thens=30:y=4
290 goto210
300 rem * eingaberoutine *
310 gosub90
320 in$=""
330 print"{CBM-I}{left}";
340 getg$:ifg$=""then340
350 g=asc(g$):ifg=13then460
360 ifg=13thenreturn
370 ifg$<"0"org$>"9"then420
380 in$=in$+g$
390 printg$;
400 iflen(in$)>nthenfori=1tolen(in$):printchr$(20);:next:goto320
410 goto330
420 ifg=46then380
425 ifg$=chr$(133)then9
430 ifg<>20then330
440 iflen(in$)<1then330
450 in$=left$(in$,len(in$)-1):goto390
460 pn$="":fori=1to(10-len(in$)):pn$=pn$+".":next:printpn$
470 iflen(in$)<1then310
480 return
999 :
1000 rem ** dikontieren **
1010 gosub5000:printma$
1020 a=55388:fori=1076to1906step40:pokei,101:pokea,1:a=a+40:next
1030 a=55736:fori=1464to1474:pokei,100:pokea,1:a=a+1:next
1040 a=55749:fori=1477to1502:pokei,100:pokea,1:a=a+1:next
1050 z=23:s=0:gosub90:printmb$
1060 z=3:gosub90:print"Auswahl :":print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
1070 z=5:fori=1to5:gosub90:print"{rvon}"a$(i)"{rvof}":z=z+1:next
1080 z=5:z1=z:z2=9:s=0:y=1:y1=y:y2=5:sw=1:c=0:gosub100:f=y:iff=5then80
1150 iff=1thena$(9)=kn$:a$(10)=p$:a$(11)=ja$:k=1
1160 iff=2thena$(9)=kb$:a$(10)=p$:a$(11)=ja$:k=1
1170 iff=3thena$(9)=kn$:a$(10)=kb$:a$(11)=ja$:k=0
1180 iff=4thena$(9)=kn$:a$(10)=kb$:a$(11)=p$:k=2
2000 rem * eingabemaske *
2010 z=3:s=13:gosub90:print"Eingabe :":z=4:gosub90:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
2020 z=5:fori=9to11:s=13:gosub90:print"{rvon}"a$(i)"{rvof} : ";pm$
2030 z=z+2:next:z=23:s=0:gosub90:printmc$
2040 z=5:s=27:n=10:gosub300:a(9)=val(in$)
2050 z=7:gosub300:a(10)=val(in$)
2060 z=9:gosub300:a(11)=val(in$)
2070 z=13:s=13:gosub90:print"Eingabe korrekt ? (j/n):":gosub95
2080 z=13:s=38:gosub90:print"{CBM-I}{left}";
2090 getg$:ifg$<>"j"andg$<>"n"then2090
2100 printg$:ifg$="j"theny=1
2110 ifg$="n"theny=0
2120 geti$:ifi$<>chr$(13)andi$<>chr$(20)then2120
2130 ifi$=chr$(20)then2080
2140 c=1:gosub10:ify=0then2010
3000 rem * rechnung *
3010 iff=1thena(12)=a(9)*(1/(1+(a(10)/100))^a(11))
3020 iff=2thena(12)=a(9)/(1/(1+(a(10)/100))^a(11))
3030 iff=3thena(12)=((a(9)/a(10))^(1/a(11))-1)*100
3040 iff=4thena(12)=log(a(9)/a(10))/log(1+(a(11)/100))
3500 rem * bildschirm
3510 z=3:s=13:gosub90:print"Eingabe :":z=4:gosub90:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
3520 z=5:fori=9to11:gosub90:printa$(i)" :"a(i):z=z+2:next
3530 z=13:gosub90:print"Resultat :":z=14:gosub90:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}":gosub70
3540 z=16:gosub90:print"{rvon}"a$(f)"{rvof} :";:printtab(38-len(ab$));ab$
3550 printtab(39-len(ab$));:fori=1tolen(ab$)-1:print"=";:next
3560 z=20:gosub90:ifk=1thenprint"Ausdruck in DM{$a0}!":goto3580
3570 ifk=0thenprint"Ausdruck in Prozent !"
3580 z=23:s=0:gosub90:fori=1to4:print"{rvon}"ba$(i)"{rvof}";:next
3590 y=1:gosub200:ify=4then80
3600 ify=3then1010
3610 ify=2then4500
4000 rem * aenderung *
4010 c=1:gosub10
4020 z=3:s=13:gosub90:print"Aenderung :":z=4:gosub90:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
4030 z=5:s=13:fori=9to11:gosub90:print"{rvon}"a$(i)"{rvof} :";a(i):z=z+2:next
4040 z=23:s=0:gosub90:printmd$;
4050 z=5:z1=z:z2=9:s=13:y=9:y1=y:y2=11:sw=2:c=1:gosub100
4060 ifc=0thengosub10:goto3000
4070 z=13:s=13:gosub90:print"{rvon}"a$(y)"{rvof} : "pm$:gosub95
4080 z=23:s=0:gosub90:printmc$;:z=13:s=27:gosub300:a(y)=val(in$):goto4010
4500 rem * ausdruck *
4505 ta$=chr$(10):tb$=chr$(16)
4510 open4,4,7:print#4,chr$(14);tb$"10DISKONTIEREN EINES{$a0}KAPITALS"
4520 print#4,tb$"10---------------------------"ta$
4530 fori=9to11:print#4,chr$(15);tb$"10*** "a$(i)" : ";a(i):next
4540 gosub70:print#4,ta$;tb$"14"a$(f)" : "ab$
4550 print#4,tb$"15";:fori=1to2+len(a$(f)+ab$):print#4,"=";:next
4560 print#4,ta$;ta$;ta$
4570 print#4,chr$(13);tb$"10*** Endkapital und Barwert werden";
4580 print#4," in ' DM ' ausgedruckt,"
4590 print#4,tb$"16der Zinssatz in ' % ' !"
4600 print#4:fori=1to40:print#4,"==";:next:print#4,ta$;ta$;ta$;ta$
4610 close4:fori=56176to56215:pokei,0:next:goto3580
5000 rem * variablenliste *
5010 ma$="{clr}{rvon} DISKONTIEREN{$a0}EINES{$a0}KAPITALS {rvof}"
5020 mb$="{rvon} F3 u. F5 - Wahl ! 'RETURN' - Eingabe !{rvof}"
5030 mc$="{rvon} F1 - Neu ! Geben Sie ein ! {rvof}"
5040 md$="{rvon} F1 - Resultat ! F3 u. F5 - Wahl ! {rvof}"
5050 kn$=" Endkapital":p$=" Zinssatz ":ja$=" Jahre ":pm$=".........."
5060 kb$=" Barwert "
5110 ba$(1)=" Aendern "
5120 ba$(2)=" Kopie "
5130 ba$(3)=" Neu "
5140 ba$(4)=" Menue "
5510 a$(1)=" Barwert "
5520 a$(2)=" Endkapital"
5530 a$(3)=" Zinssatz "
5540 a$(4)=" Laufzeit "
5550 a$(5)=" Menue "
5590 a$(13)=" Aendern "
5600 a$(14)=" Resultat "
5610 a$(15)=" Menue ":return
Listing »Diskontieren eines Kapitals«
7 poke45,peek(174):poke46,peek(175):clr
8 rem (c) by klaus kloeker
9 clr:dima$(15),e(50,6),e$(50,6):goto1000
10 z1=3:z2=9:s=13:rem * maske loeschen *
15 forz=z1toz2:gosub90:print" ":next:ifc=0thenreturn
20 z1=13:z2=21:c=0:goto15
30 forj=2to6:e$(i,j)=str$(int(e(i,j)*10+.5)):rem * format tabelle
35 e$(i,j)=left$(e$(i,j),len(e$(i,j))-1)+"."+right$(e$(i,j),1)
40 l$="":fora=1to10-len(e$(i,j)):l$=l$+".":next
45 e$(i,j)=l$+e$(i,j)
50 iflen(e$(i,j))>10thene$(i,j)=right$(e$(i,j),10)
55 next:return
70 load"menue",8:rem *load menue
80 a=55909:fori=1637to1662:pokei,100:pokea,1:a=a+1:next:return
90 poke214,z:poke211,s:sys58732:return:rem * cursorposition *
95 fori=56216to56255:pokei,o:next:return
100 rem * auswahlroutine *
110 gosub90:print"{rvon} {rvof}":fori=1to75:nexti
120 gosub90:print"{rvon}"a$(y)"{rvof}":fori=1to125:next
130 getg$:ifg$<>chr$(133)andg$<>chr$(134)andg$<>chr$(135)andg$<>chr$(13)then110
140 ifg$=chr$(133)andcthenc=0:return
150 ifg$=chr$(13)thengosub90:a$(y)=">"+mid$(a$(y),2,10):print"{rvon}"a$(y)"{rvof}":return
155 ifg$=chr$(134)then170
160 ifg$=chr$(135)then190
165 goto110
170 z=z+sw:y=y+1:ifz>z2thenz=z1:y=y1
180 goto110
190 z=z-sw:y=y-1:ifz<z1thenz=z2:y=y2
195 goto110
200 rem * wahl-fusszeile *:s=0
210 z=23:gosub90:print"{rvon} {rvof}";:fori=1to75:next
220 gosub90:print"{rvon}"ba$(y)"{rvof}";:fori=1to175:next
230 getg$:ifg$<>chr$(134)andg$<>chr$(135)andg$<>chr$(13)then210
240 ifg$=chr$(13)thengosub90:print"{rvon}>{rvof}";:return
250 ifg$=chr$(135)then280
260 s=s+8:y=y+1:ifs>32thens=0:y=1
270 goto210
280 s=s-8:y=y-1:ifs<0thens=32:y=5
290 goto210
300 rem * eingaberoutine *
310 gosub90
320 in$=""
330 print"{CBM-I}{left}";
340 getg$:ifg$=""then340
350 g=asc(g$):ifg=13thengoto460
360 ifg=13thenreturn
370 ifg$<"0"org$>"9"then420
380 in$=in$+g$
390 printg$;
400 iflen(in$)>nthenfori=1tolen(in$):printchr$(20);:next:goto320
410 goto330
420 ifg=46then380
425 ifg$=chr$(133)then9
430 ifg<>20then330
440 iflen(in$)<1then330
450 in$=left$(in$,len(in$)-1):goto390
460 pn$="":fori=1to(9-len(in$)):pn$=pn$+".":next:printpn$
470 iflen(in$)<1then310
480 return
900 rem * maske *
910 printma$:a=55388:fori=1076to1906step40:pokei,101:pokea,1:a=a+40:next
920 a=55776:fori=1504to1514:pokei,100:pokea,1:a=a+1:next
930 a=55785:fori=1517to1546:pokei,100:pokea,1:a=a+1:next
950 z=3:s=0:gosub90:print"Auswahl :":print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}":print"{rvon} - - - - - {rvof}"
960 z=6:fori=1to3:gosub90:print"{rvon}"a$(i)"{rvof}":print"{rvon} - - - - - {rvof}":z=z+2:next
970 return
999 :
1000 rem ** tilgungsrechnung *
1010 gosub6000:gosub900
1020 z=23:s=0:gosub90:printmb$
1080 z=6:z1=z:z2=10:s=0:y=1:y1=y:y2=3:sw=2:c=0:gosub100:f=y:iff=3then70
2000 rem * eingabemaske *
2010 z=3:s=13:gosub90:print"Eingabe :":z=4:gosub90:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
2020 z=5:fori=4to6:s=13:gosub90:print"{rvon}"a$(i)"{rvof} : ";pm$
2030 z=z+2:next:z=23:s=0:gosub90:printmc$
2040 z=5:s=27:n=9:forj=4to6:gosub300:a(j)=val(in$):z=z+2:next
2070 z=14:s=13:gosub90:print"Eingabe korrekt ? (j/n):":gosub80
2080 z=14:s=38:gosub90:print"{CBM-I}{left}";
2090 getg$:ifg$<>"j"andg$<>"n"then2090
2100 printg$:ifg$="j"theny=1
2110 ifg$="n"theny=0
2120 geti$:ifi$<>chr$(13)andi$<>chr$(20)then2120
2130 ifi$=chr$(20)then2080
2140 c=1:gosub10:ify=0then2010
3000 rem * rechnung *
3005 print"{clr}":z=23:s=23:gosub90:printmg$:ee(3)=0:ee(5)=0
3010 iff=2then3500
3100 rem * ratentilgung *
3110 t1=a(4)/a(6):j2=0:t2=0
3120 fori=1toa(6):r1=a(4)-j2*t2:z1=r1*(a(5)/100):a1=z1+t1
3130 e(i,2)=r1:e(i,3)=z1:e(i,4)=t1:e(i,5)=a1:e(i,6)=a1/12:gosub30
3140 forj=3to5step2:ee(j)=ee(j)+e(i,j):next
3150 j2=j2+1:t2=(a(4)/a(6)):next:goto3700
3500 rem * aunnuitaetentilgung *
3510 q1=a(5)/100+1:t1=a(4)*((q1-1)/(q1^a(6)-1))
3520 z1=a(4)*(a(5)/100):a1=t1+z1:r1=a(4)
3530 e(1,2)=r1:e(1,3)=z1:e(1,4)=t1:e(1,5)=a1:e(1,6)=a1/12:i=1:gosub30
3540 t2=t1:fori=2toa(6):r1=r1-t2:z2=r1*(a(5)/100):t2=t2*q1
3550 e(i,2)=r1:e(i,3)=z2:e(i,4)=t2:e(i,5)=a1:e(i,6)=a1/12:gosub30
3560 forj=3to5step2:ee(j)=ee(j)+e(i,j):nextj:nexti
3570 ee(3)=ee(3)+e(1,3):ee(5)=ee(5)+e(1,5)
3700 ee(3)=ee(3)/2:ee(5)=ee(5)/2
3710 fori=3to5step2:ee$(i)=str$(int(ee(i)*10/.5))
3720 ee$(i)=left$(ee$(i),len(ee$(i))-1)+"."+right$(ee$(i),1):next
3800 rem * screen *
3805 gosub900
3810 z=3:s=13:gosub90:print"Eingabe :":z=4:gosub90:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
3820 z=5:s=13:fori=4to6:gosub90:printa$(i)" :"a(i):z=z+2:next
3830 z=14:s=13:gosub90:print"Resultat :":z=15:gosub90:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
3840 z=17:forj=3to5step2:gosub90:print"{rvon}"ec$(j)"{rvof}:"ee$(j):z=z+2:next
3850 z=21:gosub90:print"Ausdruck in 'DM' !"
3860 za=val(ee$(3))/(val(ee$(5))/100)
3870 z=14:s=0:gosub90:print"{rvon} Zins- {rvof}":z=15:gosub90:print"{rvon} anteil {rvof}"
3880 za$=str$(za):ifza<10thenza$=" "+za$
3890 za$=left$(za$,5):z=17:s=2:gosub90:printza$;" %"
3900 z=18:s=3:gosub90:print"======"
3910 z=23:s=0:gosub90:fori=1to5:print"{rvon}"ba$(i)"{rvof}";:next
3920 y=1:gosub200:ify=5then70
3930 ify=4then9
3940 ify=3then5500
3950 ify=2then5000
4000 rem * tabelle *
4010 gosub95:x1=2:x2=4:y1=1:y2=a(6)
4020 z=1:s=0:gosub90:fori=1to22:printmd$:next:z=22:gosub90:printmh$
4030 z=3:s=0:gosub90:printm$(1)
4040 z=3:s=6:fori=x1tox2:gosub90:printm$(i):s=s+11:next
4050 z=4:s=1:gosub90:fori=1to37:print"=";:next
4100 z=6:s=1:fori=y1toy2
4105 i$=str$(i):ifi<10theni$="."+i$
4107 gosub90:print"."+i$:s=6
4110 forj=x1tox2
4120 gosub90:printe$(i,j)
4130 s=s+11:nextj
4140 ifpeek(214)>15theny2=i:y1=y2-9:goto4200
4150 z=z+1:s=1:nexti
4200 z=17:s=1:gosub90:forj=1to38:print"-";:next
4500 wait203,63:getg$
4510 ifg$=chr$(29)then4550
4520 ifg$=chr$(157)then4580
4530 ifg$=chr$(17)then4610
4540 ifg$=chr$(145)then4640
4543 ifg$=chr$(133)then3800
4545 goto4500
4550 x1=x1+1:x2=x2+1:rem * ->
4560 ifx2>6thenx2=6:x1=4:goto4500
4570 goto4030
4580 x1=x1-1:x2=x2-1:rem * <-
4590 ifx1<2thenx1=2:x2=4:goto4500
4600 goto4030
4610 ifa(6)<10thengoto4500
4615 y1=y1+10:y2=y2+10:rem * down
4620 ify2>a(6)theny2=a(6):y1=y2-9:ifi=a(6)then4500
4630 goto4030
4640 ifa(6)<10thengoto4500
4645 y1=y1-10:y2=y2-10:rem * up
4650 ify1<1theny1=1:y2=y1+9:ifi<11then4500
4660 goto4030
5000 rem * aenderung *
5010 c=1:gosub10:s=0:forz=13to20:gosub90:print" ":next
5020 z=3:s=13:gosub90:print"Aenderung :":z=4:gosub90:print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
5030 z=5:s=13:fori=4to6:gosub90:print"{rvon}"a$(i)"{rvof} :";a(i):z=z+2:next
5040 z=23:s=0:gosub90:printmf$;
5050 z=5:z1=z:z2=9:s=13:y=4:y1=y:y2=6:sw=2:c=1:gosub100
5060 ifc=0goto3000
5070 z=14:s=13:gosub90:print"{rvon}"a$(y)"{rvof} : ";pm$:gosub80
5080 z=23:s=0:gosub90:printmc$;:z=14:s=27:gosub300:a(y)=val(in$)
5090 a$(y)=" "+mid$(a$(y),2,10):goto5010
5500 rem * printer
5505 tb$=chr$(16):ta$=chr$(10)
5510 open4,4,7:print#4,chr$(14)tb$"10Ausdruck eines Tilgungsplanes"
5520 print#4,tb$;"10-----------------------------"ta$
5530 fori=4to6:print#4,chr$(15)tb$"10*** "a$(i)" : "a(i):next
5540 print#4,ta$;ta$;ta$
5550 fori=1to6:print#4," "m$(i);:next:print#4," "
5560 fori=1to40:print#4,"--";:next:print#4
5570 fori=1toa(6):i$=str$(i):ifi<10theni$="."+i$
5575 print#4," ."+i$" ";
5580 forj=2to6:print#4," .."e$(i,j);:nextj:print#4," ":nexti
5590 fori=1to40:print#4,"--";:next:print#4
5595 print#4," Gesamt:";
5600 po=27:forj=3to5step2:print#4,spc(po-len(ee$(j)))ee$(j);:po=26:next
5610 print#4,ta$;ta$;tb$"10*** Ausdruck der Tabelle erfolgt in 'DM' !"
5620 print#4,tb$"10*** Berechnung der Zinsen erfolgt am Ende des Jahres !"
5630 print#4,ta$;tb$"10*** Tilgung konstant = Ratentilgung !!"
5640 print#4,tb$"10*** Annuitaet konstant = Annuitaetentilgung !!"
5650 print#4:fori=1to40:print#4,"==";:nexti:print#4,ta$;ta$;ta$;ta$
5660 close4:goto3860
6000 rem * variablen *
6010 ma$="{clr}{rvon} T I{$a0}L{$a0}G{$a0}U{$a0}N{$a0}G{$a0}S{$a0}R{$a0}E{$a0}C{$a0}H{$a0}N{$a0}U{$a0}N{$a0}G {rvof}"
6020 mb$="{rvon} F3 u. F5 - Wahl ! 'RETURN' - Eingabe !"
6030 mc$="{rvon} F1 - Auswahl ! Geben Sie ein ! {rvof}"
6040 md$=" "
6050 me$="{rvon} {rvof}"
6060 mf$="{rvon} F1 - Resultat ! F3 u. F5 - Wahl ! {rvof}"
6070 mg$="Bitte Warten !!!"
6080 mh$="{rvon} F1 - Resultat ! Cursor - Steuern ! {rvof}"
6100 a$(1)=" Ratentilg."
6110 a$(2)=" Annu.tilg."
6120 a$(3)=" Menue "
6130 a$(4)=" Darlehen "
6140 a$(5)=" Zinssatz "
6150 a$(6)=" Jahre "
6160 pm$="........."
6200 m$(1)=" Jahr "
6210 m$(2)="Restschuld"
6220 m$(3)=" Zinsen"
6230 m$(4)=" Tilgung"
6240 m$(5)=" Annuitaet"
6250 m$(6)=" Annu./Mon"
6300 ec$(3)=" Zinsen ges."
6310 ec$(5)=" Annuit. ges."
6400 ba$(1)=" Tabelle"
6410 ba$(2)=" Aendern"
6420 ba$(3)=" Kopie "
6430 ba$(4)=" Neu "
6440 ba$(5)=" Menue "
6500 return
Listing »Tilgungsplan«
Fehlerteufelchen
Zinseszinsrechnung
Die Zeile 3040 muß richtig lauten:
3040 iff=3thena(16)=((a(10)/a(9))↑(1/(a(11)*a(12)))-1)*100*a(12) :d=0
Der Faktor a(12) fehlte in dieser Zeile.
(Frank Heidemann)