Das C-Quellprogramm steht in der katalogisierten Datei HALLO. Mit dem Compiler wird ein LLM erzeugt und in die Bibliothek PLAM.TEST geschrieben. Anschließend wird das Modul auf unterschiedliche Arten gebunden:
Variante 1: mit der BIND-Anweisung des Compilers
Variante 2: mit dem BINDER
Variante 3: mit dem DBL
Quellprogramm-Datei HALLO
#include <stdio.h> int main(void) { printf("Hallo, ich bin ein C-Programm\n"); return 0; }
Das Quellprogramm wurde mit dem EDT erstellt und in eine Datei namens HALLO abgespeichert.
Ablaufprotokoll zum Übersetzen, Binden und Starten
(IN) bedeutet Benutzereingaben (OUT) bedeutet System/Programm-Meldungen (IN) /START-CPLUS-COMPILER —————————————————————————————————————————— (1) (OUT) % BLS0523 ELEMENT ’SDFCC’, VERSION ’04.0B02’, TYPE ’L’ FROM LIBRARY ’:P401:$TSOS.SYSLNK.CPP.040’ IN PROCESS (OUT) % BLS0524 LLM ’SDFCC’, VERSION ’04.0B02’ OF ’2023-04-02 13:40:11’ LOADED (OUT) % BLS0551 COPYRIGHT (C) 2023 Fujitsu Technology Solutions GmbH. ALL RIGHTS RESERVED (OUT) % CDR9992 : BEGIN C/C++ VERSION 04.0B02 (IN) //MODIFY-SOURCE-PROP LANGUAGE=*C ——————————————————————————————— (2) (IN) //COMPILE SOURCE=HALLO,MODULE-OUTPUT=*LIB-ELEM(LIB=PLAM.TEST) —— (3) (OUT) % CDR9907 : NOTES: 0 WARNINGS: 0 ERRORS: 0 FATALS: 0 (OUT) % CDR9937 : MODULES GENERATED, CPU TIME USED = 0.0030 SEC
Variante 1: Binden mit der BIND-Anweisung
(IN) //MOD-BIND-PROP INCLUDE=*LIB(LIB=PLAM.TEST,ELEM=HALLO),- //RUNTIME-LANG=*C,STDLIB=*STATIC ——————————————————————————————— (4) (IN) //BIND OUTPUT=*LIB(LIB=PLAM.TEST1,ELEM=HALLO) —————————————————— (5) (OUT) % BND3102 SOME WEAK EXTERNS UNRESOLVED (OUT) % BND1501 LLM FORMAT: '1' (OUT) % BND1101 BINDER NORMALLY TERMINATED. SEVERITY CLASS: 'UNRESOLVED EXTERNAL' (IN) //END ——————————————————————————————————————————————————————————— (6) (OUT) % CDR9936 END; SUMMARY: NOTES: 0 WARNINGS: 0 ERRORS: 0 FATALS: 0 (OUT) % CCM0998 CPU TIME USED: 1.9967 SECONDS
Variante 2: Binden mit dem BINDER
(IN) /START-BINDER —————————————————————————————————————————————————— (7) (OUT) % BND0500 BINDER VERSION 'V02.7A12' STARTED (IN) //START-LLM-CREATION INT-NAME=XY (IN) //INCLUDE-MODULES *LIB(LIB=PLAM.TEST,ELEM=HALLO) (IN) //RESOLVE-BY-AUTOLINK LIB=$.SYSLNK.CRTE (IN) //SAVE-LLM LIB=PLAM.TEST1,ELEM=HALLO,MAP=*NO (OUT) % BND3102 SOME WEAK EXTERNS UNRESOLVED (OUT) % BND1501 LLM FORMAT: '1' (IN) //END (OUT) % BND1101 BINDER NORMALLY TERMINATED. SEVERITY CLASS: 'UNRESOLVED EXTERNAL'
Variante 3: Binden, Laden und Starten mit dem DBL
(IN) /ADD-FILE-LINK LINK-NAME=BLSLIB01,FILE-NAME=$.SYSLNK.CRTE —————— (8) (IN) /START-EXECUTABLE-PROGRAM FROM-FILE=*LIB-ELEM(LIBRARY=PLAM.TEST,- /ELEMENT-OR-SYMBOL=HALLO),DBL-PARAMETERS=*PARAM(- /RESOLUTION=*PARAM(ALTERNATE-LIBRARIES=*BLSLIB##)) (OUT) % BLS0524 LLM 'HALLO', VERSION ' ' OF '2020-04-02 13:33:56' LOADED (OUT) Hallo, ich bin ein C-Programm (OUT) % CCM0998 CPU TIME USED: 0.0021 SECONDS
Starten des nach Variante 1 oder 2 gebundenen Programms
(IN) /START-EXECUTABLE-PROGRAM FROM-FILE=*LIB-ELEM(LIBRARY=PLAM.TEST1,- /ELEMENT-OR-SYMBOL=HALLO) —————————————————————————————————————— (9) (OUT) % BLS0524 LLM 'XY', VERSION ' ' OF '2020-04-02 13:33:50' LOADED (OUT) Hallo, ich bin ein C-Programm (OUT) % CCM0998 CPU TIME USED: 0.0028 SECONDS
(1) | Der Compilerlauf wird gestartet. |
(2) | Mit der MODIFY-SOURCE-PROPERTIES-Anweisung wird der Sprachmodus C eingeschaltet (voreingestellt ist der Sprachmodus C++). |
(3) | Mit der COMPILE-Anweisung wird der Übersetzungslauf gestartet. Mit der SOURCE-Option wird der Name des zu übersetzenden Quellprogramms angegeben. Mit der MODULE-OUTPUT-Option wird als Ausgabeziel eine PLAM-Bibliothek angegeben. Der Name des zu erzeugenden Moduls wird aus dem Namen des Quellprogramms abgeleitet (HALLO). |
(4) | Mit der MODIFY-BIND-PROPERTIES-Anweisung werden die einzubindenden Module und weitere Bedingungen für den anschließenden Bindelauf mit der BIND-Anweisung des Compilers festgelegt. Mit der INCLUDE-Option (entspricht der BINDER-Anweisung INCLUDE-MODULES) wird das zuvor erzeugte LLM HALLO in der Bibliothek PLAM.TEST angegeben. Mit der RUNTIME-LANGUAGE-Option wird angegeben, dass es sich bei dem zu bindenden Programm um ein C-Programm handelt (C++ ist voreingestellt). Auf Grund dieser Option werden die für C-Programme zusätzlich benötigten Module des C-Laufzeitsystems automatisch (per Autolink) eingebunden. Die Angabe *STATIC in der STDLIB-Option bewirkt, dass das C-Laufzeitsystem nicht aus der Bibliothek $.SYSLNK.CRTE.PARTIAL-BIND (Voreinstellung), sondern aus der Bibliothek $.SYSLNK.CRTE eingebunden wird. |
(5) | Mit der BIND-Anweisung wird der Bindelauf gestartet. Mit der OUTPUT-Option (entspricht der BINDER-Anweisung SAVE-LLM) wird das fertig gebundene LLM unter dem Namen HALLO als Element vom Typ L in der PLAM-Bibliothek PLAM.TEST1 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 C beteiligt, die anderen Verweise bleiben offen. |
(6) | Mit der END-Anweisung wird der Compilerlauf beendet. |
(7) | Das bei der Übersetzung erzeugte Modul HALLO in der PLAM-Bibliothek PLAM.TEST wird mit dem BINDER gebunden. |
(8) | Das bei der Übersetzung erzeugte Modul HALLO in der PLAM-Bibliothek PLAM.TEST wird mit dem DBL dynamisch gebunden, geladen und gestartet. |
(9) | Das mit der BIND-Anweisung des Compilers (siehe Variante 1) bzw. mit dem BINDER (siehe Variante 2) fertig gebundene Programm HALLO in der Bibliothek PLAM.TEST1 wird geladen und gestartet. Die beim dynamischen Binden mit dem DBL notwendige Angabe ALT-LIB=*BLSLIB## (siehe Variante 3) ist in diesem Fall nicht notwendig. |