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