Der C/C++-Compiler unterstützt zusätzlich zum BS2000-Dateisystem (DVS-Dateien, PLAM-Bibliotheken etc.) das POSIX-Dateisystem. Sämtliche Ein- und Ausgaben des Compilers in einem Übersetzungs-, Präprozessor- oder Syntax-Analyse-Lauf können auch über POSIX-Dateien erfolgen.
Im Einzelnen sind dies:
die Eingabe von Quellprogrammen (siehe SOURCE-Option in den Anweisungen COMPILE, PREPROCESS, CHECK-SYNTAX)
die Eingabe von Include-Dateien (siehe Optionen USER-INCLUDE-LIBRARY und STD-INCLUDE-LIBRARY in der MODIFY-INCLUDE-LIBRARY-Anweisung)
die Ausgabe von LLMs (siehe MODULE-OUTPUT-Option in der COMPILE-Anweisung)
die Ausgabe von expandierten Quellprogrammen (siehe OUTPUT-Option in der PRE-PROCESS-Anweisung)
die Ausgabe von Übersetzungslisten (siehe OUTPUT-Option in der MODIFY-LISTING-PROPERTIES-Anweisung)
die Ausgabe von Meldungslisten (siehe OUTPUT-Option in der MODIFY-DIAGNOSTIC-PROPERTIES-Anweisung)
die Ausgabe von CIF-Informationen (siehe OUTPUT-Option in der MODIFY-CIF-PROPERTIES-Anweisung)
Beliebige Mischfälle, d.h. die Ein- und Ausgabe sowohl von BS2000- als auch von POSIX-Dateien in einem Übersetzungslauf, sind möglich.
Ablage der Quellprogramm- und Include-Dateien
Die Quellprogramm- und Include-Dateien können in EBCDIC- und ASCII-Code vorliegen. Im POSIX-Dateisystem ist der EBCDIC-Code voreingestellt, in Dateisystemen auf fernen UNIX-Rechnern oder PCs der ASCII-Code. Alle Dateien eines Dateisystems (POSIX-Dateisystem oder eingehängtes fernes Dateisystem) müssen jeweils im selben (voreingestellten) Codeset vorliegen. Der Compiler fragt das Codeset eines Dateisystems zentral und nicht pro einzelne Datei ab. Dateien eines ASCII-Dateisystems werden intern für die Übersetzung nach EBCDIC konvertiert, wenn die Umgebungsvariable SYSPOSIX.IO-CONVERSION den Wert YES hat (siehe Abschnitte „Umgebungsvariablen" und „Unterstützung von Dateisystemen in ASCII" im Handbuch „C-Bibliotheksfunktionen“ [2] ).
Im Unterschied zur Programmentwicklung in der POSIX-Shell (siehe Handbuch „POSIX-Kommandos des C/C++-Compilers“ [1]), müssen die Dateinamen der Quellprogramme nicht unbedingt eines der Standard-Suffixe „.c“, „.C“, „.i“ etc. enthalten.
Ausgabe von LLMs
Die vom Compiler erzeugten LLMs können in POSIX-Objektdateien („.o“-Dateien) geschrieben werden. Eine sinnvolle Weiterverarbeitung dieser Objektdateien ist nur im POSIX-Subsystem mit den Kommandos cc
, c11
, c89
oder CC
möglich (siehe Handbuch „POSIX-Kommandos des C/C++-Compilers“ [1]). In UNIX-Systemen wird das erzeugte Objektdatei-Format (LLM) nicht unterstützt.
Sonstige Compilerausgaben
Expandierte, weiterübersetzbare Quellprogramme
Das Ergebnis eines Präprozessorlaufes kann in eine POSIX-Quelldatei („.i“-Datei in C, „.
I
“-Datei in C++) geschrieben werden. Diese Datei kann in der POSIX-Shell mit den Kommandoscc
,c89
oderCC
weiterverarbeitet werden, in BS2000-Umgebung über die SDF-Schnittstelle des C/C++-Compilers.Übersetzungslisten
Die Übersetzungslisten können in eine POSIX-Listendatei („.lst“-Datei) geschrieben werden. Diese Listendatei kann in der POSIX-Shell mit dem Kommando
bs2lp
ausgedruckt werden, in BS2000-Umgebung mit dem SDF-Kommando PRINT-DOCUMENT.Diagnosemeldungen
Die Fehlermeldungen des Compilers können in eine POSIX-Datei („.diag“-Datei) geschrieben werden. Diese Datei kann beispielsweise mit dem EDT in der POSIX-Shell (Kommando
edt
) und in BS2000-Umgebung gelesen werden (vgl. Hinweise zum EDT, "Editieren von Quellprogrammen").CIF-Informationen
Die CIF-Informationen für die Erstellung von globalen Listen können in eine POSIX-Datei („.cif“-Datei) geschrieben werden. Diese CIF-Dateien können in der POSIX-Shell mit dem Kommando
cclistgen
weiterverarbeitet werden (siehe Handbuch „POSIX-Kommandos des C/C++-Compilers“ [1]), in BS2000-Umgebung über die SDF-Schnittstelle des globalen Listengenerators (siehe START-CPLUS-LISTING-GENERATOR, "Steuerung des globalen Listengenerators").
Ausgabe-Codeset
Das Ausgabe-Codeset der Dateien (EBCDIC oder ASCII) richtet sich nach dem Codeset des Zieldateisystems. Im POSIX-Dateisystem werden die Dateien vom Compiler im EBCDIC-Code abgelegt, in Dateisystemen auf UNIX-Rechnern im ASCII-Code, wenn die Umgebungsvariable SYSPOSIX.IO-CONVERSION den Wert YES hat (siehe Abschnitte „Umgebungsvariablen" und „Unterstützung von Dateisystemen in ASCII" im Handbuch „C-Bibliotheksfunktionen“ [2] ).
Es wird nur EBCDIC-Ablaufcode erzeugt. Z.B. werden die Namen externer Entries nur im EBCDIC-Code abgelegt.
Beschreibung des Begriffes <posix-pathname>
Bei der Angabe von <posix-pathname> als Eingabe oder Ausgabe kann folgendes angegeben werden:
ein Dateiname ohne Pfad-Angabe
ein relativer Pfad zu einer Datei
ein absoluter Pfad zu einer Datei
ein relativer Pfad zu einem Dateiverzeichnis
ein absoluter Pfad zu einem Dateiverzeichnis
Ist kein absoluter Pfad vorhanden, so wird der Name/Pfad relativ zum Home-Dateiverzeichnis des Benutzers interpretiert.
Alle Dateiverzeichnisse im Pfad müssen bereits existieren.
Wird eine Eingabe-Datei verlangt, so darf kein Dateiverzeichnis angegeben werden. Wird ein Eingabe-Dateiverzeichnis verlangt, so darf keine Datei angegeben werden.
Die Angabe einer Ausgabe-Datei ist nur sinnvoll, wenn eine einzelne Source bearbeitet wird. Werden mehrere Sourcen bearbeitet, ist die Angabe einer Ausgabe-Datei in der Regel unzulässig.
Bei der Bildung der Dateinamen ist zu beachten, dass die Ausgabe-Datei im POSIX-Subsystem nur sinnvoll weiterverarbeitet werden kann, wenn der Name einen passenden Suffix enthält.
Wird ein Dateiverzeichnis angegeben, so bestimmt der Compiler selbst den Namen der Ausgabe-Datei (siehe Abschnitt „Standardnamen für Ausgabebehälter“).