Mit dem BINDER können Objektmodule und Bindelademodule (LLMs) zu einem LLM gebunden und als Element vom Typ L in einer PLAM-Bibliothek abgespeichert werden. Der BINDER ist ausführlich im Handbuch „BINDER“ [22] beschrieben.
Wichtiger Hinweis:
LLMs mit eingebundenem Laufzeitsystem sollten nicht in Bibliotheken abgelegt werden,
- aus denen auch nicht vorgebundene LLMs direkt geladen werden sollen oder
- die zur Auflösung von Externverweisen mittels AUTOLINK durch den BINDER herangezogen werden.
Beispiel 6-2
Erzeugen eines LLM aus Objektmodulen
/START-BINDER ———————————————————————————————————————————————————————— (1) % BND0500 ... //START-LLM-CREATION INT-NAME=PROG, COPYRIGHT = *NONE ———————————————— (2) //INCLUDE-MODULES LIB=*OMF,ELEM=MAIN ————————————————————————————————— (3) //INCLUDE-MODULES LIB=PLAM.BSP,ELEM=SUB —————————————————————————————— (4) //RESOLVE-BY-AUTOLINK LIB=$.SYSLNK.CRTE —————————————————————————————— (5) //SAVE-LLM LIB=PLAM.BSP,ELEM=TESTPROG ———————————————————————————————— (6) % BND3101 SOME EXTERNAL REFERENCES UNRESOLVED % BND3102 SOME WEAK EXTERNS UNRESOLVED % BND1501 LLM FORMAT : '1 //END ———————————————————————————————————————————————————————————————— (7) % BND1101 BINDER NORMALLY TERMINATED. SEVERITY CLASS: 'UNRESOLVED EXTERNAL' /START-PROG *MOD(LIB=PLAM.BSP,ELEM=TESTPROG,RUN-MOD=ADVANCED) ———————— (8) % BLS0523 ELEMENT 'TESTPROG', VERSION '@' FROM LIBRARY 'PLAM.BSP' IN PROCESS % BLS0524 LLM 'TESTPROG', VERSION ' ' OF '2006-10-26:14:51:46' LOADED
(1) | Der BINDER wird aufgerufen. |
(2) | Die Anweisung START-LLM-CREATION erzeugt einen neuen LLM im Arbeitsbereich mit dem internen Namen PROG. Der erzeugte LLM wird später mit der Anweisung SAVE-LLM (siehe 6) als Element vom Typ L in einer PLAM-Bibliothek gespeichert. |
(3) | Mit dieser INCLUDE-MODULES-Anweisung wird der Name des Moduls angegeben, der das Hauptprogramm enthält (MAIN). Das Modul steht in der temporären EAM-Datei (*OMF). |
(4) | Mit dieser INCLUDE-MODULES-Anweisung wird der Name des Moduls angegeben, der das Unterprogramm enthält (SUB). Das Modul steht in der PLAM-Bibliothek PLAM.BSP. |
(5) | Mit der Anweisung RESOLVE-BY-AUTOLINK wird der Name der Laufzeitbibliothek angegeben, aus der Externverweise befriedigt werden sollen. |
(6) | Mit der Anweisung SAVE-LLM wird der erzeugte LLM unter dem Namen TESTPROG als Element vom Typ L in der PLAM-Bibliothek PLAM.BSP abgespeichert. Die BINDER-Meldung „SOME WEAK EXTERNS UNRESOLVED“ bezieht sich auf das ILCS-Modul IT0INITS. Dieses Modul enthält WEAK-EXTERN-Verweise auf alle potenziell für ILCS vorgesehenen Sprachen. Im Beispiel ist nur die Sprache COBOL2000 beteiligt, die anderen Verweise bleiben offen. |
(7) | Mit der END-Anweisung wird der Bindelauf beendet. |
(8) | Der LLM wird geladen und gestartet. |
Bei den Anweisungen INCLUDE-MODULES und RESOLVE-BY-AUTOLINK kann an Stelle des Bibliotheksnamens (LIB=bibliothek) auch LIB=*BLS-LINK angegeben werden. In diesem Fall müssen die zu durchsuchenden Bibliotheken mit dem Linknamen BLSLIBnn (00 ≤ nn ≤ 99) zugewiesen werden. Dies geschieht vor Aufruf des BINDERS mit dem ADD-FILE-LINK-Kommando, z.B.:
/ADD-FILE-LINK LINK-NAME=BLSLIB01,FILE-NAME=$.SYSLNK.CRTE
Ein mit dem BINDER erzeugter LLM kann - sofern alle Externverweise befriedigt sind - mit dem DBL ohne Zuweisung alternativer Bibliotheken geladen und gestartet werden:
START-PROGRAM *MODULE(LIB=bibliothek,ELEM=modul,RUN-MODE=ADVANCED)
Bei Generierung des LLM-Formats wird eine CSECT mit Namen programm-name&#
mit folgenden Entries erzeugt:
| für den Unterprogramm-Einsprung |
| für den Hauptprogramm-Beginn |
| für den Service-Entry |
Bei Generierung von shared-code kommt noch die Code CSECT programm-name&@
dazu.