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"(SYSDTA)"
oder"(SYSTERM)"
zum Lesen geöffnet. Der von der Öffnungsfunktion gelieferte Dateizeiger dient dann als Argument einer anschließenden Eingabefunktion.Beispiel
FILE *fp; fp = fopen("(SYSDTA)", "r"); fgetc(fp);
Bei Eingabefunktionen wird als Dateiargument der Dateizeiger
stdin
bzw. der Dateideskriptor 0 angegeben.Beispiele
fgetc(stdin);
read(0, buf, n);
Es werden Eingabefunktionen benutzt, die standardmäßig von
stdin
lesen (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 (Dateizeigerstdin
bzw. 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
"(SYSDTA)"
bzw."(SYSTERM)"
geöffnet werden. Die Eingabe aus Dateien dieses Namens wird nach wie vor vom Terminal erwartet.Vor Programmstart mit dem Kommando
ASSIGN-SYSDTA
dateiname.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"(SYSOUT)"
oder"(SYSTERM)"
zum Schreiben geöffnet. Der von der Öffnungsfunktion gelieferte Dateizeiger dient dann als Argument einer anschließenden Ausgabefunktion.Beispiel
FILE *fp; fp = fopen("(SYSTERM)", "w"); fputc(fp);
Bei Ausgabefunktionen wird als Dateiargument der Dateizeiger
stdout
bzw. der Dateideskriptor 1 angegeben.Beispiele
fputc(stdout);
write(1, buf, n);
Bei Ausgabefunktionen wird als Dateiargument der Dateizeiger
stderr
bzw. der Dateideskriptor 2 angegeben.Es werden Ausgabefunktionen benutzt, die standardmäßig auf
stdout/stderr
schreiben, 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 "(SYSOUT)
" bzw. "(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"(SYSLST)"
zum Schreiben geöffnet. Der von der Öffnungsfunktion gelieferte Dateizeiger dient als Argument einer anschließenden Ausgabefunktion.Beispiel
FILE *fp; fp = fopen("(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 aufSYSLST
umgelenkt werden (siehe auch C- und C++-Benutzerhandbücher).Diese Umlenkung wirkt sich nicht auf Dateien aus, die mit dem Namen
"(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.