Funktion
Format 1 | wird zur Ausgabe von kleineren Datenmengen verwendet. |
Format 2 | dient dem Zugriff auf eine POSIX-Kommandozeile |
Format 3 & 4 | dienen dem Zugriff auf eine BS2000- oder POSIX-Umgebungsvariable |
Format 1
DISPLAY {literal-1 | bezeichner-1}... [UPON merkname] [WITH NO ADVANCING]
Syntaxregeln
Falls literal-1 numerisch ist, muss es eine vorzeichenlose Ganzzahl sein.
bezeichner-1 darf nicht von der Klasse national, zeiger oder objekt sein.
merkname muss im SPECIAL-NAMES-Paragrafen angegeben werden und mit einem der folgenden Herstellernamen verknüpft sein:
CONSOLE, PRINTER, PRINTER01 - PRINTER99, SYSOPT, TERMINAL, jobvariablenname (Jobvariable BS2000).Mit der Angabe des Merknamens für SYSOPT, TERMINAL, CONSOLE, PRINTER und PRINTER01-PRINTER99 wird eine Systemdatei spezifiziert, in die die Daten geschrieben werden sollen.
SYSOPT bezeichnet die Systemdatei gleichen Namens.
TERMINAL bezeichnet die Systemdatei SYSOUT.
CONSOLE bezeichnet den Bedienplatz des Systems.
PRINTER bezeichnet die Systemdatei SYSLST, PRINTER01-PRINTER99 bezeichnen die Systemdateien SYSLST01-SYSLST99.
Falls die UPON-Angabe fehlt, werden die Daten standardmäßig in die logische Ausgabedatei SYSLST ausgegeben. Mit einer entsprechenden Compiler-Steueranweisung können die Daten auch in die logische Ausgabedatei SYSOUT ausgegeben werden (siehe Handbuch „COBOL2000 Benutzerhandbuch“ [1]).
- bezeichner-1 darf nicht mit der ANY LENGTH-Klausel definiert sein.
Allgemeine Regeln
Mit literal-1 oder bezeichner-1 werden die Operanden angegeben, die in der angeführten Reihenfolge ausgegeben werden sollen. Der Inhalt des durch bezeichner angegebenen Datenfeldes wird, falls notwendig, nach den folgenden Regeln in externe Formate umgewandelt:
Intern dezimale und binäre Felder werden in extern dezimale Datenfelder umgewandelt.
Interne Gleitpunktdatenfelder werden in externe Gleitpunktdatenfelder umgewandelt.
Alle anderen Datenfelder erfordern keine Umwandlung.
Falls einer der Operanden eine figurative Konstante ist (außer ALL literal), wird diese mit der Länge 1 ausgegeben.
Falls einer der Operanden die figurative Konstante ALL literal ist, wird das Literal einmal ausgegeben.
Für jedes Gerät wird eine maximale logische Satzgröße angenommen. Diese Größen sind in Tabelle 27 aufgeführt.
Gerät Maximale Datensatzgröße CONSOLE 180 Zeichen PRINTERPRINTER01-PRINTER99 132 Zeichen + 1 Byte Steuerinformation SYSOPT 80 Zeichen: 72 Datenbytes; die Bytes 73-80 enthalten die ersten 8 Bytes des PROGRAM-ID-Namens. TERMINAL 8192 Zeichen Tabelle 27: Maximale logische Datensatzgröße für die DISPLAY-Anweisung
Wenn eine DISPLAY-Anweisung mehr als einen Operanden enthält, werden die Inhalte der angegebenen Datenbereiche und Literale nebeneinander von links nach rechts ausgegeben.
Null-längige Datenfelder werden nicht ausgegeben. Sind alle Operanden null-längige Datenfelder, so hat die DISPLAY-Anweisung keine Auswirkung.Die NO ADVANCING-Angabe wird vom Compiler als Kommentar behandelt.
Bei Druckerausgabe wird ein Zeilenvorschub durch die folgenden Angaben erzeugt: DISPLAY, WRITE und WRITE AFTER ADVANCING. Durch eine WRITE-Anweisung ohne ADVANCING-Angabe oder mit BEFORE ADVANCING-Angabe wird ein Zeilenvorschub nach dem Drucken bewirkt. Daher kann sich durch gemischte Anwendungen von DISPLAY- und WRITE-Anweisungen auf das gleiche Gerät innerhalb ein und desselben Programmes ein Überdrucken von Zeilen ergeben. Auf Laserdrucker ist ein Überdrucken nicht möglich.
Die maximale Datensatzgröße bei Jobvariablen beträgt 256 Zeichen.
Falls die Gesamtzeichenanzahl der Operanden die maximale Datensatzgröße überschreitet, wird der Datensatz auf die maximale Länge abgeschnitten.Wenn eine Jobvariable als Monitor-Jobvariable (überwachende Jobvariable) MONJV verwendet wird, dann schützt das System die ersten 128 Bytes (Systemteil) dieser Jobvariablen gegen Schreibzugriffe. Es wird daher nur der Teil eines Datensatzes, der mit der Position 129 beginnt, ab Position 129 der Monitor-Jobvariablen geschrieben.
Ansonsten gilt für überwachende Jobvariablen die Allgemeine Regel 4.
Weitere Angaben siehe Handbuch „COBOL2000 Benutzerhandbuch“ [1].
Beispiel 8-31
SPECIAL-NAMES. TERMINAL IS SONDER-AUSGABE. ... PROCEDURE DIVISION. ... DISPLAY AUSGABE-TEXT UPON SONDER-AUSGABE.
Hierbei ist dem Merknamen SONDER-AUSGABE der Herstellername TERMINAL im SPECIAL-NAMES-Paragrafen zugewiesen. Durch die DISPLAY-Anweisung wird der Inhalt von AUSGABE-TEXT auf SYSOUT ausgegeben.
Beispiel 8-32
DISPLAY "Hello universe!".
Da die UPON-Angabe fehlt, wird das Literal "Hello universe!" standardmäßig in die Ausgabedatei SYSLST ausgegeben. Wurde die Compiler-Steueranweisung
COMOPT REDIRECT-ACCEPT-DISPLAY=YES
(in SDF: ACCEPT-DISPLAY-ASSGN=*
TERMINAL) angegeben, wird das Literal in die Ausgabedatei SYSOUT ausgegeben (siehe Handbuch „COBOL2000 Benutzerhandbuch“ [1]).
Die folgenden drei Formate der DISPLAY-Anweisung sind Erweiterungen aus dem X/OPEN Portability Guide. Sie erlauben den Zugriff auf Umgebungsvariablen und Kommandozeilen. Der Zugriff auf eine Kommandozeile ist nur sinnvoll, wenn das Zielprogramm im POSIX-Subsystem abläuft, das ab BS2000/OSD 2.0 zur Verfügung steht. Der Ablauf des COBOL2000-Compilers und der von ihm erzeugten Programme unter POSIX ist im Handbuch „COBOL2000 Benutzerhandbuch“ [1] beschrieben.
Format 2
setzt die Nummer des Arguments in der Kommandozeile, auf das anschließend mit einer ACCEPT-Anweisung zugegriffen wird.
DISPLAY {bezeichner-3 | ganzzahl-1} UPON merkname-3 [END-DISPLAY]
Syntaxregeln
bezeichner-3 muss sich auf ein Datenelement beziehen, das als Ganzzahl ohne Vorzeichen beschrieben ist.
ganzzahl-1 darf kein Vorzeichen besitzen.
merkname-3 muss im SPECIAL-NAMES-Paragrafen mit dem Herstellernamen ARGUMENT-NUMBER verknüpft sein.
Format 3
setzt den Namen der Umgebungsvariablen, auf die anschließend mit einer ACCEPT- oder DISPLAY-Anweisung zugegriffen wird.
DISPLAY {bezeichner-4 | literal-1} UPON merkname-5 [END-DISPLAY]
Syntaxregeln
bezeichner-4 muss sich auf ein alphanumerisches Datenelement beziehen, das ohne ANY LENGTH-Klausel definiert ist.
literal-1 muss ein alphanumerisches Literal sein.
merkname-5 muss im SPECIAL-NAMES-Paragrafen mit dem Herstellernamen ENVIRONMENT-NAME verknüpft sein.
Format 4
schreibt in die Umgebungsvariable, die zuvor mit einer DISPLAY-Anweisung vom Format 3 benannt wurde.
DISPLAY {bezeichner-2 | literal-2} UPON merkname-6
[ON EXCEPTION unbedingte-anweisung-1]
[NOT ON EXCEPTION unbedingte-anweisung-2]
[END-DISPLAY]
Syntaxregeln
bezeichner-2 muss sich auf ein alphanumerisches Datenelement beziehen, das ohne ANY LENGTH-Klausel definiert ist.
literal-2 muss ein alphanumerisches Literal sein.
merkname-6 muss im SPECIAL-NAMES-Paragrafen mit dem Herstellernamen ENVIRONMENT-VALUE verknüpft sein.
NOT ON EXCEPTION darf nur angegeben werden, wenn auch ON EXCEPTION angegeben ist.
Ein ausführliches Beispiel für den Zugriff auf Kommandozeile und Umgebungsvariable befindet sich im Handbuch „COBOL2000 Benutzerhandbuch“ [1].