3.6 Welche Gültigkeit haben Variablen?
Eine Variable in Starbasic hat eine bestimmte Gültigkeit. Es gibt globale, öffentliche (public), private und "normale" Variablen. Durch diese Unterscheidung wird die Gültigkeit der Variablen für den Interpreter festgelegt.
Erst mal eine Kurzfassung:

Globale Variablen: Sie gelten innerhalb der gesamten Statoffice-Sitzung in allen geladenen Bibliothken, Modulen, Prozeduren und Funktionen.
Public Variablen: Sie gelten innerhalb aller Module einer Bibliothek
Private Variablen: Sie gelten nur innerhalb eines Moduls. Diese Variablennamen können daher auch in mehreren Modulen parellel verwendet werden.
Locale Variablen: Sie gelten nur innerhalb einer Funktion oder Procedure

Jetzt die lange Fassung:

Lokale Variablen werden innerhalb einer Prozedur oder Funktiondeklariert und wird nur innerhalb dieser auch verwendet.

Sub MyProzedur
  Dim MyVariable as Integer
end Sub

Lokale Variablen haben nur Gültigkeit solange der Interpreter innerhalb der Prozedur oder der Funktion ist. Sobald diese verlassen worden ist stehen die zugewiesen Werte und die Variable nicht mehr zur Verfügung. Auch bei einem neuen Aufruf der Prozedur oder Funktion sind die Variablen nicht mehr belegt. Hierfür gibt es die Ausnahme wenn die Variable als Static deklariert.

Sub MyProzedur
Static MyVariable as Integer
end Sub

Eine als Static deklarierte Variable behält ihren Wert bis zum nächsten Aufruf der Prozedur bei.


Öffentliche Variablen werden im Kopfbereich eines Moduls deklariert und gelten dann innerhalb aller Prozeduren und Funktionen dieses Moduls.
Alternativ zu dem Befehl "Dim" kann hierfür auch der Befehl "Public" verwendet werden. Wichtig ist aber die Deklaration im Kopfbereich.

Dim MyVariable as Integer

Sub MyProzedur
MyVariable = 1
end Sub

Diese öffentlichen Variablen haben solange Gültigkeit wie das Modul ausgeführt wird. Hier unterscheidet sich die öffentliche Variable von der globalen Variablen.
Globale Variablen werden ebenfalls im Kopfbereich eines Moduls deklariert, sie haben auch nach beenden des Moduls Gültigkeit.
Erzeugt werden globale Variablen mit dem Befehl "Global"

Global MyVariable as Integer

Zu guter Letzt kommen noch die privaten Variablen .

Private MyVariable as Integer

erzeugt eine private Variable. Diese hat nur innerhalb des Moduls Gültigkeit. Wenn in einem zweites Modul ebenfalls eine Variable mit gleichem Namen als privat deklariert wird, erzeugt der Interpretor beim Ausführen auch eine zweite Variable. Private Variablen sollte man einsetzen wenn man Werte wirklich nur innerhalb des Moduls verwenden will und in seinem Code nicht mit öffentlichen  Variablen durcheinander kommen will.