Ein Name in einem EGL-Ausdruck kann auf Folgendes verweisen:
- Einen Parameter
- Eine Variable
- Ein Feld
- Eine Funktion
- Einen Namensteil (wenn der Name qualifiziert ist)
Der Prozess der Namensauflösung ist stets derselbe, unabhängig davon, an welcher Position sich der Ausdruck befindet (so kann sich der Ausdruck beispielsweise
in einer Zuordnungsanweisung, einem Funktionsaufruf oder an einer anderen Position befinden). Die Regeln für die Auflösung eines Abschnittsnamens sind jedoch
unterschiedlich (siehe EGL-Regeln für Abschnittsauflösung).
Um einen Namen in einem Ausdruck aufzulösen, berücksichtigt EGL die folgenden Deklarationen (in der angegebenen Reihenfolge):
- Lokale Variablen und Parameter. Hierbei handelt es sich um die Variablen, die in der Funktion deklariert sind. Dies umfasst die Parameterliste für die
Funktion und alle Namen von Datensatzvariablen (jedoch keine Feldnamen innerhalb dieser Datensätze).
In dieser Kategorie sind keine doppelten Namen zulässig.
- Lokale E/A-Objekte. Hierbei handelt es sich um E/A-Objekte und andere funktionsspezifische Felder. E/A-Objekte enthalten möglicherweise eine Feldgruppe aus
SQL-Datensätzen, auf die in einer Anweisung vom Typ 'get' verwiesen wird. Auf derselben Ebene befinden sich Felder in
Datensatzvariablen, die deklariert oder als Parameter an die Funktion übergeben werden. Auf Funktionsebene deklarierte Datensatzvariablen gehören zu Schritt 1;
Datensatzvariablen, die auf Programmebene deklariert werden, gehören zu diesem Schritt. In dieser Kategorie sind doppelte Namen
möglich.
So können beispielsweise zwei Datensatzvariablen auf derselben Definition von 'CustomerRecord' basieren, jeweils mit einem
Feld 'customerNumber'. In diesem Fall müssen Sie den Namen 'customerNumber' mit dem Namen der Datensatzvariablen qualifizieren, um eine
Mehrdeutigkeit zu vermeiden.
Ein weiteres Beispiel sind eine Datensatzvariable auf Programmebene und ein Feld desselben Namens
auf Funktionsebene. In diesem Fall müssen Sie eine oder mehrere der folgenden Aktionen ausführen:
- Qualifizieren Sie den Namen der Datensatzvariable auf Programmebene mit dem Schlüsselwort 'this'.
- Setzen Sie die Eigenschaft 'allowUnqualifiedItemReferences' auf YES.
- Qualifizieren Sie das Feld mit dem Namen der Datentabelle, des Formulars oder des strukturierten Datensatzes, die/das/der das Feld enthält. Feldnamen in
nicht strukturierten Datensätzen müssen stets mit dem Datensatznamen qualifiziert werden.
- Programmvariablen. Hierbei handelt es sich um die Variablen, die auf Programmebene deklariert sind. Sie umfassen die Parameterliste (im Falle eines
aufgerufenen Programms) und alle Namen von Datensatzvariablen (jedoch keine Feldnamen innerhalb dieser Datensätze).
In dieser Kategorie sind keine doppelten Namen zulässig.
- Formularnamen. Diese Formularnamen können wie folgt deklariert werden:
- In Deklarationen vom Typ 'use'.
- Als Angabe in der Eigenschaft 'inputForm'.
- In der Parameterliste des Programms.
- In allen E/A-Anweisungen in einer beliebigen Funktion im Programm.
Wenn die Deklaration vom Typ 'use'
auf eine Formulargruppe (FormGroup) verweist, berücksichtigt EGL sämtliche Formularnamen innerhalb der Gruppe. In dieser Kategorie sind keine doppelten Namen zulässig.
- Datentabellennamen. Es werden Datentabellennamen in Deklarationen vom Typ 'use' berücksichtigt.
In dieser Kategorie sind keine doppelten Namen zulässig.
- Felder. EGL berücksichtigt nun alle Felder in den Datensätzen, Formularen und Datentabellen aus den Schritten 3 bis 5. Doppelte Namen in dieser Kategorie
müssen qualifiziert werden, um Mehrdeutigkeiten zu vermeiden.
- Bibliotheksvariablen. Hierbei handelt es sich um die Variablen in einer Benutzerbibliothek, die in einer Deklaration vom Typ 'use'
angegeben ist. Doppelte Namen in dieser Kategorie müssen mit dem Namen der Bibliothek qualifiziert werden.
- Systemvariablen. Am Ende berücksichtigt EGL die Variablen in den EGL-Systembibliotheken. In dieser Kategorie gibt es keine doppelten Namen.