COBOL-Programme können Systemdateien dazu verwenden, kleine Datenmengen (z.B. Steueranweisungen) einzulesen oder auszugeben. Den Zugriff auf Systemdateien und den Bedienplatz unterstützt COBOL2000 durch folgende Sprachmittel (siehe Handbuch „COBOL2000-Sprachbeschreibung“ [1]):
Die Vereinbarung programminterner Merknamen für Systemdateien im SPECIAL-NAMES-Paragrafen der ENVIRONMENT DIVISION:
Über diese Merknamen können sich Anweisungen der PROCEDURE DIVISION auf die zugeordneten Systemdateien beziehen (siehe unten). Es können unter anderem Merknamen vereinbart werdenfür die Eingabedateien
SYSDTA
SYSIPT
mit TERMINAL IS merkname
mit SYSIPT IS merkname
für die Ausgabedateien
SYSOUT
SYSLST
SYSLSTnn
SYSOPT
mit TERMINAL IS merkname
mit PRINTER IS merkname
mit PRINTERnn IS merkname (nn = 01...99)
mit th SYSOPT IS merkname
Die Anweisungen ACCEPT, DISPLAY und STOP literal der PROCEDURE DIVISION:
Sie greifen auf Systemdateien bzw. auf den Bedienplatz zu, wobei im einzelnen gilt:ACCEPT...FROM merkname
liest aus der (im SPECIAL-NAMES-Paragrafen) mit merkname verknüpften Eingabedatei.
Die Daten werden dabei linksbündig in der Länge des Empfangsfeldes der ACCEPT-Anweisung übertragen:
Ist das Feld länger als der zu übertragende Wert, wird es am rechten Ende mit Leerzeichen aufgefüllt; ist es kürzer, wird der Wert bei der Übertragung rechts auf die Feldlänge abgeschnitten.Hat die Eingabedatei das Satzformat F (Sätze fester Länge, siehe Abschnitt „Systemdateien: Primärzuweisungen, Umweisungen, Satzformate"), so gilt außerdem:Ist die Länge des Empfangsfeldes der ACCEPT-Anweisung größer als die logische Satzlänge der Systemdatei, werden automatisch Daten nachgefordert, d.h. weitere Leseoperationen (Makroaufrufe) veranlasst.
Erkennt das Programm beim Lesen der Systemdatei das Dateiende, gibt es die Meldung COB9121 bzw. COB9122 aus.
Abhängig vom COMOPT-Operanden CONTINUE-AFTER-MESSAGE bzw. ERROR-REACTION in der RUNTIME-OPTIONS-Option (SDF) wird der Programmablauf anschließend fortgesetzt (Voreinstellung) oder beendet.Bei Fortsetzung des Programmablaufs wird im Empfangsfeld auf den ersten zwei Positionen die Zeichenfolge „/*“ abgelegt (bzw. „/“, wenn das Empfangsfeld nur 1 Zeichen lang ist) und mit der auf ACCEPT folgenden Anweisung fortgefahren.
ACCEPT (ohne FROM-Angabe)
liest standardmäßig aus der Systemeingabedatei SYSIPT.
Mit COMOPT REDIRECT-ACCEPT-DISPLAY=YES bzw.
ACCEPT-DISPLAY-ASSGN=*TERMINAL in der SDF-Option RUNTIME-OPTIONS kann auf die Systemdatei SYSDTA umgewiesen werden.
DISPLAY...UPON merkname
schreibt in die (im SPECIAL-NAMES-Paragrafen) mit merkname verknüpfte Ausgabedatei.
Die Daten werden dabei in der Länge der Sendefelder bzw. Literale der DISPLAY-Anweisung übertragen.
Ist die Gesamtzahl der zu übertragenden Zeichen größer als die maximale Satzlänge der Ausgabedatei (siehe Tabelle 14 im Abschnitt „Systemdateien: Primärzuweisungen, Umweisungen, Satzformate"), werden solange zusätzliche Datensätze ausgegeben, bis alle Zeichen übertragen sind; ist sie bei Dateien mit Sätzen fester Länge kleiner als die Satzlänge, werden die Datensätze am rechten Ende mit Leerzeichen aufgefüllt.DISPLAY (ohne UPON-Angabe)
schreibt standardmäßig in die Systemausgabedatei SYSLST.
Mit COMOPT REDIRECT-ACCEPT-DISPLAY=YES bzw.
ACCEPT-DISPLAY-ASSGN=*TERMINAL in der SDF-Option RUNTIME-OPTIONS kann auf die Systemdatei SYSOUT umgewiesen werden.STOP literal
gibt ein (maximal 122 Zeichen langes) Literal auf dem Bedienplatz aus.
Beispiel 8-1
Zugriff auf eine Systemdatei über einen vereinbarten Merknamen
IDENTIFICATION DIVISION. ... ENVIRONMENT DIVISION. CONFIGURATION SECTION. ... SPECIAL-NAMES. SYSIPT IS SYS-EINGABE —————————————————————————————————————————————(1) ... PROCEDURE DIVISION. ... ACCEPT STEUER-FELD FROM SYS-EINGABE.——————————————————————————————(2) ...
(1) | Für die Systemdatei SYSIPT wird der programminterne Merkname SYS-EINGABE vereinbart. |
(2) | ACCEPT liest (über den Merknamen SYS-EINGABE) aus SYSIPT einen Wert in das Feld STEUER-FELD. |