RETURN

Der BASIC-Befehl RETURN (nicht zu verwechseln mit der Eingabetaste RETURN ) springt aus dem Unterprogramm zurück zum folgenden Befehl des aufrufenden GOSUB bzw. ON … GOSUB.
Das in einem Unterprogramm zuerst angetroffene RETURN (kann an mehreren Stellen vorkommen) beendet dieses unmittelbar und führt den Programmlauf zur aufrufenden Stelle nach dem GOSUB zurück. Etwaige nach dem RETURN folgende Befehle werden nicht mehr ausgeführt, wenn sich diese in der gleichen Programmzeile befinden (nicht erreichbarer, toter Programm-Code).
Mit einem RETURN werden auch automatisch alle noch offenen FOR-NEXT-Schleifen beendet, um die man sich nicht gesondert kümmern muss. Bei weiteren Unterprogrammaufrufen bevor ein RETURN erreicht wird, bezieht sich das nächste RETURN stets auf das zuletzt durchgeführte GOSUB, was dann einer Verschachtelung entspricht.

Bei der Verschachtelungssituation, wo in einem Unterprogramm weitere Unterprogrammaufrufe erfolgen, ist darauf zu achten, dass die RETURN-Vorkommnisse zu der Anzahl der GOSUB-Aufrufe passen:

  • Gibt es zu viele GOSUBs und überschreitet dies die maximale Verschachtelungstiefe, dann kommt es durch den überlaufenden BASIC-Stapel zu der Fehlermeldung ?OUT OF MEMORY ERROR (Details dazu siehe GOSUB).
  • Sind es zu viele RETURN-Aufrufe, sodass kein zum GOSUB gehörender Vermerk am BASIC-Stapel vorgefunden wird, führt das zum Abbruch mit der BASIC-Fehlermeldung ?RETURN WITHOUT GOSUB ERROR.

Als parameterloser Befehl führen etwaige dem Befehl folgende Angaben zu einem ?SYNTAX ERROR.

Beispiele

10 PRINT CHR$(147);CHR$(14)
20 A$ = "dieser text soll stueckweise auf den monitor ausgegeben werden !": GOSUB 1000 
30 GOSUB 2000: A$ = "...dieser text ebenfalls..." : A = 160
40 GOSUB 1000: PRINT "Hier geht das BASIC-Programm aus dem Unterprogramm weiter": GOSUB 2000
100 END
1000 REM Unterprogramm "Ausgabe"
1010 IF LEN(A$) = 0 THEN RETURN : REM Bei A$=""  ILLEGAL QUANTITY ERROR
1020 FOR X=1 TO LEN(A$)
1030 ZE = ASC (MID$ (A$, X, 1))
1040 POKE 1024+X-1+A,ZE: POKE 55296+X-1+A,ZE
1050 FOR Y=0 TO 333: NEXT Y, X
1060 RETURN
2000 REM Unterprogramm "Warte auf Taste"
2010 GET B$ : IF B$="" THEN 2010
2030 RETURN : PRINT "Test" : REM Nach dem RETURN in dieser Zeile wird nichts mehr ausgeführt !

Das Unterprogramm „Ausgabe“ (Zeile 1000) zeigt den Fall mit mehrfach vorkommenden RETURNs. Die Parameterübergabe erfolgt per Konvention über die Variable A$, die dafür vorübergehend in Beschlag genommen wird und damit verändert werden könnte.
Die Behandlung von Rückgabedaten wird in Unterprogramm „Warte auf Taste“ (Zeile 2000) gezeigt, wo die Variable B$ hierfür verwendet wird.
Hinsichtlich der in Unterprogramme verwendeten Variablen ist also genauestens Buch zu führen.