Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Behandlung von Namenskonflikten

Namenskonflikte können entstehen, wenn im Externadressbuch einer Ladeeinheit Symbole mit gleichen Namen vorkommen. Symbole sind CSECTs, ENTRYs, COMMON-Bereiche und XDSECs-D. Nicht jede Namensgleichheit ist ein Namenskonflikt.

Der DBL behandelt Namenskonflikte im Betriebsmodus RUN-MODE=*STD und RUN-MODE=*ADVANCED (siehe "Migration vom dynamischen Bindelader DLL zum DBL") unterschiedlich.

Behandlung von Namenskonflikten bei RUN-MODE=*STD

Bei RUN-MODE=*STD werden Namenskonflikte entdeckt, unabhängig davon, ob die Symbole in einem Modul maskiert sind oder nicht. Der Benutzer hat keine Möglichkeit, die Behandlung von Namenskonflikten zu steuern.

In der folgenden Tabelle ist dargestellt, wie der DBL Namenskonflikte behandelt. Dabei bedeutet „Eintrag 1“ ein Symbol in einem Modul, das bereits geladen ist, oder ein COMMON-Bereich, der in der aktuellen Ladeeinheit bereits bekannt ist. Ein nicht initialisierter COMMON-Bereich am Ende der Ladeeinheit wird in der Symboltabelle vermerkt und bei weiteren Ladeaufrufen als CSECT betrachtet. Ein Namenskonflikt tritt auf, wenn ein Modul geladen wird, in dem ein Symbol „Eintrag 2“ mit gleichem Namen gefunden wird.

Eintrag 1

Eintrag 2

CSECT

ENTRY

COMMON

XDSEC-D

CSECT

(1)


(2)


ENTRY



(3)


COMMON

(3)

(4)

(5)


XDSEC-D




(6)

Bedeutung

(1)

Ein Namenskonflikt wurde entdeckt.

Das Laden des Moduls, das die CSECT mit dem gleichen Namen enthält, wird abgebrochen.

Die Autolink-Funktion wird abgebrochen. Wurde das Laden des Moduls durch eine INCLUDE-Anweisung in einem Bindemodul verursacht (siehe Anhang), so wird das Modul ignoriert und die Verarbeitung wird fortgesetzt.

(2)

Der COMMON-Bereich wird mit der CSECT initialisiert.

(3)

Ein Namenskonflikt wurde entdeckt.

Das Laden wird abgebrochen.

(4)

Der Namenskonflikt wird nicht entdeckt.

(5)

Der zweite COMMON-Bereich wird ignoriert.

(6)

Behebbarer Fehler

Die zweite XDSEC-D wird übergangen.

(-)

kein Namenskonflikt (nur Namensgleichheit).


Behandlung von Namenskonflikten bei RUN-MODE=*ADVANCED

Bei RUN-MODE=*ADVANCED werden Namenskonflikte nur entdeckt, wenn die Symbole in einem Modul nicht maskiert sind. Der Benutzer wird über jeden Namenskonflikt, bei dem Fehler auftreten können, durch eine Meldung benachrichtigt. Mit dem Operanden NAME-COLLISION im Ladeaufruf hat der Benutzer die Möglichkeit, die Behandlung von Namenskonflikten zu steuern. Folgende Möglichkeiten sind vorhanden:

  • Operand NAME-COLLISION=*STD
    Namenskonflikte zwischen nicht maskierten Symbolen werden durch Warnungsmeldungen angezeigt. Das Modul, das das Symbol mit dem gleichen Namen enthält, wird geladen. Die neue Ausprägung des Symbols wird maskiert, d.h. es wird nicht mehr benutzt, um Externverweise zu befriedigen.

  • Operand NAME-COLLISION=*ABORT
    Das Laden der aktuellen Ladeeinheit wird abgebrochen, sobald ein Namenskonflikt zwischen nicht maskierten Symbolen entdeckt wird.

In der folgenden Tabelle ist dargestellt, wie der DBL Namenskonflikte bei NAME-COLLISION=*STD behandelt. Dabei bezeichnet „Eintrag 1“ ein nicht maskiertes Symbol in einem Modul, das bereits geladen ist, oder ein COMMON-Bereich, der in der aktuellen Ladeeinheit bereits bekannt ist. Ein nicht initialisierter COMMON-Bereich am Ende der Ladeeinheit wird in der Symboltabelle vermerkt und bei weiteren Ladeaufrufen als CSECT betrachtet. Ein Namenskonflikt tritt auf, wenn ein Modul geladen wird, in dem ein nicht maskiertes Symbol „Eintrag 2“ mit gleichen Namen gefunden wird.


Eintrag 2

Eintrag 1

CSECT

ENTRY

COMMON

XDSEC-D

CSECT

(1)

(1)

(2)


ENTRY

(1)

(1)

(1)


COMMON

(1)

(1)

(3)


XDSEC-D




(4)

Bedeutung

(1)

Ein Namenskonflikt wurde entdeckt. Das Symbol „Eintrag 1“ wird nicht maskiert und kann für die Befriedigung von Externverweisen verwendet werden. Das Symbol „Eintrag 2“ wird maskiert und kann nicht mehr für die Befriedigung von Externverweisen verwendet werden. Eine Warnungsmeldung wird ausgegeben.

(2)

Der COMMON-Bereich wird mit der CSECT initialisiert (wie bei RUN-MODE=*STD).

(3)

Der zweite COMMON-Bereich wird ignoriert (wie bei RUN-MODE=*STD).

(4)

Behebbarer Fehler

Die zweite XDSEC-D wird übergangen. Die Behandlung ist die gleiche wie bei RUN-MODE=*STD.

(-)

kein Namenskonflikt (nur Namensgleichheit).