Vertikale Ausgabe von Feldwerten

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:


Vertikale Ausgaben erzeugen

Natural bietet Ihnen zwei Möglichkeiten, die verschiedenen Daten eines Datensatzes bei der Ausgabe untereinander anzuordnen:

  • mit einer Kombination von DISPLAY- und WRITE-Statement,

  • mit der VERT-Klausel im DISPLAY-Statement.

Vertikale Ausgabe durch Kombination von DISPLAY und WRITE

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

Tabulator-Notation — T*field

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

Positionierungsnotation x/y

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.

Die Positionierungsnotation bewirkt, dass das nächste Element in dem DISPLAY- oder WRITE-Statement x Zeilen unterhalb der letzten Ausgabe platziert wird, beginnend in Spalte y der Ausgabe.

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

DISPLAY VERT-Statement

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.

Beispiel 1 - DISPLAY VERT ohne AS-Klausel

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

Beispiel 2 - DISPLAY VERT AS CAPTIONED und HORIZ

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

Beispiel 3 - DISPLAY VERT AS 'text'

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

Beispiel 4 - DISPLAY VERT AS 'text' CAPTIONED

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

Tabulator-Notation P*field

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)

Weiteres Beispiel für DISPLAY VERT- mit WRITE-Statement

Siehe das folgende Beispiel-Programm im Kapitel Referenzierte Beispielprogramme: