Die Abschnittsauflösungsregeln erläutern, wie EGL nach Abschnittsnamen sucht, um Verweise in einem Programm aufzulösen. Dieser Prozess unterscheidet sich von
der unter Namensauflösung in einem Ausdruck beschriebenen Suche zum Auflösen eines Namens in einem Ausdruck.
Abschnittsauflösungsregeln gelten für Folgendes:
- Variablen-, Feld- und Parameterdeklarationen auf der Basis eines Abschnitts
- Anweisung 'use'
- Ausdrücke, bei denen ein Name nicht als Feld oder Funktion aufgelöst werden kann
- Eigenschaften, die auf einen Abschnitt verweisen
Die Abschnittsauflösung beruht auf drei wichtigen Konzepten:
- EGL_ROOT
- Das EGL-Stammverzeichnis (EGL_ROOT) ist ein logischer Container, der alle mit EGL gelieferten Abschnitte enthält.
- EGL-Buildpfad
- Der EGL-Buildpfad steuert die Sichtbarkeit für Projekte, stellt jedoch auch eine Suchreihenfolge bereit, wenn EGL versucht, einen Abschnittsnamen
aufzulösen. EGL_ROOT wird am Ende des Pfads implizit hinzugefügt. Weitere Informationen finden Sie im Thema zum EGL-Buildpfad im EGL-Handbuch für
Programmierer.
- Systembereich
- Der Systembereich enthält eine Gruppe von EGL-Abschnitten, die aufgelöst werden können, ohne importiert oder vollständig qualifiziert werden zu
müssen. Derzeit enthält der Systembereich lediglich die Abschnitte, die sich in EGL_ROOT befinden.
Der Systembereich ermöglicht es Ihnen, einen Systemabschnitt zu referenzieren, wie beispielsweise den Datensatz
'sqlLib.sqlData', ohne ein Qualifikationsmerkmal oder die Anweisung 'import' zu verwenden:
mySQLDataVar sqlData;
Um einen vollständig qualifizierten Abschnittsnamen aufzulösen, durchsucht EGL jeden Eintrag im Buildpfad, um zu ermitteln, ob sich das angegebene Paket und der
angegebene Abschnitt dort befinden. Der erste Abschnitt, der im EGL-Buildpfad gefunden wird, wird verwendet.
Um einen nicht qualifizierten Abschnittsnamen aufzulösen, gelten in EGL die folgenden Prioritäten in der angegebenen Reihenfolge:
- Importe einzelner Abschnitte
- Zunächst versucht EGL den Namen aufzulösen, indem die Importanweisungen für einzelne Abschnitte in Ihrer Quellendatei überprüft werden. Die folgende Anweisung
'import' beispielsweise löst den Namen myLibrary auf:
import com.companyb.gl.myLibrary;
- Es können keine Abschnitte aus dem Standardpaket importiert werden.
- Aktuelles Paket
- Nach Überprüfung der Importe einzelner Abschnitte überprüft EGL den Rest Ihres aktuellen Pakets auf den Namen. Wenn beispielsweise der vorherige Schritt
fehlschlägt und Sie eine Bibliothek namens myLibrary in Ihrem aktuellen Paket besitzen, verwendet EGL diese Bibliothek, um den Verweis aufzulösen.
- Bedarfsgesteuerte Importe
- EGL sucht nach jedem der Pakete in den bedarfsgesteuerten import-Anweisungen in allen Projekten im EGL-Buildpfad in der
Reihenfolge ihres Vorkommens. Wird ein übereinstimmendes Paket gefunden, durchsucht EGL dieses Paket nach einem übereinstimmenden Abschnitt. Ist der
gesuchte Abschnitt in diesem übereinstimmenden Paket nicht vorhanden, wird der EGL-Buildpfad weiter nach einem anderen Paket mit demselben Namen durchsucht.
- Bei diesem Schritt liest EGL alle bedarfsgesteuerten import-Anweisungen in Ihrer Quellendatei. Wenn derselbe Abschnittsname von
mehr als einer bedarfsgesteuerten
import-Anweisung aufgelöst wird, markiert EGL diesen Namen als mehrdeutig. Dieser Konflikt kann behoben werden, indem Sie eine oder
mehrere der bedarfsgesteuerten import-Anweisungen durch eine
import-Anweisung für einen einzelnen Abschnitt oder einen vollständig qualifizierten Abschnittsnamen ersetzen.
- Wenn sich eine Bibliothek namens myLibrary im Paket com.companyb.payroll befindet, kann EGL diese anhand des folgenden
Codes auflösen:
import com.companyb.payroll.*;
- Es können keine Abschnitte aus dem Standardpaket importiert werden.
- Systembereich
- Der Systembereich wird nur dann nach einem übereinstimmenden Abschnitt durchsucht, wenn EGL einen Abschnittsnamen in keinem der vorherigen Schritte auflösen
kann.