Module(X)
// in name space for modules
[
Msg(X)
// in name space for messages
Var(X)
// in name space for variables and
statements
Define(X)
// in name space for variables and
statements
"X invoked"
FillObox(, X);
Define(Example)
X, SendMsg(X);
X: "Msg X received"
FillObox(,
X)
]
Window(win,
23,
23,
700,
60,
"Scope of IV Identifiers")
{
Menu
{
[
SELECT: Example
]
}
ObjectList(X, 3, 3, 1, 1) // in name space for window objects
Attach(X, RIGHT, STRETCH, 3)
Attach(X, BOTTOM, STRETCH, 3)
}
Die Ausgabe ist:
weil sich Anweisung Example nicht auf das Statement X sondern auf die Variable X (mit Wert INVALID) bezieht.
Verändert man die Reihenfolge der Vereinbarung:
Module(X)
// in name space for modules
[
Define(X)
// in name space for variables and
statements
"X
invoked" FillObox(,
X);
Var(X)
// in name space for variables and
statements
Define(Example)
X, SendMsg(X);
X: "Msg X received"
FillObox(,
X)
so wird jetzt in Anweisung Example das
Statement X aufgerufen. Die Variable X ist bei der Definition der Anweisung
Example noch gar nicht bekannt!