Referenz - ON ... GOSUB
Syntax: ON Ausdruck GOSUB label1[, label2 [, ...] ]
Typ: Anweisung
Kategorie: Programmablauf
ON...GOSUB verzweigt zu verschiedenen Labels, abhängig vom Wert des Ausdrucks. Die Anweisung kann nur bis FreeBASIC v0.16 eingesetzt werden, oder in entsprechend höheren Versionen, die mit der Kommandozeilenoption -lang deprecated compiliert wurden! Wird mit FreeBASIC v0.17 unter der Option -lang fb compiliert, so ist ON...GOSUB nicht mehr zulässig!
- 'Ausdruck' ist ein beliebiger numerischer Ausdruck, dessen Wert zu einem INTEGER gerundet wird. Nicht zulässig sind STRINGs, ZSTRINGs und WSTRINGs.
- 'label1', 'label2', ... sind Labels, wie sie mit GOTO oder GOSUB verwendet werden.
Ist der Wert von 'Ausdruck' gleich 1, wird zum ersten Label verzweigt, ist er gleich 2, zum zweiten, und so fort. Ist der Wert von 'Ausdruck' kleiner als 1 oder größer als die Anzahl der Labels, so wird das Programm mit der Anweisung nach ON...GOSUB fortgesetzt. Da der Sprung durch GOSUB durchgeführt wurde, kann anschließend mit RETURN wieder zur Zeile nach dem ON...GOSUB zurückgesprungen werden.
ON...GOSUB kann durch andere Mechanismen, wie z. B. SELECT CASE in Verbindung mit SUB, ersetzt werden.
Beispiel:
#LANG "fblite"
OPTION GOSUB
DIM AS INTEGER wahl = 3
ON wahl GOSUB labelA, labelB, labelC
PRINT "Good bye."
SLEEP
END
labelA:
PRINT "Wahl A"
RETURN
labelB:
PRINT "Wahl B"
RETURN
labelC:
PRINT "Wahl C"
RETURN
Ausgabe:
Wahl C
Good bye.
Unterschiede zu QB:
FreeBASIC erzeugt keinen Laufzeitfehler, wenn 'Ausdruck' negativ oder größer als 255 ist.
Unterschiede unter den FB-Dialektformen:
- ON...GOSUB steht nur in den Dialektformen -lang fblite und -lang qb zur Verfügung.
- In der Dialektform -lang fblite muss ON...GOSUB mittels GOSUB (Schlüsselwort) aktiviert werden.
Siehe auch:
ON...GOTO, GOSUB, RETURN, GOTO, SELECT CASE, Programmablauf
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|