In welcher Reihenfolge die verschiedenen Programmteile der UTM-Anwendung geladen und wie dabei die Externverweise aufgelöst werden, wird in Bild 1 dargestellt und anschließend beschrieben. Die Nummern bezeichnen dabei die Reihenfolge, in der die Programmteile geladen werden (müssen). Die Pfeile geben an, in welcher Richtung beim Laden die unbefriedigten Externverweise der Lademodule aufgelöst werden, wenn ohne Autolink geladen wird.
Bild 1: Speicherstruktur einer UTM-Anwendung (CMP = Common Memory Pool)
Mit Ausnahme des Ladens der Subsysteme (durch den Systemadministrator) und des Ladens des statischen Teils (durch ein START-EXECUTABLE-PROGRAM-Kommando) werden alle Ladevorgänge durch openUTM angestoßen und kontrolliert:
1, 2, 3 Gemeinsam benutzbare Module lädt der Systemadministrator vor dem Start der UTM-Anwendung.
4 | Das Start-LLM mit allen eingebundenen Lademodulen wird mit dem START-EXECUTABLE-PROGRAM- oder LOAD-EXECUTABLE-PROGRAM-Kommando geladen. Offene Externverweise sollten wegen der Ladeperformance nur aus dem Shared Code befriedigt werden, können aber auch aus Bibliotheken befriedigt werden. Das Kommando zum Start des Start-LLMs sollte folgendermaßen lauten: /START-EXECUTABLE-PROGRAM FROM-FILE=*LIB-ELEM - *) / (LIBRARY=lm-lib - / ,ELEMENT=lm-name, TYPE=L) - / ,DBL-PAR=(LOADING= - / (LOAD-INFORMATION=REFERENCES,PROGRAM-MODE=ANY) - / ,RESOLUTION=(ALTERNATE-LIBRARIES=*BLSLIB## - / ,AUTOLINK=*ALTERNATE-LIBRARIES) - / ,ERROR-PROCESSING=(UNRESOLVED-EXTRNS=*DELAY)) *) oder LOAD-EXECUTABLE-PROGRAM Die Parameter UNRESOLVED-EXTRNS=*DELAY und LOAD-INFORMATION=*REFERENCES sind Pflicht für den Start von UTM-Anwendungen. Über AUTOLINK=*ALTERNATE-LIBRARIES wird eingestellt, dass für die Autolink-Funktion nur die alternativen Bibliotheken herangezogen werden und über ALT-LIB=*BLSLIB## wird eingestellt, dass als alternative Bibliotheken nur die mit Linknamen BLSLIBnn verwendet werden. |
5 | Alle Lademodule, die mit LOAD-MODE=POOL und mit einem Common Memory Pool mit SCOPE=GLOBAL generiert wurden, werden in der Reihenfolge der MPOOL-Anweisungen geladen. Danach werden alle Lademodule geladen, die mit LOAD-MODULE=POOL und mit einem Common Memory Pool mit SCOPE=GROUP generiert wurden. Innerhalb eines Pools werden die Lademodule in der Reihenfolge der LOAD-MODULE-Anweisungen zu diesem Pool geladen. Beim Laden werden Externverweise nur aus dem Systemspeicher und aus dem eigenen Memory Pool befriedigt; beim Laden von Shared Code wird die Autolink-Funktion unterdrückt. |
6 | Die Lademodule, die mit LOAD-MODE=STARTUP generiert wurden, werden beim Start des Anwendungsprogramms dynamisch nachgeladen. Die Reihenfolge der LOAD-MODULE-Anweisungen bei der UTM-Generierung bestimmt auch hier die Reihenfolge beim Laden. |
Offene Externverweise können aus dem Systemspeicher, aus den Common Memory Pools und den bis dahin bereits geladenen Modulen befriedigt werden. Externverweise auf die Laufzeitsysteme können durch Nachladen von Modulen der Laufzeitsysteme befriedigt werden (Angabe von ALTERNATE-LIBRARIES=YES in der LOAD-MODULE-Anweisung). | |
7 | Lademodule, die mit LOAD-MODE=ONCALL generiert wurden, werden beim erstmaligen Aufruf eines zugeordneten Teilprogramms geladen. Offene Externverweise werden wie bei den mit LOAD-MODE=STARTUP generierten Lademodulen (siehe 6) aufgelöst. |