Diese Option legt fest, nach welchem Übersetzungsschritt der Compilerlauf beendet werden soll und - falls ein Modul erzeugt wird - welches Format und welche Eigenschaften das Modul erhalten soll.
Format
|
COMPILER-ACTION = *PRINT-MESSAGE-LIST
Der Compiler gibt eine Liste aller möglichen Fehlermeldungen aus. Eine Übersetzung findet nicht statt.
Dieser Operand ist in COBOL-BC nicht verfügbar.
COMPILER-ACTION = *SYNTAX-CHECK
Der Compiler prüft die Übersetzungseinheiten nur auf syntaktische Fehler.
COMPILER-ACTION = *SEMANTIC-CHECK
Der Compiler prüft die Syntax der Übersetzungseinheiten und zusätzlich die Einhaltung der semantischen Regeln. Da kein Modul erzeugt wird, können nur die Übersetzungseinheitliste und die Fehlerliste angefordert werden.
COMPILER-ACTION = *MODULE-GENERATION(...)
Es werden ein vollständiger Übersetzungslauf durchgeführt und - falls nicht explizit unterdrückt - Module erzeugt.
SHAREABLE-CODE = *NO / *YES
Bei Angabe von YES schreibt der Compiler den Code der PROCEDURE DIVISION (ohne DECLARATIVES) in ein gemeinsam benutzbares Codemodul (siehe Abschnitt „Gemeinsam benutzbare COBOL-Programme").
Zur Namensbildung siehe " Ausgabe von Modulen" .
Jede Segmentierung der PROCEDURE DIVISION wird ignoriert.
ENABLE-INITIAL-STATE = *NO / *YES
Bei Angabe von YES legt der Compiler Bereiche für die Initialisierung an. Die Angabe NO bewirkt, dass in Programmen, auf die sich eine CANCEL-Anweisung bezieht, die die INITIAL-Klausel oder INITIALIZE-Anweisungen mit der VALUE-Angabe enthalten, nicht standardkonform ablaufen.
MODULE-FORMAT = *OM / *LLM (...)
Die folgenden Angaben werden ignoriert, wenn das Modul in das POSIX-Dateiensystem geschrieben wird (siehe MODULE-OUTPUT = <c-string...>).
OM: Das Modul soll zur Weiterverarbeitung mit BINDER / TSOSLNK bzw. DBL im OM-Format (Objektmodul-Format) erzeugt werden. Maximale Länge der externen Namen: 8 Zeichen.
LLM: Das Modul soll zur Weiterverarbeitung mit dem BINDER bzw. dem DBL im LLM-Format (Bindelademodul-Format) erzeugt werden. Maximale Länge für externe Namen: 30 Zeichen.
Bei der Übersetzung von Klassen und Interfaces sollte immer das Format *LLM gewählt werden. Von einander erbende Klassen oder Interfaces müssen alle im gleichen Modulformat vorliegen.
ALIGNMENT = *PAGE / *DOUBLE-WORD
Bei Angabe von PAGE erhalten die CSECTS im generierten Modul das PAGE-Attribut und werden damit auf Seitengrenze ausgerichtet.
Bei Angabe von DOUBLE-WORD werden die CSECTS nur auf Doppelwortgrenze ausgerichtet.
SUPPRESS-GENERATION = *NO / *AT-SEVERE-ERROR
Tritt bei der Übersetzung ein Fehler mit Severity Code >= 2 auf, kann mit der Angabe AT-SEVERE-ERROR die Erzeugung des Moduls und die Expansion von genutzten parametrisierten Klassen bzw. Interfaces unterdrückt werden.
SUPPRESS-GENERATION = *AT-SEVERE-ERROR hat darüber hinaus den Operanden SUPPRESS-GENERATION = *AT-SEVERE-ERROR in der LISTING-Option zur Folge. Damit wird auch die Ausgabe der Objekt-, Adress- und Querverweis-Liste verhindert.
SEGMENTATION=*ELABORATE / *IGNORE
ELABORATE: Segmentierung wird unterstützt. Wenn das Programm ’Nested Source Programs’ und nicht-feste Segmente (Segment-Nummer größer oder gleich Segment-Limit) enthält, wird die Übersetzung mit einer Meldung abgebrochen. Liegt diese Kombination nicht vor, werden nur segmentierungsbezogene Sprachmittel mit entsprechenden Warnungen abgewiesen. Die Angabe SEGMENTATION
= ELABORATE
zusammen mit SHAREABLE
-CODE
= YES
oder MODULE
-FORMAT
= LLM
wird mit einer Fehlermeldung abgewiesen.
IGNORE: Segmentierungsbezogene Sprachmittel (SEGMENT
-LIMIT
Klausel, Segment-Nummern in ’Section-Header’) werden ignoriert. Bei ihrem Auftreten wird darauf mit entsprechenden Warnungen hingewiesen.
UPDATE-REPOSITORY = *NO / *YES
Bei Angabe von YES legt der Compiler die externe Schnittstelle der Übersetzungseinheiten in das externe Repository ab, das mit dem Linknamen REPOUT zugewiesen ist. Existiert dort bereits eine entsprechende Schnittstelle, wird nicht geprüft, ob sich Abweichungen in der Schnittstelle ergeben haben. Die bereits existierende Beschreibung wird durch die neue überschrieben. Existiert kein Link mit dem Namen REPOUT, wird die Bibliothek SYS.PROG.LIB genutzt.
Die Ausgabe erfolgt immer. Eine Unterdrückung über SUPRESS-GENERATION ist nicht möglich. Repository-Daten sind vom Elementtyp X. Zur Unterscheidung erhalten Klassen den Suffix $CLS, Interfaces den Suffix $IFC, parametrisierte Klassen den Suffix $PCL, parametrisierte Interfaces den Suffix $PIF und Programme bzw. ProgrammPrototypen den Suffix $PRO.
CALL-CONVENTION = *COBOL / *COMPATIBLE
Bei Angabe von COBOL wird für die >>CALL-CONVENTION-Direktive der Wert COBOL voreingestellt.
Bei Angabe von COMPATIBLE wird als voreingestellter Wert COMPATIBLE für die >>CALL-CONVENTION-Direktive angenommen.
OPTION-DIRECTIVES = *KEEP / *IGNORE
Bei Angabe von IGNORE werden alle im Quelltext angegebenen >>IMP Direktiven, die Compiler-Optionen betreffen (LISTING-OPTIONS, COMPILER-ACTION und RUNTIME-ERRORS) ignoriert. Damit wird erreicht, dass unabhängig von den im Quelltext angegebenen Direktiven die von außen gesetzten Optionen wirken.
Bei der Expansion von parametrisierten Klassen bzw. Interfaces wird immer OPTION-DIRECTIVES=*KEEP angenommen.