Schreibweise
| Form | Bedeutung |
|---|---|
GOSUB 100 | Ruft das Unterprogramm ab Zeile 100 auf. |
RETURN | Kehrt hinter den letzten GOSUB-Aufruf zurück. |
ON X GOSUB 100,200 | Ruft je nach Wert von X ein anderes Unterprogramm auf. |
Der Unterschied zu GOTO
GOTO springt und vergisst. GOSUB legt die Rücksprungstelle auf einen Stapel, und RETURN holt sie wieder hervor. Deshalb kann dasselbe Unterprogramm von vielen Stellen aufgerufen werden und findet jedes Mal richtig zurück.
10 PRINT "START"
20 GOSUB 100
30 PRINT "ENDE"
40 END
100 PRINT "IM UNTERPROGRAMM"
110 RETURN
START
IM UNTERPROGRAMM
ENDE
END nicht vergessen
Unterprogramme stehen üblicherweise am Ende des Listings, oft ab Zeile 100 oder 1000. Ohne ein END davor läuft das Hauptprogramm nach der letzten regulären Zeile einfach in das Unterprogramm hinein. Beim RETURN fehlt dann der passende Aufruf und BASIC meldet einen Fehler.
10 GOSUB 100
20 PRINT "MITTE"
30 GOSUB 100
40 END
100 PRINT "*****"
110 RETURN
*****
MITTE
*****
Die Trennlinie steht nur einmal im Listing, wird aber zweimal benutzt.
Werte übergeben
BASIC V2 kennt keine Parameter. Man setzt vor dem Aufruf einfach eine Variable, das Unterprogramm liest sie aus. Alle Variablen sind global, es gibt keine lokalen.
10 N=3
20 GOSUB 100
30 N=6
40 GOSUB 100
50 END
100 FOR I=1 TO N
110 PRINT "*";
120 NEXT
130 PRINT
140 RETURN
***
******
Das Unterprogramm zeichnet so viele Sterne, wie in N stehen.
Typische Stolperfallen
RETURN ohne GOSUB
Der ?RETURN WITHOUT GOSUB ERROR bedeutet fast immer: Das Hauptprogramm ist versehentlich in das Unterprogramm hineingelaufen, weil davor das END fehlt.
Unterprogramm mit GOTO verlassen
Wer ein Unterprogramm per GOTO verlässt, lässt die Rücksprungstelle auf dem Stapel liegen. In langen Programmen führt das irgendwann zum Absturz. Verlasse ein Unterprogramm immer über RETURN.
Variablen überschreiben
Benutzt das Unterprogramm dieselbe Zählvariable wie das Hauptprogramm, gerät dessen Schleife durcheinander. Reserviere eigene Namen für Unterprogramme.
Passt dazu
Im Kurs lernst du GOSUB ... RETURN in Lektion 14: GOSUB und RETURN. Die vollständige Referenz aller Befehle steht im Befehls-Lexikon.