Ausführende und modifizierende Compiler-Anweisungen
Der Compilerlauf wird mit dem Kommando START-CPLUS-COMPILER gestartet und mit der Anweisung END beendet. Während eines Compilerlaufs können mehrere Übersetzungs- bzw. Bindeläufe mit den entsprechenden ausführenden Anweisungen (siehe "Anweisungsübersicht") gestartet werden. Zur Steuerung der Übersetzungs- und Bindeläufe stehen MODIFY-Anweisungen zur Verfügung, die den ausführenden Anweisungen immer vorausgehen müssen. Die MODIFY-Anweisungen behalten ihre Gültigkeit über die abgearbeiteten ausführenden Anweisungen hinweg. Siehe auch Beispiel.
Operandenwert *UNCHANGED und Standardeinstellungen des Compilers
Beim Arbeiten mit dem Compiler im geführten Dialog wird in den SDF-Anweisungsmenüs des Compilers für viele Operanden der Operandenwert *UNCHANGED angezeigt.
Der Wert *UNCHANGED ist der SDF-Defaultwert, der in der aktuellen Compiler-Anweisung immer dann eingesetzt (und am Bildschirm angezeigt) wird, wenn zu einem Operanden keine Angabe gemacht wird.
*UNCHANGED bedeutet, dass für den Operanden jeweils der Operandenwert gilt, der mit einer vorhergehenden Compiler-Anweisung vereinbart wurde. Wenn zu einem Operanden im gesamten Compilerlauf noch keine Angabe gemacht wurde, wie z.B. auch unmittelbar nach Start des Compilers, wird für *UNCHANGED der Standardwert des Compilers eingesetzt. Dieser Standardwert gilt solange, bis mit einer Compiler-Anweisung ein anderer Operandenwert angegeben wird. Der Standardwert des Compilers ist in den Anweisungsbeschreibungen durch Unterstreichung gekennzeichnet. Für manche Operanden ist der Standardwert von dem eingestellten Sprachmodus abhängig. In diesem Fall ist kein Wert unterstrichen.
Mit der Anweisung SHOW-PROPERTIES kann man sich über die aktuell gültigen Operandenwerte der Compiler-Anweisungen informieren. Statt *UNCHANGED wird dann der tatsächlich dafür eingesetzte Operandenwert ausgegeben.Alias-Namen
Die meisten Compiler-Anweisungen haben Alias-Namen, die alternativ zu den im geführten Dialog angebotenen Namen verwendet werden können. Diese Alias-Namen sind bei den Anweisungsbeschreibungen jeweils zu Beginn aufgeführt.
Spin-Off-Mechanismus
Eine nicht gelungene ausführende Anweisung löst den Spin-Off aus. In diesem Fall werden alle Anweisungen bis zum nächsten STEP ignoriert.
Input- / Output - Library - Elemente
Die Versionsangabe VERSION=@ wird abgelehnt, da dies kein gültiger Wert für die LMS-Version ist.
Beispiel
/START-CPLUS-COMPILER //MODIFY-SOURCE-PROPERTIES DEFINE=_OSD_POSIX —————————————————————————— (1) //MODIFY-LISTING-PROPERTIES SOURCE=*YES ——————————————————————————————— (2) //MODIFY-INCLUDE-LIBRARIES STD-INCLUDE-LIBRARY= (*STANDARD-LIBRARY, $.SYSLIB.POSIX-HEADER) —————————————————————————— (3) //COMPILE SOURCE=HALLO1.CC ———————————————————————————————————————————— (4) //MODIFY-SOURCE-PROPERTIES LANG=*C ———————————————————————————————————— (5) //COMPILE SOURCE=HALLO2.C ————————————————————————————————————————————— (6) //END /
In der MODIFY-SOURCE-PROPERTIES-Anweisung (1) wird lediglich ein Define gesetzt, für die übrigen Operanden gelten die Standardeinstellungen des Compilers, z.B. der neueste C++-Sprachmodus LANGUAGE=*CPLUSPLUS(MODE=*LATEST, STRICT=*NO).
Bei der ersten Übersetzung (4) werden die vorangehenden MODIFY-Anweisungen ausgewertet und infolgedessen folgende Aktionen durchgeführt:
Setzen des Defines _OSD_POSIX (1)
Durchsuchen der Include-Bibliotheken $.SYSLIB.CRTE, $.SYSLIB.CRTE.CXX01 und $.SYSLIB.POSIX-HEADER (3)
Übersetzen des Quellprogramms HALLO1.CC (4) im C++ 2020-Sprachmodus (1) und Ausgabe einer Quellprogramm-/Fehlerliste auf SYSLST (2)
Vor der zweiten Übersetzung (6) wird in einer MODIFY-SOURCE-PROPERTIES-Anweisung (5) der C-Sprachmodus eingestellt. Da dieser nicht genauer angegeben wurde, gelten für die Unteroperanden die Standardeinstellungen der Compilers, also *C(MODE=*LATEST, STRICT=*NO). Bis auf diese Änderung sind für die Übersetzung des C-Quellprogramms HALLO2.C alle anderen Angaben der vorangehenden MODIFY-Anweisungen gültig, d.h. es werden die folgenden Aktionen durchgeführt.:
Setzen des Defines _OSD_POSIX (1)
Durchsuchen der Include-Bibliotheken $.SYSLIB.CRTE und $.SYSLIB.POSIX-HEADER (3)
- Übersetzen des Quellprogramms HALLO2.C (6) im erweiterten C11-Sprachmodus (5) und Ausgabe einer Quellprogramm-/Fehlerliste auf SYSLST (2)
Die Angabe von *STANDARD-LIBRARY in (3) wird bei den beiden Übersetzungen unterschiedlich aufgelöst. Die Menge der durchsuchten Bibliotheken ist hier vom Sprachmodus abhängig. Die Abbildung von *STANDARD-LIBRARY auf die Liste der Bibliotheken wird bei der Übersetzung (4,6) gemacht, nicht bei der Anweisung MODIFY-INCLUDE-LIBRARIES (3).