Dieses Dokument beschreibt, wie Sie die Statements
DISPLAY
und
WRITE
zur Ausgabe von
Daten und zur Steuerung der Art und Weise benutzen, in der die Informationen
ausgegeben werden.
Folgende Themen werden behandelt:
Das DISPLAY
-Statement erzeugt eine
Ausgabe in Spaltenform; d.h. die Werte eines Feldes werden jeweils in einer
Spalte untereinander ausgegeben. Wenn mehrere Felder ausgegeben werden, d.h.
wenn mehrere Spalten erzeugt werden, werden diese Spalten nebeneinander
ausgegeben.
Die Reihenfolge, in der die Felder ausgegeben werden, bestimmen Sie
durch die Reihenfolge, in der Sie die Feldnamen im
DISPLAY
-Statement angeben.
Das DISPLAY
-Statement im folgenden Programm zeigt für jede
Person zuerst die Personalnummer (PERSONNEL-ID
) an, dann den
Nachnamen (NAME
) und zuletzt die Tätigkeitsbezeichnung
(JOB-TITLE
):
** Example 'DISPLX01': DISPLAY ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 BIRTH 2 JOB-TITLE END-DEFINE * READ (3) VIEWEMP BY BIRTH DISPLAY PERSONNEL-ID NAME JOB-TITLE END-READ END
Ausgabe des Programms DISPLX01
:
Page 1 04-11-11 14:15:54 PERSONNEL NAME CURRENT ID POSITION --------- -------------------- ------------------------- 30020013 GARRET TYPIST 30016112 TAILOR WAREHOUSEMAN 20017600 PIETSCH SECRETARY
Um die Reihenfolge der Spalten in der Ausgabe zu ändern, ändern Sie
einfach die Reihenfolge der Feldnamen im DISPLAY
-Statement. Falls Sie
beispielsweise zuerst die Nachnamen, dann die Tätigkeitsbezeichnungen und
zuletzt die Personalnummern ausgeben möchten, müsste das entsprechende
DISPLAY
-Statement folgendermaßen aussehen:
** Example 'DISPLX02': DISPLAY ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 BIRTH 2 JOB-TITLE END-DEFINE * READ (3) VIEWEMP BY BIRTH DISPLAY NAME JOB-TITLE PERSONNEL-ID END-READ END
Ausgabe des Programms DISPLX02
:
Page 1 04-11-11 14:15:54 NAME CURRENT PERSONNEL POSITION ID -------------------- ------------------------- --------- GARRET TYPIST 30020013 TAILOR WAREHOUSEMAN 30016112 PIETSCH SECRETARY 20017600
Über jeder Spalte wird eine Spaltenüberschrift ausgegeben. Verschiedene Möglichkeiten, die Ausgabe dieser Überschriften zu beeinflussen, sind weiter unten im Abschnitt Spaltenüberschriften beschrieben.
Das WRITE
-Statement wird zur
Erzeugung unformatierter (d.h. nicht in Spalten unterteilter) Ausgaben benutzt.
Im Gegensatz zum DISPLAY
-Statement gilt für das
WRITE
-Statement Folgendes:
Es führt, wenn nötig, einen automatischen Zeilenvorschub aus; d.h. ein Feld oder Textelement, das nicht mehr in eine Zeile passt, wird automatisch in der nächsten Zeile ausgegeben.
Es erzeugt keine Spaltenüberschriften.
Bei Werten eines multiplen Feldes werden diese nicht untereinander sondern nebeneinander ausgegeben.
Die beiden Beispielprogramme auf der folgenden Seite veranschaulichen
die grundsätzlichen Unterschiede zwischen DISPLAY
- und
WRITE
-Statement.
Sie können beide Statements auch miteinander kombinieren; diese Möglichkeit ist unter Vertikale Ausgabe von Feldwerten im Abschnitt Vertikale Ausgabe durch Kombination von DISPLAY und WRITE beschrieben.
** Example 'DISPLX03': DISPLAY ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 SALARY (1:3) END-DEFINE * READ (2) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY NAME FIRST-NAME SALARY (1:3) END-READ END
Ausgabe des Programms DISPLX03
:
Page 1 04-11-11 14:15:54 NAME FIRST-NAME ANNUAL SALARY -------------------- -------------------- ---------- JONES VIRGINIA 46000 42300 39300 JONES MARSHA 50000 46000 42700
** Example 'WRITEX01': WRITE ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 SALARY (1:3) END-DEFINE * READ (2) VIEWEMP BY NAME STARTING FROM 'JONES' WRITE NAME FIRST-NAME SALARY (1:3) END-READ END
Ausgabe des Programms WRITEX01
:
Page 1 04-11-11 14:15:55 JONES VIRGINIA 46000 42300 39300 JONES MARSHA 50000 46000 42700
Standardmäßig sind die mit einem DISPLAY
-Statement ausgegebenen
Spalten jeweils durch eine Leerstelle voneinander getrennt.
Mit dem Session-Parameter SF
(Spacing Factor)
können Sie angeben, wieviele Leerstellen zwischen den Spalten einer
DISPLAY
-Ausgabe eingefügt werden sollen. Sie können die Anzahl der
Leerstellen auf einen Wert von 1 bis 30 setzen.
Der Parameter kann in einem FORMAT
-Statement angegeben
werden und gilt dann für den ganzen Report. Oder er kann in einem
DISPLAY
-Statement
angegeben werden, und zwar auf Statement-Ebene, aber nicht auf
Element-Ebene.
Mit der Notation nX
können Sie die Anzahl der Leerstellen (n) zwischen
zwei bestimmten Spalten angeben. Eine
nX
-Notation hat Vorrang vor einer
SF
-Parameterangabe.
Beispiel:
** Example 'DISPLX04': DISPLAY (with nX) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 BIRTH 2 JOB-TITLE END-DEFINE * FORMAT SF=3 READ (3) VIEWEMP BY BIRTH DISPLAY PERSONNEL-ID NAME 5X JOB-TITLE END-READ END
Ausgabe des Programms DISPLX04
:
Das obige Beispielprogramm erzeugt folgende Ausgabe, wobei die ersten
beiden Spalten aufgrund des SF
-Parameters im
FORMAT
-Statement durch 3 Leerstellen voneinander getrennt sind,
während die zweite und dritte Spalte aufgrund der Notation 5X
im
DISPLAY
-Statement durch 5 Leerstellen voneinander getrennt
sind:
Page 1 04-11-11 14:15:54 PERSONNEL NAME CURRENT ID POSITION --------- -------------------- ------------------------- 30020013 GARRET TYPIST 30016112 TAILOR WAREHOUSEMAN 20017600 PIETSCH SECRETARY
Die Notation nX
kann auch in
einem WRITE
-Statement
verwendet werden, um Leerstellen zwischen Ausgabe-Elementen einzufügen:
WRITE PERSONNEL-ID 5X NAME 3X JOB-TITLE
Mit dem obigen Statement werden zwischen den Feldern
PERSONNEL-ID
und NAME
5 Leerstellen und zwischen
NAME
und JOB-TITLE
3 Leerstellen eingefügt.
Mit der Tabulator-Notation nT
,
die im DISPLAY
- und
im WRITE
-Statement
verwendet werden kann, können Sie die Spalte n
bestimmen, ab der ein Ausgabe-Element ausgegeben werden soll.
** Example 'DISPLX05': DISPLAY (with nT) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY 5T NAME 30T FIRST-NAME END-READ END
Ausgabe des Programms DISPLX05
:
Das obige Programm erzeugt folgende Ausgabe, wobei das Feld
NAME
ab Spalte 5 (vom linken Seitenrand aus gezählt) und das Feld
FIRST-NAME
ab Spalte 30 ausgegeben wird:
Page 1 04-11-11 14:15:54 NAME FIRST-NAME -------------------- -------------------- JONES VIRGINIA JONES MARSHA JONES ROBERT
Mit einem Schrägstrich (/) in einem DISPLAY
- oder
WRITE
-Statement
bewirken Sie einen Zeilenvorschub.
Bei einem DISPLAY
-Statement bewirkt ein Schrägstrich
einen Zeilenvorschub zwischen Feldern und innerhalb von
Text.
Bei einem WRITE
-Statement bewirkt ein Schrägstrich nur
zwischen Feldern einen Zeilenvorschub; innerhalb von Text wird er wie
ein gewöhnliches Textzeichen behandelt.
Zwischen Feldern muss dem Schrägstrich je ein Leerzeichen vor- und nachgestellt werden.
Für mehrfachen Zeilenvorschub geben Sie mehrere Schrägstriche an.
** Example 'DISPLX06': DISPLAY (with slash '/') ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 DEPARTMENT END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY NAME / FIRST-NAME 'DEPART-/MENT' DEPARTMENT END-READ END
Ausgabe des Programms DISPLX06
:
Das obige DISPLAY
-Statement erzeugt einen Zeilenvorschub
nach jedem Wert des Feldes NAME
sowie innerhalb des Textes
DEPART-MENT
:
Page 1 04-11-11 14:15:54 NAME DEPART- FIRST-NAME MENT -------------------- ------- JONES SALE VIRGINIA JONES MGMT MARSHA JONES TECH ROBERT
** Example 'WRITEX02': WRITE (with line advance) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 DEPARTMENT END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' WRITE NAME / FIRST-NAME 'DEPART-/MENT' DEPARTMENT // END-READ END
Ausgabe des Programms WRITEX02
:
Das obige WRITE
-Statement erzeugt einen Zeilenvorschub nach
jedem Wert des Feldes NAME und einen doppelten Zeilenvorschub nach jedem Wert
des Feldes DEPARTMENT
, aber keinen innerhalb des Textes
DEPART-/MENT
:
Page 1 04-11-11 14:15:55 JONES VIRGINIA DEPART-/MENT SALE JONES MARSHA DEPART-/MENT MGMT JONES ROBERT DEPART-/MENT TECH
** Example 'DISPLX21': DISPLAY (usage of slash '/' in DISPLAY and WRITE) ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 CITY 2 NAME 2 FIRST-NAME 2 ADDRESS-LINE (1) END-DEFINE * WRITE TITLE LEFT JUSTIFIED UNDERLINED *TIME 5X 'PEOPLE LIVING IN SALT LAKE CITY' 21X 'PAGE:' *PAGE-NUMBER / 15X 'AS OF' *DAT4E // * WRITE TRAILER UNDERLINED 'REGISTER OF' / 'SALT LAKE CITY' * READ (2) EMPLOY-VIEW WITH CITY = 'SALT LAKE CITY' DISPLAY NAME / FIRST-NAME 'HOME/CITY' CITY 'STREET/OR BOX NO.' ADDRESS-LINE (1) SKIP 1 END-READ END
Ausgabe des Programms DISPLX21
:
14:15:54.6 PEOPLE LIVING IN SALT LAKE CITY PAGE: 1 AS OF 11/11/2004 ------------------------------------------------------------------------------- NAME HOME STREET FIRST-NAME CITY OR BOX NO. -------------------- -------------------- -------------------- ANDERSON SALT LAKE CITY 3701 S. GEORGE MASON JENNY SAMUELSON SALT LAKE CITY 7610 W. 86TH STREET MARTIN REGISTER OF SALT LAKE CITY -------------------------------------------------------------------------------
Siehe die folgenden Beispiel-Programme: