Statements DISPLAY und WRITE

#### Search Results

Search

# Statements DISPLAY und WRITE

Dieses Dokument beschreibt, wie Sie die Statements `DISPLAY` und `WRITE` zur Ausgabe von Daten und zur Steuerung der Art und Weise benutzen, in der die Informationen ausgegeben werden.

Folgende Themen werden behandelt:

- Das DISPLAY-Statement

- Das WRITE-Statement

- Beispiel für ein DISPLAY-Statement

- Beispiel für ein WRITE-Statement

- Spaltenabstand - der SF-Parameter und die Notation nX

- Tabulator-Notation nT

- Zeilenvorschub — die Schrägstrich-Notation (/)

- Weitere Beispiele für DISPLAY- und WRITE-Statements

## Das DISPLAY-Statement

Das `DISPLAY`-Statement erzeugt eine Ausgabe in Spaltenform; d.h. die Werte eines Feldes werden jeweils in einer Spalte untereinander ausgegeben. Wenn mehrere Felder ausgegeben werden, d.h. wenn mehrere Spalten erzeugt werden, werden diese Spalten nebeneinander ausgegeben.

Die Reihenfolge, in der die Felder ausgegeben werden, bestimmen Sie durch die Reihenfolge, in der Sie die Feldnamen im `DISPLAY`-Statement angeben.

Das `DISPLAY`-Statement im folgenden Programm zeigt für jede Person zuerst die Personalnummer (`PERSONNEL-ID`) an, dann den Nachnamen (`NAME`) und zuletzt die Tätigkeitsbezeichnung (`JOB-TITLE`):

    ** Example 'DISPLX01': DISPLAY
    ************************************************************************
    DEFINE DATA LOCAL
    1 VIEWEMP VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 NAME
      2 BIRTH
      2 JOB-TITLE
    END-DEFINE
    *
    READ (3) VIEWEMP BY BIRTH
      DISPLAY PERSONNEL-ID NAME JOB-TITLE
    END-READ
    END

Ausgabe des Programms `DISPLX01`:

    Page      1                                                  04-11-11  14:15:54

    PERSONNEL         NAME                  CURRENT
       ID                                  POSITION
    --------- -------------------- -------------------------

    30020013  GARRET               TYPIST
    30016112  TAILOR               WAREHOUSEMAN
    20017600  PIETSCH              SECRETARY

Um die Reihenfolge der Spalten in der Ausgabe zu ändern, ändern Sie einfach die Reihenfolge der Feldnamen im `DISPLAY`-Statement. Falls Sie beispielsweise zuerst die Nachnamen, dann die Tätigkeitsbezeichnungen und zuletzt die Personalnummern ausgeben möchten, müsste das entsprechende `DISPLAY`-Statement folgendermaßen aussehen:

    ** Example 'DISPLX02': DISPLAY
    ************************************************************************
    DEFINE DATA LOCAL
    1 VIEWEMP VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 NAME
      2 BIRTH
      2 JOB-TITLE
    END-DEFINE
    *
    READ (3) VIEWEMP BY BIRTH
      DISPLAY NAME JOB-TITLE PERSONNEL-ID
    END-READ
    END

Ausgabe des Programms `DISPLX02`:

    Page      1                                                  04-11-11  14:15:54

            NAME                  CURRENT          PERSONNEL
                                 POSITION             ID
    -------------------- ------------------------- ---------

    GARRET               TYPIST                    30020013
    TAILOR               WAREHOUSEMAN              30016112
    PIETSCH              SECRETARY                 20017600

Über jeder Spalte wird eine Spaltenüberschrift ausgegeben. Verschiedene Möglichkeiten, die Ausgabe dieser Überschriften zu beeinflussen, sind weiter unten im Abschnitt Spaltenüberschriften beschrieben.

## Das WRITE-Statement

Das `WRITE`-Statement wird zur Erzeugung unformatierter (d.h. nicht in Spalten unterteilter) Ausgaben benutzt. Im Gegensatz zum `DISPLAY`-Statement gilt für das `WRITE`-Statement Folgendes:

- Es führt, wenn nötig, einen automatischen Zeilenvorschub aus; d.h. ein Feld oder Textelement, das nicht mehr in eine Zeile passt, wird automatisch in der nächsten Zeile ausgegeben.

- Es erzeugt keine Spaltenüberschriften.

- Bei Werten eines multiplen Feldes werden diese nicht untereinander sondern nebeneinander ausgegeben.

Die beiden Beispielprogramme auf der folgenden Seite veranschaulichen die grundsätzlichen Unterschiede zwischen `DISPLAY`- und `WRITE`-Statement.

Sie können beide Statements auch miteinander kombinieren; diese Möglichkeit ist unter Vertikale Ausgabe von Feldwerten im Abschnitt Vertikale Ausgabe durch Kombination von DISPLAY und WRITE beschrieben.

## Beispiel für ein DISPLAY-Statement

    ** Example 'DISPLX03': DISPLAY
    ************************************************************************
    DEFINE DATA LOCAL
    1 VIEWEMP VIEW OF EMPLOYEES
      2 NAME
      2 FIRST-NAME
      2 SALARY (1:3)
    END-DEFINE
    *
    READ (2) VIEWEMP BY NAME STARTING FROM 'JONES'
      DISPLAY NAME FIRST-NAME SALARY (1:3)
    END-READ
    END

Ausgabe des Programms `DISPLX03`:

    Page      1                                                  04-11-11  14:15:54

            NAME              FIRST-NAME        ANNUAL
                                                SALARY
    -------------------- -------------------- ----------

    JONES                VIRGINIA                  46000
                                                   42300
                                                   39300
    JONES                MARSHA                    50000
                                                   46000
                                                   42700

## Beispiel für ein WRITE-Statement

    ** Example 'WRITEX01': WRITE
    ************************************************************************
    DEFINE DATA LOCAL
    1 VIEWEMP VIEW OF EMPLOYEES
      2 NAME
      2 FIRST-NAME
      2 SALARY (1:3)
    END-DEFINE
    *
    READ (2) VIEWEMP BY NAME STARTING FROM 'JONES'
      WRITE NAME FIRST-NAME SALARY (1:3)
    END-READ
    END

Ausgabe des Programms `WRITEX01`:

    Page      1                                                  04-11-11  14:15:55

    JONES                VIRGINIA                  46000      42300      39300
    JONES                MARSHA                    50000      46000      42700

## Spaltenabstand - der SF-Parameter und die Notation nX

Standardmäßig sind die mit einem `DISPLAY`-Statement ausgegebenen Spalten jeweils durch eine Leerstelle voneinander getrennt.

Mit dem Session-Parameter `SF` (Spacing Factor) können Sie angeben, wieviele Leerstellen zwischen den Spalten einer `DISPLAY`-Ausgabe eingefügt werden sollen. Sie können die Anzahl der Leerstellen auf einen Wert von 1 bis 30 setzen.

Der Parameter kann in einem `FORMAT`-Statement angegeben werden und gilt dann für den ganzen Report. Oder er kann in einem `DISPLAY`-Statement angegeben werden, und zwar auf Statement-Ebene, aber nicht auf Element-Ebene.

Mit der Notation `nX` können Sie die Anzahl der Leerstellen (n) zwischen zwei bestimmten Spalten angeben. Eine `nX`-Notation hat Vorrang vor einer `SF`-Parameterangabe.

Beispiel:

    ** Example 'DISPLX04': DISPLAY (with nX)
    ************************************************************************
    DEFINE DATA LOCAL
    1 VIEWEMP VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 NAME
      2 BIRTH
      2 JOB-TITLE
    END-DEFINE
    *
    FORMAT SF=3
    READ (3) VIEWEMP BY BIRTH
      DISPLAY PERSONNEL-ID NAME 5X JOB-TITLE
    END-READ
    END

Ausgabe des Programms `DISPLX04`:

Das obige Beispielprogramm erzeugt folgende Ausgabe, wobei die ersten beiden Spalten aufgrund des `SF`-Parameters im `FORMAT`-Statement durch 3 Leerstellen voneinander getrennt sind, während die zweite und dritte Spalte aufgrund der Notation `5X` im `DISPLAY`-Statement durch 5 Leerstellen voneinander getrennt sind:

    Page      1                                                  04-11-11  14:15:54

    PERSONNEL           NAME                      CURRENT
       ID                                        POSITION
    ---------   --------------------     -------------------------

    30020013    GARRET                   TYPIST
    30016112    TAILOR                   WAREHOUSEMAN
    20017600    PIETSCH                  SECRETARY

Die Notation `nX` kann auch in einem `WRITE`-Statement verwendet werden, um Leerstellen zwischen Ausgabe-Elementen einzufügen:

    WRITE PERSONNEL-ID 5X NAME 3X JOB-TITLE

Mit dem obigen Statement werden zwischen den Feldern `PERSONNEL-ID` und `NAME` 5 Leerstellen und zwischen `NAME` und `JOB-TITLE` 3 Leerstellen eingefügt.

## Tabulator-Notation nT

Mit der Tabulator-Notation `nT`, die im `DISPLAY`- und im `WRITE`-Statement verwendet werden kann, können Sie die Spalte n bestimmen, ab der ein Ausgabe-Element ausgegeben werden soll.

    ** Example 'DISPLX05': DISPLAY (with nT)
    ************************************************************************
    DEFINE DATA LOCAL
    1 VIEWEMP VIEW OF EMPLOYEES
      2 NAME
      2 FIRST-NAME
    END-DEFINE
    *
    READ (3) VIEWEMP BY NAME STARTING FROM 'JONES'
      DISPLAY 5T NAME 30T FIRST-NAME
    END-READ
    END

Ausgabe des Programms `DISPLX05`:

Das obige Programm erzeugt folgende Ausgabe, wobei das Feld `NAME` ab Spalte 5 (vom linken Seitenrand aus gezählt) und das Feld `FIRST-NAME` ab Spalte 30 ausgegeben wird:

    Page      1                                                  04-11-11  14:15:54

                NAME                  FIRST-NAME
        --------------------     --------------------

        JONES                    VIRGINIA
        JONES                    MARSHA
        JONES                    ROBERT

## Zeilenvorschub — die Schrägstrich-Notation (/)

Mit einem Schrägstrich (/) in einem `DISPLAY`- oder `WRITE`-Statement bewirken Sie einen Zeilenvorschub.

- Bei einem `DISPLAY`-Statement bewirkt ein Schrägstrich einen Zeilenvorschub zwischen Feldern und innerhalb von Text.

- Bei einem `WRITE`-Statement bewirkt ein Schrägstrich nur zwischen Feldern einen Zeilenvorschub; innerhalb von Text wird er wie ein gewöhnliches Textzeichen behandelt.

Zwischen Feldern muss dem Schrägstrich je ein Leerzeichen vor- und nachgestellt werden.

Für mehrfachen Zeilenvorschub geben Sie mehrere Schrägstriche an.

#### Beispiel 1 - Zeilenvorschub bei einem DISPLAY-Statement:

    ** Example 'DISPLX06': DISPLAY (with slash '/')
    ************************************************************************
    DEFINE DATA LOCAL
    1 VIEWEMP VIEW OF EMPLOYEES
      2 NAME
      2 FIRST-NAME
      2 DEPARTMENT
    END-DEFINE
    *
    READ (3) VIEWEMP BY NAME STARTING FROM 'JONES'
      DISPLAY NAME / FIRST-NAME 'DEPART-/MENT' DEPARTMENT
    END-READ
    END

Ausgabe des Programms `DISPLX06`:

Das obige `DISPLAY`-Statement erzeugt einen Zeilenvorschub nach jedem Wert des Feldes `NAME` sowie innerhalb des Textes `DEPART-MENT`:

    Page      1                                                  04-11-11  14:15:54

            NAME         DEPART-
         FIRST-NAME       MENT
    -------------------- -------

    JONES                SALE
    VIRGINIA
    JONES                MGMT
    MARSHA
    JONES                TECH
    ROBERT

#### Beispiel 2 - Zeilenvorschub bei einem WRITE-Statement:

    ** Example 'WRITEX02': WRITE (with line advance)
    ************************************************************************
    DEFINE DATA LOCAL
    1 VIEWEMP VIEW OF EMPLOYEES
      2 NAME
      2 FIRST-NAME
      2 DEPARTMENT
    END-DEFINE
    *
    READ (3) VIEWEMP BY NAME STARTING FROM 'JONES'
      WRITE NAME / FIRST-NAME 'DEPART-/MENT' DEPARTMENT //
    END-READ
    END

Ausgabe des Programms `WRITEX02`:

Das obige `WRITE`-Statement erzeugt einen Zeilenvorschub nach jedem Wert des Feldes NAME und einen doppelten Zeilenvorschub nach jedem Wert des Feldes `DEPARTMENT`, aber keinen innerhalb des Textes `DEPART-/MENT`:

    Page      1                                                  04-11-11  14:15:55

    JONES
    VIRGINIA             DEPART-/MENT SALE

    JONES
    MARSHA               DEPART-/MENT MGMT

    JONES
    ROBERT               DEPART-/MENT TECH

#### Beispiel 3 - Zeilenvorschub in DISPLAY- und WRITE-Statements:

    ** Example 'DISPLX21': DISPLAY (usage of slash '/' in DISPLAY and WRITE)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 CITY
      2 NAME
      2 FIRST-NAME
      2 ADDRESS-LINE (1)
    END-DEFINE
    *
    WRITE TITLE LEFT JUSTIFIED UNDERLINED
           *TIME
       5X  'PEOPLE LIVING IN SALT LAKE CITY'
       21X 'PAGE:' *PAGE-NUMBER /
       15X 'AS OF' *DAT4E //
    *
    WRITE TRAILER UNDERLINED 'REGISTER OF' / 'SALT LAKE CITY'
    *
    READ (2) EMPLOY-VIEW WITH CITY = 'SALT LAKE CITY'
      DISPLAY  NAME /
               FIRST-NAME
               'HOME/CITY' CITY
               'STREET/OR BOX NO.' ADDRESS-LINE (1)
      SKIP 1
    END-READ
    END

Ausgabe des Programms `DISPLX21`:

    14:15:54.6     PEOPLE LIVING IN SALT LAKE CITY                     PAGE:      1
                   AS OF 11/11/2004

    -------------------------------------------------------------------------------
            NAME                 HOME                STREET
         FIRST-NAME              CITY              OR BOX NO.
    -------------------- -------------------- --------------------

    ANDERSON             SALT LAKE CITY       3701 S. GEORGE MASON
    JENNY

    SAMUELSON            SALT LAKE CITY       7610 W. 86TH STREET
    MARTIN

                                      REGISTER OF
                                    SALT LAKE CITY
    -------------------------------------------------------------------------------

## Weitere Beispiele für DISPLAY- und WRITE-Statements

Siehe die folgenden Beispiel-Programme:

- DISPLX13 - DISPLAY-Statement (zum Vergleich mit WRITEX08 mit WRITE)

- WRITEX08 - WRITE-Statement (zum Vergleich mit DISPLX13 mit DISPLAY)

- DISPLX14 - DISPLAY-Statement (mit AL, SF und nX)

- WRITEX09 - WRITE-Statement (in Kombination mit AT END OF DATA)

### On this page

- Das DISPLAY-Statement
- Das WRITE-Statement
- Beispiel für ein DISPLAY-Statement
- Beispiel für ein WRITE-Statement
- Spaltenabstand - der SF-Parameter und die Notation nX
- Tabulator-Notation nT
- Zeilenvorschub — die Schrägstrich-Notation (/)
- Weitere Beispiele für DISPLAY- und WRITE-Statements