Dieses Dokument beschreibt, wie Sie die Funktionen der Statements
DISPLAY und
WRITE miteinander
kombinieren können, um vertikale Ausgaben von Feldwerten zu erzeugen.
Folgende Themen werden behandelt:
Natural bietet Ihnen zwei Möglichkeiten, die verschiedenen Daten eines Datensatzes bei der Ausgabe untereinander anzuordnen:
Wie weiter oben beschrieben, erzeugt das
DISPLAY-Statement
normalerweise Ausgaben in Spaltenform mit Standardüberschriften, während das
WRITE-Statement die
Daten nebeneinander ohne Überschriften anordnet.
Sie können die Merkmale dieser beiden Statements miteinander verbinden, um eine vertikale Ausgabe von Feldwerten zu erzeugen.
Das DISPLAY-Statement ordnet die Werte eines Feldes
untereinander an, und zwar Datensatz für Datensatz; die verschiedenen Felder
eines Datensatzes werden nebeneinander ausgegeben.
Durch ein dem DISPLAY-Statement nachgestelltes
WRITE-Statement haben Sie die Möglichkeit, in einem
WRITE-Statement angegebene Text und/oder Feldwerte zwischen den
einzelnen mit dem DISPLAY-Statement ausgegebenen Datensätzen
einzufügen.
Das folgende Programm zeigt diese Kombination von DISPLAY
und WRITE:
** Example 'WRITEX04': WRITE (in combination with DISPLAY) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 JOB-TITLE 2 CITY 2 DEPT END-DEFINE * READ (3) VIEWEMP BY CITY STARTING FROM 'SAN FRANCISCO' DISPLAY NAME JOB-TITLE WRITE 22T 'DEPT:' DEPT SKIP 1 END-READ END
Ausgabe des Programms WRITEX04:
Page 1 04-11-11 14:15:55
NAME CURRENT
POSITION
-------------------- -------------------------
KOLENCE MANAGER
DEPT: TECH05
GOSDEN ANALYST
DEPT: TECH10
WALLACE SALES PERSON
DEPT: SALE20
Im vorigen Beispiel ergibt sich die Position des Feldes
DEPT aus der Tabulator-Notation
nT (in diesem Fall 20T,
d.h. die Ausgabe beginnt in der 20. Bildschirmspalte).
Durch die Notation T*field
können Sie die WRITE-Ausgabe nach der Position
eines im vorangegangenen DISPLAY-Statement ausgegebenen
Feldes ausrichten (wobei field der Name des Feldes
ist, nach dem die Ausrichtung erfolgen soll).
Im folgenden Beispiel wird die Position der vom
WRITE-Statement erzeugten Ausgabe mittels der Notation
T*JOB-TITLE nach der Position des Feldes JOB-TITLE
ausgerichtet:
** Example 'WRITEX05': WRITE (in combination with DISPLAY) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 JOB-TITLE 2 DEPT 2 CITY END-DEFINE * READ (3) VIEWEMP BY CITY STARTING FROM 'SAN FRANCISCO' DISPLAY NAME JOB-TITLE WRITE T*JOB-TITLE 'DEPT:' DEPT SKIP 1 END-READ END
Ausgabe des Programms WRITEX05:
Page 1 04-11-11 14:15:55
NAME CURRENT
POSITION
-------------------- -------------------------
KOLENCE MANAGER
DEPT: TECH05
GOSDEN ANALYST
DEPT: TECH10
WALLACE SALES PERSON
DEPT: SALE20
Wenn bei der Kombination von DISPLAY und
WRITE die vom
WRITE-Statement erzeugte Ausgabe über mehrere Zeilen und/oder
Spalten gehen soll, empfiehlt sich die Verwendung der Notation
x/y
(Zahl-Schrägstrich-Zahl), mit der Sie angeben können, in welcher Zeile/Spalte
etwas ausgegeben werden soll. Die Zahl vor dem Schrägstrich gibt die Zeile an,
die Zahl hinter dem Schrägstrich die Spalte.
Das folgende Programm veranschaulicht die Verwendung dieser Notation:
** Example 'WRITEX06': WRITE (with n/n)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
2 NAME
2 FIRST-NAME
2 MIDDLE-I
2 ADDRESS-LINE (1:1)
2 CITY
2 ZIP
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
DISPLAY 'NAME AND ADDRESS' NAME
WRITE 1/5 FIRST-NAME
1/30 MIDDLE-I
2/5 ADDRESS-LINE (1:1)
3/5 CITY
3/30 ZIP /
END-READ
END
Ausgabe des Programms WRITEX06:
Page 1 04-11-11 14:15:55
NAME AND ADDRESS
--------------------
RUBIN
SYLVIA L
2003 SARAZEN PLACE
NEW YORK 10036
WALLACE
MARY P
12248 LAUREL GLADE C
NEW YORK 10036
KELLOGG
HENRIETTA S
1001 JEFF RYAN DR.
NEWARK 19711
Standardmäßig gibt Natural die Felder nebeneinander aus.
Mit der VERT-Klausel
können Sie erreichen, dass bei einem DISPLAY-Statement die Werte der
verschiedenen Felder eines Datensatzes nicht nebeneinander, sondern
untereinander (in vertikaler Anordnung) ausgegeben werden.
Mit einer HORIZ-Klausel
können Sie dies im selben DISPLAY-Statement wieder rückgängig
machen und zur horizontalen Ausgabe zurückkehren.
Die Ausgabe von Spaltenüberschriften beim
DISPLAY
VERT wird über eine
AS-Klausel
gesteuert:
Ohne AS-Klausel werden keine Spaltenüberschriften
ausgegeben. Siehe Beispiel
1.
AS CAPTIONED bewirkt die Ausgabe der
Standard-Spaltenüberschriften. Siehe
Beispiel
2.
AS 'text' bewirkt, dass Text
als Spaltenüberschrift ausgegeben wird. Beachten Sie hierbei, dass ein
Schrägstrich (/) innerhalb von Text-Elementen eines
DISPLAY-Statements einen Zeilenvorschub bewirkt. Siehe
Beispiel 3.
AS 'text' CAPTIONED bewirkt, dass Text als
Spaltenüberschrift ausgegeben wird und außerdem die Standard-Spaltenüberschrift
in jeder Ausgabezeile dem jeweiligen Feldwert direkt vorangestellt wird. Siehe
Beispiel 4.
Das folgende Programm verwendet keine
AS-Klausel,
d.h. es werden keine Spaltenüberschriften ausgegeben.
** Example 'DISPLX09': DISPLAY (without column title) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 CITY END-DEFINE * READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK' DISPLAY VERT NAME FIRST-NAME / CITY SKIP 2 END-READ END
Ausgabe des Programms DISPLX09:
Beachten Sie, dass alle Feldwerte vertikal, d.h. untereinander, ausgegeben werden:
Page 1 04-11-11 14:15:54 RUBIN SYLVIA NEW YORK WALLACE MARY NEW YORK KELLOGG HENRIETTA NEWARK
Das folgende Programm enthält eine
VERT-
und eine HORIZ-Klausel,
die bewirken, dass einige Ausgaben vertikal und andere horizontal angeordnet
sind, sowie eine AS CAPTIONED-Klausel zur Ausgabe der
Standard-Spaltenüberschriften.
** Example 'DISPLX10': DISPLAY (with VERT as CAPTIONED and HORIZ clause)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
2 NAME
2 FIRST-NAME
2 CITY
2 JOB-TITLE
2 SALARY (1:1)
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
DISPLAY VERT AS CAPTIONED NAME FIRST-NAME
HORIZ JOB-TITLE SALARY (1:1)
SKIP 1
END-READ
END
Ausgabe des Programms DISPLX10:
Page 1 04-11-11 14:15:54
NAME CURRENT ANNUAL
FIRST-NAME POSITION SALARY
-------------------- ------------------------- ----------
RUBIN SECRETARY 17000
SYLVIA
WALLACE ANALYST 38000
MARY
KELLOGG DIRECTOR 52000
HENRIETTA
Das folgende Programm enthält eine AS
'text'-Klausel, die bewirkt, dass der
angegebene 'text' als
Spaltenüberschrift ausgegeben wird.
Anmerkung:
Ein Schrägstrich (/) in dem Textelement in einem
DISPLAY-Statement bewirkt einen Zeilenumbruch.
** Example 'DISPLX11': DISPLAY (with VERT AS 'text' clause)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
2 NAME
2 FIRST-NAME
2 CITY
2 JOB-TITLE
2 SALARY (1:1)
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
DISPLAY VERT AS 'EMPLOYEES' NAME FIRST-NAME
HORIZ JOB-TITLE SALARY (1:1)
SKIP 1
END-READ
END
Ausgabe des Programms DISPLX11:
Page 1 04-11-11 14:15:54
EMPLOYEES CURRENT ANNUAL
POSITION SALARY
-------------------- ------------------------- ----------
RUBIN SECRETARY 17000
SYLVIA
WALLACE ANALYST 38000
MARY
KELLOGG DIRECTOR 52000
HENRIETTA
Die Klausel AS 'text' CAPTIONED
bewirkt, dass der angegebene Text als Spaltenüberschrift angezeigt wird und
dass die Standard-Spaltenüberschriften direkt vor dem Feldwert in jeder
ausgegebenen Zeile angezeigt werden:
Das folgende Programm enthält eine AS
'text' CAPTIONED-Klausel.
** Example 'DISPLX12': DISPLAY (with VERT AS 'text' CAPTIONED clause)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
2 NAME
2 FIRST-NAME
2 CITY
2 JOB-TITLE
2 SALARY (1:1)
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
DISPLAY VERT AS 'EMPLOYEES' CAPTIONED NAME FIRST-NAME
HORIZ JOB-TITLE SALARY (1:1)
SKIP 1
END-READ
END
Ausgabe des Programms DISPLX12:
Diese Klausel bewirkt, dass die Standard-Spaltenüberschriften
(NAME und FIRST-NAME) vor den Feldwerten ausgegeben
werden:
Page 1 04-11-11 14:15:54
EMPLOYEES CURRENT ANNUAL
POSITION SALARY
------------------------------- ------------------------- ----------
NAME RUBIN SECRETARY 17000
FIRST-NAME SYLVIA
NAME WALLACE ANALYST 38000
FIRST-NAME MARY
NAME KELLOGG DIRECTOR 52000
FIRST-NAME HENRIETTA
Bei einer Kombination von
DISPLAY
VERT-Statement mit nachfolgendem
WRITE-Statement können
Sie mit der Notation P*field-name
die Feld-Ausgabe des WRITE-Statements nach der Zeilen und
Spalten-Position eines im DISPLAY VERT-Statements angegebenen
Feldes ausrichten.
Im folgenden Programm werden die Felder SALARY und
BONUS in der gleichen Spalte ausgegeben, SALARY in
jeder ersten Zeile, BONUS in jeder zweiten Zeile.
Der Text ***SALARY PLUS BONUS*** ist nach
SALARY ausgerichtet, d.h. der Text wird in der gleichen Spalte wie
SALARY und in der ersten Zeile ausgegeben. Der Text (IN US
DOLLARS) hingegen ist nach BONUS ausgerichtet; entsprechend
wird dieser Text in der gleichen Spalte wie BONUS und in der
zweiten Zeile ausgegeben.
** Example 'WRITEX07': WRITE (with P*field)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
2 CITY
2 NAME
2 JOB-TITLE
2 SALARY (1:1)
2 BONUS (1:1,1:1)
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'LOS ANGELES'
DISPLAY NAME JOB-TITLE
VERT AS 'INCOME' SALARY (1) BONUS (1,1)
WRITE P*SALARY '***SALARY PLUS BONUS***'
P*BONUS '(IN US DOLLARS)'
SKIP 1
END-READ
END
Ausgabe des Programms WRITEX07:
Page 1 04-11-11 14:15:55
NAME CURRENT INCOME
POSITION
-------------------- ------------------------- ----------
SMITH 0
0
***SALARY PLUS BONUS***
(IN US DOLLARS)
POORE JR SECRETARY 25000
0
***SALARY PLUS BONUS***
(IN US DOLLARS)
PREPARATA MANAGER 46000
9000
***SALARY PLUS BONUS***
(IN US DOLLARS)
Siehe das folgende Beispiel-Programm: