Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Dynamisches Nachladen des C-/COBOL-Laufzeitsystems und der internen Routinen (Bindetechnik Partial-Bind)

&pagelevel(4)&pagelevel

Die Bindetechnik Partial-Bind bietet die Möglichkeit, beim Binden mit dem BINDER an Stelle des kompletten C-, C++- oder COBOL-Laufzeitsystems und der internen Routinen nur Verbindungsmodule einzubinden, die alle offenen Externbezüge auf die vorladbaren Bestandteile des CRTE befriedigen. Die benötigten Module selbst werden dann, sofern sie nicht vorgeladen sind, erst zum Ablaufzeitpunkt dynamisch nachgeladen.

Es gibt zwei Varianten der Bindetechnik Partial-Bind:

  • Standard Partial-Bind

  • Complete Partial-Bind

Wegen der erheblichen Einsparung von Plattenspeicherplatz empfiehlt es sich, für das Binden folgender Programme generell die Bindetechnik Partial-Bind zu verwenden:

  • C-Programme

  • COBOL-Programme

  • Programme in anderen Sprachen, die C- oder COBOL-Programmteile enthalten bzw. die gemeinsamen internen Routinen verwenden.

In jedem Fall muss das CRTE im Ablaufsystem installiert sein.

  • Bei Programmaufruf muss das passende CRTE verfügbar sein.

  • Wenn Sie unter POSIX Shared Libraries einsetzen, ist erfolgreiches Binden nur mit Complete Partial-Bind gewährleistet.

Standard Partial-Bind

Beim Binden mit Standard Partial-Bind verwenden Sie anstelle der Bibliothek SYSLNK.CRTE die Bibliothek SYSLNK.CRTE.PARTIAL-BIND (siehe Abschnitt "Bibliotheken für die Bindetechnik Partial-Bind auf /390-Systemen“).

Beim Standard Partial-Bind befriedigen die in SYSLNK.CRTE.PARTIAL-BIND bereitgestellten, nachladenden Verbindungsmodule alle offenen Externbezüge des zu bindenden Bindemoduls. Andere Externbezüge werden nicht berücksichtigt.

Benötigt ein nachgeladener Modul Entries des Laufzeitsystems, die vom nachladenden Modul nicht benötigt werden und somit nicht eingebunden worden sind, so kommt es zu unbefriedigten Externbezügen. Verwenden Sie in solchen Fällen bitte die Bindetechnik Complete Partial-Bind (siehe "Complete Partial-Bind“).

Für das Binden von C++-Programmen werden je nach Modus (C-Front oder ANSI) weitere Bibliotheken benötigt (siehe Abschnitt "Cfront-C++-Bibliotheksfunktionen und -Laufzeitsystem“ und Abschnitt "ANSI-C++-Bibliotheken und -Laufzeitsysteme“).

Complete Partial-Bind

Beim Binden mit Complete Partial-Bind verwenden Sie anstelle der Bibliothek SYSLNK.CRTE die Bibliothek SYSLNK.CRTE.COMPL (siehe Abschnitt  "Bibliotheken für die Bindetechnik Partial-Bind auf /390-Systemen“).

Beim Complete Partial-Bind enthalten die in SYSLNK.CRTE.COMPL bereitgestellten, nachladenden Verbindungsmodule alle Entries und externen Daten des kompletten C- oder COBOL-Laufzeitsystems. Damit sind unbefriedigte Externbezüge, wie sie beim Standard Partial-Bind auftreten können, beim Complete Partial-Bind ausgeschlossen.

Complete Partial-Bind bei C-, COBOL- und gemischten C-/COBOL-Programmen

Die Laufzeitsysteme von C und COBOL werden jeweils entweder komplett oder gar nicht eingebunden. Dies bedeutet:

  • Wenn Ihr Anwenderprogramm mindestens einen C-Entry benötigt, werden beim Complete Partial-Bind alle Externbezüge auf das gesamte C-Laufzeitsystem befriedigt.

  • Wenn Ihr COBOL-Programm mindestens einen COBOL-Entry benötigt, werden beim Complete Partial-Bind alle Externbezüge auf das gesamte COBOL-Laufzeitsystem befriedigt.

  • Bei reinen C-Programmen werden keine COBOL-Entries eingebunden.

  • Da alle Entries und alle externen Variablen eingebunden werden, können diese mit gleichnamigen Entries oder externen Variablen im Anwenderprogramm in Konflikt kommen (duplicate entries). Auch Redefinitionen von Funktionen des Laufzeitsystems durch gleichnamige Funktionen im Anwenderprogramm sind nicht mehr möglich. Die vom Laufzeitsystem belegten Namen können mit der LMS-Anweisung

    //SHOW-ELEMENT (SYSLNK.CRTE.COMPL,*,L),LLM-INF=PAR(INF=ESVD)

    angezeigt werden.

Bei COBOL- und gemischten C-/COBOL-Programmen darf die Bindetechnik Complete Partial-Bind nur eingesetzt werden, wenn die Objekte unter POSIX ablaufen und Shared Objects geladen werden.

Complete Partial-Bind bei C++-Programmen

Für das Binden von C++-Programmen (ANSI) wird zusätzlich die Bibliothek SYSLNK.CRTE.CPP-COMPL benötigt.

Für C++-Programme im Cfront-Modus wird die Bindetechnik Complete Partial-Bind nicht unterstützt.

Besonderheiten beim Complete Partial-Bind

Beim Binden mit SYSLNK.CRTE.COMPL ist zu beachten:

  • Die Funktion _edt wird nicht unterstützt.

  • Die POSIX- und TIME-Bindeschalter sind nicht enthalten. Beim cc-Kommando unter POSIX werden sie automatisch eingebunden.

  • Bei der Erweiterung der C/C++-Laufzeitsysteme um neue Funktionen in den COMPL-Bibliotheken ist keine Aufwärtskompatibilität garantiert. Wenn die Anwendung mit der Bindetechnik Complete Partial-Bind gebunden wird, kann jeder neue Entry potentiell mit einem bereits in der Anwendung vorhandenen gleichnamigen Entry in Konflikt geraten.

Verwendete Subsysteme

Für beide Partial-Bind-Varianten werden folgende Subsysteme verwendet:

  • CRTEPART (für C)

  • COBPART (für COBOL)

  • CRTESIS (für gemeinsame Routinen)

Aus Gründen der Performance und um die Vorteile der Bindetechnik Partial-Bind in vollem Umfang nutzen zu können, sollten die genannten Subsysteme vorgeladen sein.