Dieser Abschnitt 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 DISPLAY VERT-Statement 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: