DO (TSB)

Aus C64-Wiki
Zur Navigation springenZur Suche springen
DO (TSB)
Syntax: DO .. DONE
Parameter
keine
Einordnung
Typ: Anweisung
Kontext: Strukturkontrolle
Aufgabe: umschließt mehrzeilige Bedingungszweige
Abkürzung: keine
Token: $64 $22 (100 34)
Verwandte Befehle
ELSE - DO NULL - RCOMP - IF - THEN


Dieser Artikel beschreibt das TSB-Schlüsselwort DO (TSB).
Es gibt kein entsprechendes Simons'-Basic-Schlüsselwort.

Typ: Anweisung
Syntax: DO .. DONE

Mit DO und DONE hat der Programmierer die Möglichkeit, die beiden Bedingungszweige eines IF über mehrere BASIC-Zeilen auszuweiten, und so sein Programm erheblich übersichtlicher und kompakter zu gestalten. Ein einzeln stehendes ELSE trennt hier die Wahr- und Nicht-Wahr-Zweige voneinander (siehe Beispiel), ist kein Nicht-Wahr-Zweig vorgesehen, kann ELSE weggelassen werden.

Beachten

  • DO verwaltet (noch) keinen Stack, daher kann diese Konstruktion nicht verschachtelt werden, auch nicht indirekt (durch Aufruf einer Prozedur innerhalb DO..DONE, in der dort eine weitere DO..DONE-Konstruktion vorkommt). Versucht man es dennoch, erhält man aber bereits jetzt schon einen ?STACK OVERFLOW ERROR.
  • Der (bisher nur teil-implementierte) Stack der DO-DONE-Konstruktion wird nicht überwacht. Verlässt man eine solche Konstruktion vorzeitig, wird der Stack nicht bereinigt und läuft bei wiederholter Ausführung über. Um das zu verhindern, kann man die Speicherstelle $CBE4 (den DO-Stackpointer) bei einem vorzeitigen Ausstieg manipulieren. Siehe dazu den Abschnitt "Eine Struktur vorzeitig verlassen" in TSB Tricks.
  • In Prozedurnamen darf die Zeichenfolge DO nicht vorkommen (wie z.B. im Wort "shadow").


Beispiel

10 PRINT "test ";
20 FETCH "jn",1,x$
30 IF x$ = "j" THEN DO
40 :  PRINT "ja"
50 ELSE
60 :  PRINT "nein"
70 DONE

Je nachdem, ob der Benutzer "j" oder "n" drückt, erscheint eine andere Antwortausgabe.

Ein komplettes Anwendungsbeispiel findet sich beim Simons-Basic-Befehl MOB SET Beispiel 2.