Lade...
 

Bereich

Geltungsbereich und Sichtbarkeit der Sprachelemente von InstantView®

Variable, Prozeduren, Messages, Module und Windowobjekte besitzen einen Namen (Identifikator oder Bezeichner).
Die "Sichtbarkeit" eines Identifikators bestimmt, in welchen Programmteilen man sich mit dem Identifikator auf das von ihm Bezeichnete beziehen kann, und, wie die durch die Vergabe gleicher Namen entstehenden Mehrdeutigkeiten aufgelöst werden.
InstantView®-Programmcode ist durch Module strukturiert. 
Der Geltungsbereich und die Sichtbarkeit von Variablen, Prozeduren und Windowobjekten wird durch die Module bestimmt. (Beispiel)
Das gilt nicht für Messages - sie sind als einziges Mittel zur Kommunikation über Modulgrenzen hinweg vorgesehen und besitzen deshalb globale Gültigkeit.

  • Modul
    Der Name eines Moduls ist global bekannt und muss deshalb eindeutig sein.
     
  • Variable
    sind innerhalb eines Moduls definiert und nur dort bekannt.
    Ausnahme: Variable, die im Modul GLOBAL oder mit Statement GlobalVar vereinbart wurden. Globale Variable sind in allen Modulen sichtbar, solange sie nicht durch eine lokale Variable mit gleichem Namen verdeckt werden.
     
  • Prozeduren
    Mit Define beschriebene Prozeduren sind nur innerhalb eines Moduls bekannt.
    Ausnahme sind auch hier Prozeduren, die im Modul GLOBAL definiert wurden: Diese können dann in allen Modulen aufgerufen werden, solange dort keine (lokale) Anweisung mit gleichem Namen existiert.
     
  • Windowobjekte
    Childobjekte beziehen sich immer auf ein Parent-Window. Windows sind nur innerhalb eines Moduls bekannt. Auch hier gilt wieder die Ausnahme des Moduls GLOBAL: Auf die Windows dieses Moduls kann man sich mit den entsprechenden InstantView®-Anweisungen beziehen. Ein lokales Window mit gleichem Namen hat aber Vorrang, d.h. es verdeckt ein global bekanntes Window.
     
  • Messages
    sind systemweit bekannt. Für jede Message muss ein eindeutiger Name vergeben werden.

Es ist sicher kein guter Stil, die gleichen Namen für Variable, Prozeduren und Messages zu vergeben. 
Das kann aber irrtümlich passieren. Und deshalb geben wie hier die folgenden einfachen Regeln an:

  • Module, Messages und Windowobjekte besitzen je einen eigenen unabhängigen Namensraum.
    Es ist prinzipiell erlaubt, den gleichen Namen für ein Modul, eine Message oder auch ein Windowobjekt zu vergeben. Und es stört auch nicht, wenn dies auch der Name einer Variablen oder einer Anweisung ist.
     
  • In der Syntax von InstantView® gleicht der Aufruf einer Variablen dem Aufruf einer Anweisung; beide teilen sich deshalb den einen gemeinsamen Namensraum.
    Eine Variable "verdeckt" eine Prozedur mit gleichem Namen.
    Allerdings spielt die Reihenfolge der Vereinbarung eine Rolle - siehe Beispiel.