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: