CGOTO

Aus C64-Wiki
Wechseln zu: Navigation, Suche
CGOTO
Format: CGOTO <ausdruck>
Parameter
ausdruck: numerischer Ausdruck
Einordnung
Typ: Anweisung
Kontext: Struktur-"Kontrolle"
Aufgabe: Berechnetes GOTO
Abkürzung: keine
Verwandte Befehle
EXEC - CALL - ON


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort CGOTO.

Typ: Anweisung
Syntax: CGOTO <ausdruck>

CGOTO ist ein Befehl, der lange Sprungtabellen hinter dem BASIC-Befehl ON ersetzt. Statt die Sprungziele wie bei ON vorzugeben und dann durch Angabe der Platznummer des gewünschten Ziels aufzurufen, kann hinter CGOTO ohne große Tipperei sofort die gewünschte Zielzeile durch eine Berechnung angepeilt werden. Die Verwendung von CGOTO setzt voraus, dass beim Programmieren die Zeilen so angeordnet sind, dass für den Algorithmus <ausdruck> hinter CGOTO diese Zeilen auch erreichbar bleiben.

Leider gibt es kein entsprechendes CGOSUB. Da Simons' Basic ohnehin darauf ausgerichtet ist, ohne Zeilennummern auszukommen (s. EXEC und PROC), stellt sich der Nutzen von CGOTO als eher zweifelhaft dar.

Beachten: Nach einem RENUMBER muss der Algorithmus hinter CGOTO angepasst werden, sonst funktioniert das Programm nicht mehr (wenn er sich anpassen lässt!)

Beispiel: 

...
50 i4=1: GOSUB 1500: IF ri=0 THEN 50
60 IF ri=1 THEN GOSUB 1300: i7=i7+1: i8=1: i4=2: IF i7>mn THEN i7=1
70 IF ri=2 THEN GOSUB 1300: i7=i7-1: i8=1: i4=2: IF i7=0 THEN i7=mn
80 IF ri=3 THEN i8=i8+1: IF i8>ho THEN i8=1
90 IF ri=4 THEN i8=i8-1: IF i8=0 THEN i8=ho
100 IF ri=5 THEN i6=br: GOSUB 1300: GOSUB 1700: GOSUB 2000: zl=1: br=i6: GOTO 30
110 ON i4 GOSUB 1610, 1600: GOTO 50
999 END
...

(Dies ist eine Menü-Navigationskontrolle. In Zeile 50 werden die Pfeiltasten abgefragt, die
Routine liefert in RI die angesteuerte Richtung zurück. In Zeilen 60 bis 90 wird darauf
reagiert. Die Variable I4 steuert dabei das Öffnen eines der beiden Menükästen in den Zeilen
1600 und 1610 (Zeile 110 nach ON). Zeile 100 ist die Reaktion auf die <RETURN>-Taste. Im
Folgenden eine CGOTO-Version davon: )

...
110 CGOTO (i4-1)*10+1600
...
1620 GOTO 50

(Diese Änderung hätte die gleiche Wirkung, ist aber kürzer. Eine echte CGOTO-Version hätte in
I4 bereits die Zeilennummernschrittweite vorgesehen und wäre dadurch noch kürzer (CGOTO 1600+I4).)