Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Dynamisch Binden und Laden mit dem DBL

&pagelevel(4)&pagelevel

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
/ADD-FILE-LINK LINK-NAME=BLSLIB02,FILE-NAME=$.SYSLNK.CRTE

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.

 /{START-EXECUTABLE-PROGRAM / LOAD-EXECUTABLE-PROGRAM}
        FROM-FILE=*LIBRARY-ELEMENT(LIBRARY=bibliothek,ELEMENT-OR-SYMBOL=mainmod),
        DBL-PARAMETERS=*PARAMETERS(RESOLUTION=*PARAMETERS(ALTERNATE-LIBRARIES=*BLSLIB##))

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

  1. C-Programme

    /ADD-FILE-LINK LINK-NAME=BLSLIB01,FILE-NAME= benutzerbibliothek
    /ADD-FILE-LINK LINK-NAME=BLSLIB02,FILE-NAME=$.SYSLNK.CRTE

  2. 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

  3. 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

  4. 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.CRTE

  5. C++ 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!

Beim Binden und Laden von C++ V3, C++ 2017 bzw. C++ 2020-Programmen mit dem DBL findet keine Instanziierung von Templates statt. Alle Instanzen müssen falls erforderlich mittels der Anweisung BIND ACTION=*PRELINK vorinstanziiert werden.