Den Datenströmen entsprechen im BS2000 die Systemdateien. Deren Funktionalität ist relevant, wenn eine Funktion mit BS2000-Funktionalität aufgerufen wurde.
SYSDTA
Ein C-Programm kann SYSDTA folgendermaßen verwenden:
Mit einer Öffnungsfunktion (
fopen(),freopen(),open()) wird eine Datei mit dem Namen"/BS2/(SYSDTA)"oder"/BS2/(SYSTERM)"zum Lesen geöffnet. Der von der Öffnungsfunktion gelieferte Dateizeiger dient dann als Argument einer anschließenden Eingabefunktion.Beispiel
FILE *fp; fp = fopen("/BS2/(SYSDTA)", "r"); fgetc(fp);Bei Eingabefunktionen wird als Dateiargument der Dateizeiger
stdinbzw. der Dateideskriptor 0 angegeben.Beispiele
fgetc(stdin);read(0, buf, n);Es werden Eingabefunktionen benutzt, die standardmäßig von
stdinlesen (z.B.scanf(), getchar(), gets()).
Soll die Eingabe nicht vom Terminal aus erfolgen, sondern aus einer katalogisierten Datei, kann dies auf zweierlei Weise geschehen:
Wurde mit
PARAMETER-PROMPTING=YES(in der Compiler-OptionRUNTIME-OPTIONS) eine Parameterzeile angefordert, kann in dieser Parameterzeile die Standardeingabe (Dateizeigerstdinbzw. Dateideskriptor 0) auf eine katalogisierte Datei umgewiesen werden (siehe auch C- und C++-Benutzerhandbücher).Diese Umlenkung wirkt sich nicht auf Dateien aus, die mit dem Namen
"/BS2/(SYSDTA)"bzw."/BS2/(SYSTERM)"geöffnet werden. Die Eingabe aus Dateien dieses Namens wird nach wie vor vom Terminal erwartet.Vor Programmstart mit dem Kommando
ASSIGN-SYSDTAdateiname.Bei allen Eingabefunktionen werden die Eingabedaten dann aus der zugewiesenen Datei erwartet.
Bei der Zuweisung mit dem
ASSIGN-SYSDTA-Kommando ist Folgendes zu beachten:Nach Programmablauf steht der interne Satzzeiger hinter dem zuletzt gelesenen Satz bzw. auf Dateiende. Soll die Datei in einem weiteren Programmlauf wieder ab Dateianfang eingelesen werden, muss vor dem Programmstart ein neues
ASSIGN-SYSDTA-Kommando abgesetzt werden.Wurde
PARAMETER-PROMPTING=YES(in derRUNTIME-OPTIONS-Option) gewählt, so wird der erste Satz der zugewiesenen Datei als Parameterzeile für diemain-Funktion interpretiert.
Hinweis
Ist im C-Programm kein anderes Endekriterium vereinbart, lässt sich die EOF-Bedingung bei Eingaben am Terminal folgendermaßen erreichen: K2-Taste drücken und die Kommandos EOF und RESUME-PROGRAM eingeben.
SYSOUT
Ein C-Programm kann SYSOUT folgendermaßen verwenden:
Mit einer Öffnungsfunktion (
fopen(),freopen(),open()) wird eine Datei mit dem Namen"/BS2/(SYSOUT)"oder"/BS2/(SYSTERM)"zum Schreiben geöffnet. Der von der Öffnungsfunktion gelieferte Dateizeiger dient dann als Argument einer anschließenden Ausgabefunktion.Beispiel
FILE *fp; fp = fopen("/BS2/(SYSTERM)", "w"); fputc(fp);Bei Ausgabefunktionen wird als Dateiargument der Dateizeiger
stdoutbzw. der Dateideskriptor 1 angegeben.Beispiele
fputc(stdout);write(1, buf, n);Bei Ausgabefunktionen wird als Dateiargument der Dateizeiger
stderrbzw. der Dateideskriptor 2 angegeben.Es werden Ausgabefunktionen benutzt, die standardmäßig auf
stdout/stderrschreiben, z.B.printf(),puts(),putchar()bzw.perror().
Wurde mit PARAMETER-PROMPTING=YES (in der Compiler-Option RUNTIME-OPTIONS) eine Parameterzeile angefordert, kann in dieser Parameterzeile die Standardausgabe (Dateizeiger stdout bzw. Dateideskriptor 1) und die Standard-Fehlerausgabe (Dateizeiger stderr bzw. Dateideskriptor 2) auf eine katalogisierte Datei umgewiesen werden (siehe auch C- und C++-Benutzerhandbücher).
Diese Umlenkung wirkt sich nicht auf Dateien aus, die mit dem Namen "/BS2/(SYSOUT)" bzw. "/BS2/(SYSTERM)" geöffnet wurden.
SYSLST
Ein C-Programm kann SYSLST folgendermaßen verwenden:
Mit einer Öffnungsfunktion (
fopen(),freopen(),open()) wird eine Datei mit dem Namen"/BS2/(SYSLST)"zum Schreiben geöffnet. Der von der Öffnungsfunktion gelieferte Dateizeiger dient als Argument einer anschließenden Ausgabefunktion.Beispiel
FILE *fp; fp = fopen("/BS2/(SYSLST)", "w"); fprintf(fp, "\t TEXT \n");Wurde mit
PARAMETER-PROMPTING=YES(in der Compiler-OptionRUNTIME-OPTIONS) eine Parameterzeile angefordert, kann in dieser Parameterzeile die Standardausgabe bzw. die Standard-Fehlerausgabe aufSYSLSTumgelenkt werden (siehe auch C- und C++-Benutzerhandbücher).Diese Umlenkung wirkt sich nicht auf Dateien aus, die mit dem Namen
"/BS2/(SYSOUT)"geöffnet wurden.
Standardmäßig werden SYSLST-Dateien automatisch bei Taskende (LOGOFF) ausgedruckt.
Sollen die Daten nicht automatisch auf den Drucker, sondern in eine katalogisierte Datei ausgegeben werden, muss vor Programmablauf SYSLST umgelenkt werden. Dies geschieht mit dem Kommando ASSIGN-SYSLST dateiname.