Das C++-Quellprogramm besteht aus zwei PLAM-Bibliothekselementen PROG1 und PROG2. Vom Compiler werden LLMs erzeugt und in die PLAM-Bibliothek SYS.PROG.LIB geschrieben. Die Module werden anschließend mit der BIND-Anweisung des Compilers gebunden.
Quellprogramm-Element PROG1
#include <iostream.h> extern void ruf(void); int main(void) { cout << "main(prog1)" << '\n'; ruf(); return 0; }
Quellprogramm-Element PROG2
#include <iostream.h> void ruf(void) { cout << "ruf(prog2)" << '\n'; }
Die oben gezeigten Quellprogrammteile wurden mit dem EDT erstellt und jeweils mit einer WRITE-Anweisung in die PLAM-Bibliothek PLAM.BSP abgespeichert:
WRITE L=PLAM.BSP(E=elemname).
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) //MOD-SOURCE-PROP LANGUAGE=*CPLUS(V3-COMPATIBLE) ——————————————— (2) (IN) //MOD-BIND-PROP RUNTIME-LANGUAGE=*CPLUS(*V3-COMPATIBLE) ———————— (2) (IN) //COMPILE SOURCE=(*LIB(LIB=PLAM.BSP,ELEM=PROG1),- //*LIB(LIB=PLAM.BSP,ELEM=PROG2)) ——————————————————————————————— (3) (OUT) % CDR9907 : NOTES: 0 WARNINGS: 0 ERRORS: 0 FATALS: 0 (OUT) % CDR9937 : MODULES GENERATED, CPU TIME USED = 0.0030 SEC (OUT) % CDR9907 : NOTES: 0 WARNINGS: 0 ERRORS: 0 FATALS: 0 (OUT) % CDR9937 : MODULES GENERATED, CPU TIME USED = 0.0020 SEC (IN) //MOD-BIND-PROP INCLUDE=(*LIB(LIB=SYS.PROG.LIB,ELEM=PROG1),- //*LIB(LIB=SYS.PROG.LIB,ELEM=PROG2)) ——————————————————————————— (4) (IN) //BIND OUTPUT=*LIB(LIB=PLAM.BSP1,ELEM=PROG) ———————————————————— (5) (OUT) % BND1501 LLM FORMAT: ’4’ (OUT) % BND3102 SOME WEAK EXTERNS UNRESOLVED (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 (IN) /START-EXECUTABLE-PROG *L(LIB=PLAM.BSP1,E-O-S=PROG) ———————————— (7) (OUT) % BLS0523 ELEMENT 'PROG', VERSION '@', TYPE 'L' FROM LIBRARY ':2OS2:$USERIDXY.PLAM.BSP1' IN PROCESS (OUT) % BLS0524 LLM '$LIB-ELEM$PLAM$BSP1$$PROG$$$UPPE', VERSION ' ' OF '2020-04-02 14:22:01' LOADED (OUT) main(prog1) (OUT) ruf(prog2) (OUT) % CCM0998 CPU TIME USED: 0.0018 SECONDS
(1) | Der Compilerlauf wird gestartet. |
(2) | Der Sprachmodus wird festgelegt, sowohl für die Übersetzung als auch für das Binden. |
(3) | Mit der COMPILE-Anweisung werden die Übersetzungsläufe für die C++-Quellprogramm-Elemente PROG1 und PROG2 gestartet. In der SOURCE-Option werden in einer Liste jeweils der Name der PLAM-Bibliothek und des zu übersetzenden Bibliothekselements angegeben. Der Compiler schreibt standardmäßig die erzeugten LLMs in die Bibliothek SYS.PROG.LIB. Die Namen der LLMs werden aus den Namen der Quellprogramm-Elemente gebildet (PROG1, PROG2). |
(4) | Mit der MODIFY-BIND-PROPERTIES-Anweisung werden die Module angegeben, die im nachfolgenden Bindelauf eingebunden werden sollen. Mit der INCLUDE-Option (entspricht der BINDER-Anweisung INCLUDE-MODULES) wird der Name des LLM angegeben, das die |
(5) | Mit der BIND-Anweisung wird der Bindelauf gestartet. Mit der OUTPUT-Option (entspricht der BINDER-Anweisung SAVE-LLM) wird das erzeugte LLM unter dem Namen PROG als Element vom Typ L in einer PLAM-Bibliothek 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 sind nur die Sprachen C und C++ beteiligt, die anderen Verweise bleiben offen. Zu dem vom BINDER generierten LLM-Format (in diesem Beispiel Format 4) beachten Sie bitte die OUTPUT-FORMAT-Option in der BIND-Anweisung ("BIND"). |
(6) | Mit der END-Anweisung wird der Compilerlauf beendet. |
(7) | Mit dem START-EXECUTABLE-PROGRAM-Kommando wird das fertig gebundene Programm geladen und gestartet. |