Mit dem dynamischen Bindelader DBL können in einem Arbeitsgang Module temporär zu einer ladbaren Einheit gebunden, dann in den Speicher geladen und gestartet werden. Die erzeugte Ladeeinheit wird automatisch nach Programmablauf gelöscht.
Die Arbeitsweise des DBL ist im Handbuch „Bindelader-Starter“ [13] ausführlich beschrieben.
Da die mit dem C/C++-Compiler erzeugten Module ausschließlich im LLM-Format vorliegen, muss beim Binden und Laden mit dem DBL generell das Kommando START-EXECUTABLE-PROGRAM verwendet werden.
Mit diesem Kommando können Objektmodule und LLMs verarbeitet werden. Alternativ zu durchsuchende Bibliotheken (Laufzeitbibliotheken und ggf. weitere) werden mit dem Linknamen BLSLIBnn (00 <= nn <= 99) zugewiesen. Dies geschieht vor Aufruf des DBL mit dem ADD-FILE-LINK-Kommando, z.B.:
/ADD-FILE-LINK LINK-NAME=BLSLIB01,FILE-NAME=PLAM.USER |
Damit der DBL alternative Bibliotheken durchsucht, ist im RESOLUTION-Parameter des START-EXECUTABLE-PROGRAM-Kommandos folgende Angabe erforderlich:
..ALTERNATE-LIBRARIES=*BLSLIB##
Der Bindelauf mit dem DBL wird mit dem START-EXECUTABLE-PROGRAM- oder LOAD-EXECUTABLE-PROGRAM-Kommando gestartet.
Nach dem START-EXECUTABLE-PROGRAM-Kommando wird das Programm sofort ausgeführt. Nach dem LOAD-EXECUTABLE-PROGRAM-Kommando besteht die Möglichkeit, weitere Kommandos (z.B. Testhilfe-Kommandos) einzugeben.
|
LIBRARY=bibliothek, ELEMENT-OR-SYMBOL=mainmod
Der DBL greift auf die angegebene PLAM-Bibliothek zu. Als Elementname ist der Name des Moduls anzugeben, das die main
-Funktion enthält.
RESOLUTION=*PARAMETERS (ALTERNATE-LIBRARIES=*BLSLIB##)
Diese Angabe ist immer erforderlich, wenn LLMs dynamisch gebunden werden sollen.
Lade- und Start-Funktion des DBL
Ein mit dem BINDER fertig gebundenes LLM (d.h. alle Externverweise sind befriedigt), wird mit dem DBL ohne Zuweisung alternativer Bibliotheken geladen und gestartet:
START-EXECUTABLE-
PROGRAM FROM-FILE=*LIBRARY-ELEMENT(*LIBRARY=
bibliothek ,
ELEMENT-OR-SYMBOL=
modul )
Empfohlene BLSLIBnn-Reihenfolge für das Zuweisen der CRTE-Bibliotheken
C-Programme
/ADD-FILE-LINK LINK-NAME=BLSLIB01,FILE-NAME=
benutzerbibliothek/ADD-FILE-LINK LINK-NAME=BLSLIB02,FILE-NAME=$.SYSLNK.CRTE
Cfront-C++-Programme
/ADD-FILE-LINK LINK-NAME=BLSLIB01,FILE-NAME=
benutzerbibliothek/ADD-FILE-LINK LINK-NAME=BLSLIB02,FILE-NAME=$.SYSLNK.CRTE.CFCPP
/ADD-FILE-LINK LINK-NAME=BLSLIB03,FILE-NAME=$.SYSLNK.CRTE.CPP
/ADD-FILE-LINK LINK-NAME=BLSLIB04,FILE-NAME=$.SYSLNK.CRTE
C++ V3-Programme (mit Nutzung der Bibliothek Tools.h++)
/ADD-FILE-LINK LINK-NAME=BLSLIB01,FILE-NAME=
benutzerbibliothek/ADD-FILE-LINK LINK-NAME=BLSLIB02,FILE-NAME=$.SYSLNK.CRTE.TOOLS
/ADD-FILE-LINK LINK-NAME=BLSLIB03,FILE-NAME=$.SYSLNK.CRTE.STDCPP
/ADD-FILE-LINK LINK-NAME=BLSLIB04,FILE-NAME=$.SYSLNK.CRTE.RTSCPP
/ADD-FILE-LINK LINK-NAME=BLSLIB05,FILE-NAME=$.SYSLNK.CRTE
C++ 2017- oder C++ 2020-Programme mit Bibliotheks-Version 1
/ADD-FILE-LINK LINK-NAME=BLSLIB01,FILE-NAME=
benutzerbibliothek/ADD-FILE-LINK LINK-NAME=BLSLIB02,FILE-NAME=$.SYSLNK.CRTE.CXX01
/ADD-FILE-LINK LINK-NAME=BLSLIB03,FILE-NAME=$.SYSLNK.CRTEC++ 2017- oder C++ 2020-Programme mit Bibliotheks-Version 2
/ADD-FILE-LINK LINK-NAME=BLSLIB01,FILE-NAME=
benutzerbibliothek/ADD-FILE-LINK LINK-NAME=BLSLIB02,FILE-NAME=$.SYSLNK.CRTE.CXX02
/ADD-FILE-LINK LINK-NAME=BLSLIB03,FILE-NAME=$.SYSLNK.CRTE
Achtung!