Vertikale Ausgabe von Feldwerten

#### Search Results

Search

# 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

- Vertikale Ausgabe durch Kombination von DISPLAY und WRITE

- Tabulator-Notation — T*field

- Positionierungsnotation x/y

- DISPLAY VERT-Statement

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

## 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:

- WRITEX10 - WRITE-Statement (mit nT, T*field und P*field)

### On this page

- Vertikale Ausgaben erzeugen
- Vertikale Ausgabe durch Kombination von DISPLAY und WRITE
- Tabulator-Notation — T*field
- Positionierungsnotation x/y
- DISPLAY VERT-Statement
- Weiteres Beispiel für DISPLAY VERT- mit WRITE-Statement