Die 'GoSub'-Anweisung existiert in Gambas seit der Version 3.1.
Es wird bedingungslos zu einem Label gewechselt, das an einer anderen Stelle in der Funktion oder Prozedur erklärt ist. Wenn in den Anweisungen unter dem Ziel(-Label) eine Return-Anweisung steht, kehrt das Programm zurück, um den Code unmittelbar nach der GoSub-Anweisung auszuführen.
GoSub Label * Anweisung(en) ' → Programm-Fortsetzung nach RETURN Label: Anweisung(en) RETURN …
Im Kapitel → 16.10 HistoryBox wird eine TextBox um die History-Eigenschaft erweitert, um eine bestimmte Anzahl von Eingaben temporär zu speichern.
In der folgenden TextBox_KeyPress()-Prozedur wird zum Beispiel der gleiche Quelltextabschnitt von Zeile 17-19 zwei mal an unterschiedlichen Stellen (Zeile 6 und Zeile 10) verwendet:
[1] Public Sub TextBox_KeyPress() [2] [3] If Not $hHistory Then Return [4] Select Key.Code [5] Case Key.Up [6] GoSub UPDATE_HISTORY [7] Inc $iCurrent [8] Goto UPDATE_TEXTBOX [9] Case Key.Down [10] GoSub UPDATE_HISTORY [11] Dec $iCurrent [12] Goto UPDATE_TEXTBOX [13] End Select [14] Return [15] [16] UPDATE_HISTORY: [17] If $iCurrent = -1 Then Return [18] $hHistory[$iCurrent] = Super.Text [19] Raise HistoryChange [20] RETURN [21] [22] UPDATE_TEXTBOX: [23] If $iCurrent = -2 Then Inc $iCurrent [24] If $iCurrent = -1 Then [25] Super.Clear() [26] Return [27] Endif [28] If $iCurrent >= $hHistory.Size Then Dec $iCurrent [29] Super.Text = $hHistory[$iCurrent] [30] Return [31] [32] End
Ein weiteres Beispiel für die Verwendung der GoSub-Anweisung bietet das Projekt Pong von Tobias Boege aus den Beispiel-Projekten von Gambas in der Kategorie Spiele.
Artikel