local
local
Deklaration eines lokalen Datenbereichs
Details
- Siehe: Verwandte Befehle ,
global,main,sub
Die Definition von Variablen ist unter global beschrieben.
Prozedurlokale Variable
Pro Prozedur kann nur ein lokaler Datenbereich deklariert werden. Die Gültigkeit der Variablen beschränkt sich dabei auf die Funktionen der aktuellen Prozedur.
Lebensdauer
Der prozedurlokale Datenbereich wird in dem Moment angelegt, in dem eine Funktion der Prozedur aufgerufen wird. Er bleibt solange erhalten, bis die Prozedur wieder verlassen wird.
- Prozedur A: Prozedur B
- FWGMDXBLOCK0001: FWGMDXBLOCK0002
Wird die Funktion 'y' in der Prozedur 'A' aufgerufen, wird der prozedurlokale Datenbereich angelegt. Jetzt ruft 'A:y' zunächst 'A:x' auf, dort wird 'B:a' aufgerufen, die wiederum 'A:z' aufruft. Dabei bleibt der am Anfang angelegte Datenbereich erhalten. Er wird erst in dem Moment wieder entfernt, wenn keine Funktion von 'A' mehr aktiv ist, in unserem Beispiel also nach dem Beenden von 'A:y'. Ein prozedurlokaler Datenbereich ist daher immer nur einmal vorhanden.
Funktionslokale Variable
Bei einer Funktion kann zusätzlich ein lokaler Datenbereich angelegt werden (sowohl bei sub als auch bei main).
Beispiel:
sub ButtonCtrl : int;
local
{
tCounter : int;
tSize : int;
}
{
...
}
Die Deklaration entspricht dabei der Deklaration prozedurlokaler Variablen. Die Gültigkeit der Variablen beschränkt sich allerdings nur auf die Funktion, in der die Deklaration steht.
Nach der Deklaration sind die Variablen mit dem Wert 0 bzw. einer Entsprechung initialisiert, d. h. alle numerischen Variablen haben den Wert 0, alphanumerische Variablen den Wert '', Zeit-Variablen 00 : 00 : 00.0 und Datumsvariablen 0.0.0.
In einem Datenbereich können maximal 4 MB zur Deklaration von Variablen verwendet werden. Wird dieser Wert überschritten, erfolgt die Fehlermeldung Datenlimit überschritten . Die Fehlermeldung kommt auch dann, wenn die Startposition einer Variable nicht innerhalb der ersten 2 MB des Bereichs liegt. Möglicherweise müssen große Arrays dynamisch angelegt werden.