Variable
Variablen in InstantView® haben folgende Eigenschaften:
untypisiert
Variablen haben keinen Typ. Variable sind - ebenso wie Stackelemente - Container und können alle in InstantView® möglichen Werte halten.
Initialialwert
Vor der ersten Wertzuweisung halten alle Variablen den Wert INVALID
Hierarchiche Scopes
Variablen haben einen Gültigkeitsbereich (Scope):
Scope | Definition mit | Hinweis | |
---|---|---|---|
globaler Scope | die Variable ist in der gesamten Anwendung bekannt | GlobalVar | |
Modul Scope | die Variable ist in dem Modul bekannt, wo sie definiert wurde, und in allen von diesem Modul abgeleiteten Modulen (Vererbung) | Var | Wert am Beginn des Scopes immer INVALID |
StaticVar erst ab DLL Version 4.6.0.000000 |
hält den zuletzt zugewiesenen Wert | ||
lokale Scopes | die Variable existiert nur innerhalb eines Makros oder { } - Blocks Lokale Scopes können untereinander eine Hierarchie bilden (nested { } - Blocks) |
LocalVar erst ab DLL Version 4.6.0.170276 |
vererbte Variablen sind in unterschiedlichen Modulen unabhängig voneinander = halten unterschiedliche Werte |
StaticVar erst ab DLL Version 4.6.0.000000 |
vererbte Variablen sind in unterschiedlichen Modulen identisch = halten den gleichen Wert |
Variablen mit gleichem Namen in unterschiedlichen Scopes verdecken die Variable in den übergeordneten Scopes.
Statisch oder nicht-statisch
Im Modul-Scope unterscheiden sich statische und nicht-statische Variablen, wenn von einem Basis-Modul mindestens zwei Module abgeleitet sind.
Bei einer statischen Variablen beziehen sich alle Ableitungen immer auf den gleichen Wert. Für nicht-statische Variablen besitzt jedes Modul eine eigene, von den "Geschwister-Modulen" unabhängige Instanz.
Lokale Variablen haben beim Eintritt in ihren Scope den Wert INVALID. Innerhalb des Scopes zugewiesene Werte werden beim Verlassen des Scopes "vergessen".
Lokale statische Variablen halten den zuletzt zugewiesenen Wert auch nach dem Verlassen des Scopes.
Transaktionsorientiert
Globale und Module-Scope Variablen werden beim Abbruch einer Transaktion auf den letzten, vor Beginn der Transaktion zugewiesenen Wert zurückgesetzt.
Lokale Variablen sind nicht transaktionsorientiert (wegen der kurzen Lebensdauer nicht sinnvoll!).
Deklaration einer Variablen