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.

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: