GOSUB <Zeilennummer>
RETURN
Der Befehl "GOSUB" springt zunächst genauso wie "GOTO" einfach zu der angegebenen Zeilennummer und setzt das Programm dort fort. Der Basicinterpreter merkt sich aber, welche Zeile auf die mit dem GOSUB-Befehl folgt. Falls das Programm nun auf einen "RETURN"-Befehl stößt, wird die Programmausführung in der gemerkten Zeile fortgesetzt.
Als Beispiel soll ein Unterprogramm dienen, das einen Text nacheinander zeichenweise auf den Bildschirm schreibt. Machen Sie sich nichts daraus, wenn Sie die folgenden Zeilen noch nicht ganz verstehen - es genügt für's erste zu wissen, daß sie den Inhalt der Stringvariablen "A$" zeichenweise auf den Bildschirm schreiben. Eine Stringvariable ist eine Variable, die Text enthalten kann.
1000 FOR I=1 TO LEN(A$)
1010 PRINT MID$(A$,I,1);
1020 NEXT I
1030 RETURN
Dieses Unterprogramm für sich auszuführen macht keinen Sinn: Erstens hat A$ noch keinen Inhalt, es wird also auch nichts auf den Bildschirm geschrieben. Zweitens würde der Basicinterpreter in Zeile 1030 auf den RETURN-Befehl stoßen, ohne daß er zuvor bei einem GOSUB vorbeigekommen wäre. Das Programm würde daher mit einer Fehlermeldung abbrechen.
Wir benötigen daher noch ein Hauptprogramm, das unser Unterprogramm nutzt. Es kann es nicht nur einmal, sondern beliebig oft und von verschiedenen Stellen aus aufrufen:
100 A$="ACHTUNG! ACHTUNG! HIER SPRICHT DEIN COMPUTER!"
110 GOSUB 1000
120 PRINT
130 A$="IN MEINEM SPEICHER HAT SICH EIN BIT VERKLEMMT."
140 GOSUB 1000
150 PRINT
160 A$="BITTE DREH MICH UM UND KLOPF MIR AUF DEN RUECKEN!"
170 GOSUB 1000
180 PRINT
190 END
Zeile 190 enthält einen weiteren neuen Befehl: END. Er führt dazu, daß das Programm an dieser Stelle beendet wird. Es gilt als ordentlicher Programmierstil, alle Unterprogramme am Ende des Programmes (d.h. bei den hohen Zeilennummern) unterzubringen. Das davorstehende Hauptprogramm endet dann mit dem END-Befehl, andernfalls wird zuletzt das erste Unterprogramm nach dem Hauptprogramm ausgeführt und der Basicinterpreter scheitert am RETURN-Befehl, der dieses Unterprogramm abschließt.
Ach P.s. FUBU SENF!!