Mit DBL wird ein neuer Mechanismus eingeführt, der im weiteren als „Indirektes Binden“ bezeichnet wird. Beim indirekten Binden (Indirect Linkage) wird ein Externverweis nicht wie bisher direkt mit einer Programmdefinition befriedigt, sondern über eine zwischengeschaltete Indirect-Linkage-Routine. In dieser IL-Routine erfolgt der Aufruf eines Servermoduls, das die gesuchte Programmdefinition enthält.
Das indirekte Binden hat folgende Vorteile:
Beim Austausch des Servermoduls wird nur zwischen der IL-Routine und dem Server entbunden. Beim Einsetzen des neuen Servermoduls für dieselbe Programmdefinition muss nur der Externverweis zwischen der IL-Routine und dem Servermodul befriedigt werden. Das vermeidet aufwändige konsistenzerhaltende Maßnahmen zwischen dem Server und seinen möglichen Aufrufern.
Die Befriedigung von Externverweisen wird nur einmal durchgeführt und ändert sich nicht, solange der Aufrufer geladen ist. Dadurch wird das Entbinden über mehrere Kontexte oder Tasks hinweg vermieden und die Befriedigung von Externverweisen muss nicht bei jedem Aufruf des Servers erneut durchgeführt werden.
Symbole des Typs ILE
Für das indirekte Binden wurde der neue Symboltyp ILE (Indirect Linkage Entry) eingeführt. Ein ILE hat folgende Attribute:
Name:
entspricht dem Namen des ILE-ServersAdresse der IL-Routine
Adresse des ILE-Servers:
ein Feld, das die ILE-Serveradresse enthältDistanz der Serveradresse in der IL-Routine:
lokalisiert das Feld mit der ILE-Serveradresse innerhalb der IL-RoutineStatus des Servers (aktiv oder nicht aktiv):
zeigt an, ob der ILE-Server zu diesem Zeitpunkt aufgerufen werden kann.Der Status kann sowohl vom aufrufenden Programm als auch von einer benutzerdefinierten IL-Routine verwendet werden.Steuerung (durch das System oder durch den Benutzer)
Die Deklaration von ILEs und die Verwaltung von ILE-Listen werden durch die Makroaufrufe ILEMGT und ILEMIT ermöglicht. Informationen über ILEs können mit dem Makroaufruf VSVI1 angefordert werden.
In Bild 3 ist dargestellt, wie Externverweise befriedigt werden, wenn der ILE-Server geladen ist.
(1) | Der Aufruf von S1 verzweigt zur IL-Routine für S1. |
(2) | Wenn das Servermodul S1 nicht geladen ist, erfolgt der Rücksprung zum aufrufenden Programm X bereits in der IL-Routine. |
(3) | Wenn das Servermodul S1 geladen ist, verzweigt die IL-Routine zum Servermodul S1. |
(4) | Ist das Servermodul S1 abgearbeitet, erfolgt der Rücksprung zum aufrufenden Programm X. |
(5) | Der Aufrufer kann den Returncode überprüfen, um Informationen über die Abarbeitung des Servermoduls zu erhalten. |
(6) | Die Symboltabelle des Kontextes xyz enthält den Eintrag für ein ILE-Symbol mit dem Namen S1, in dem die Adressen der IL-Routine (L) und des Servermoduls (S) abgelegt sind. |