WRITE

#### Search Results

Search

# WRITE

Dieses Dokument behandelt folgende Themen:

- Funktion WRITE

- Syntax 1 — Dynamische Formatierung

- Syntax 1 − Beschreibung

- Syntax 2 — Vordefinierte Form/Map benutzen

- Syntax 2 — Beschreibung

- Beispiele WRITE

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Verwandte Statements: `AT END OF PAGE` | `AT TOP OF PAGE` | `CLOSE PRINTER` | `DEFINE PRINTER` | `DISPLAY` | `EJECT` | `FORMAT` | `NEWPAGE` | `PRINT` | `SKIP` | `SUSPEND IDENTICAL SUPPRESS` | `WRITE TITLE` | `WRITE TRAILER`

Gehört zur Funktionsgruppe: Erstellen von Ausgabe-Reports

## Funktion WRITE

Das Statement `WRITE` dient dazu, Ausgaben in Freiformat zu erzeugen, die nicht bereits vorformatiert sind (vgl. `DISPLAY`-Statement).

Das `WRITE`-Statement unterscheidet sich vom `DISPLAY`-Statement in folgenden Punkten:

- Passt ein Feld bzw. Textelement nicht mehr in eine Zeile, wird es automatisch in der nächsten Zeile ausgegeben. Ein Feld bzw. Textelement wird nicht auf zwei Zeilen verteilt.

- Es werden keine Standard-Spaltenüberschriften erzeugt. Die Ausgabelänge der Felder richtet sich nach der Länge der tatsächlich ausgegebenen Feldwerte.

- Mehrere Werte/Ausprägungen eines Arrays werden nicht untereinander sondern nebeneinander ausgegeben.

Siehe auch die folgenden Themen im Leitfaden zur Programmierung:

- Steuerung der Ausgabe von Daten

- Statements DISPLAY und WRITE

- Index-Notation für multiple Felder und Periodengruppen

- Beispiel für DISPLAY VERT mit WRITE-Statement

- Layout einer Ausgabeseite

## Syntax 1 — Dynamische Formatierung

`WRITE` [(rep)] [`NOTITLE`] [`NOHDR`]
| [(statement-parameters)] |  |  |  |  |  |
|  |  | n `X` |  |  | 'text' [(attributes)] |  |
n `T` | 'c'(n) [(attributes)]
x/y | ['='] operand1 [(parameters)]
`T*`field-name |  |  |
`P*`field-name |  |  |
/ |  |  |

Erläuterung der in dem Syntax-Diagramm verwendeten Symbole siehe Abschnitt Syntax-Symbole.

## Syntax 1 − Beschreibung

Operanden-Definitionstabelle:

Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition
--- | --- | --- | --- | ---
operand1 |  | S | A | G | N | A | U | N | P | I | F | B | D | T | L |  | G | O | ja | nein

Syntax-Element-Beschreibung:

Syntax-Element | Beschreibung
--- | ---
`(rep)` | Report-Spezifikation: Mit der Notation `(rep)` kann ein bestimmter Report angegeben werden, wenn ein Programm mehrere Ausgaben erzeugen soll. Es kann ein Wert von 0 bis 31 oder ein logischer Name, der mit einem `DEFINE PRINTER`-Statement zugewiesen wurde, angegeben werden. Wenn `(rep)` nicht angegeben wird, bezieht sich das `WRITE`-Statement auf den ersten Report (Report 0). Wenn diese Druckdatei für Natural als PC definiert wird, wird der Report auf den PC heruntergeladen, siehe Beispiel 6. Informationen, wie Sie das Format eines mit Natural erstellten Ausgabe-Reports steuern, finden Sie im Abschnitt Steuerung der Ausgabe von Daten im Leitfaden zur Programmierung.
- `NOTITLE` | Unterdrückung der Standard-Kopfzeile: Natural generiert für jede über ein `WRITE`-Statement ausgegebene Seite eine Kopfzeile. Diese Kopfzeile enthält die laufende Seitennummer, Uhrzeit und Datum. Die Uhrzeit wird zu Beginn der Programmausführung gesetzt. Die Ausgabe dieser Standard-Kopfzeile kann durch Angabe des Schlüsselwortes `NOTITLE` oder durch ein `WRITE TITLE`-Statement unterdrückt werden. Beispiele: Ausgabe einer Standard-Kopfzeile:
      WRITE NAME
- Ausgabe einer eigenen Kopfzeile:
      WRITE NAME WRITE TITLE 'user-title'
- Ausgabe ohne Kopfzeile:
      WRITE NOTITLE NAME
Anmerkungen: Wenn die `NOTITLE`-Option verwendet wird, gilt sie für alle `DISPLAY`-, `PRINT`- und `WRITE`-Statements im selben Objekt, die Daten in denselben Report schreiben. Natural prüft, wann ein Seitenvorschub erforderlich ist, bevor ein `WRITE`-Statement ausgeführt wird. Während der Ausführung eines `WRITE`-Statements werden keine neuen Seiten mit Kopf- oder Fußzeilen generiert.
`NOHDR` | Unterdrückung der Spaltenüberschrift: Das `WRITE`-Statement selbst erzeugt keine Spaltenüberschriften. Wenn Sie allerdings das `WRITE`-Statement zusammen mit einem `DISPLAY`-Statement verwenden, können Sie mit der Option `NOHDR` des `WRITE`-Statements die vom `DISPLAY`-Statement generierten Spaltenüberschriften unterdrücken. Die `NOHDR`-Option ist nur relevant, wenn das `WRITE`-Statement nach einem `DISPLAY`-Statement steht, die Ausgabe sich insgesamt über mehr als eine Seite erstreckt und die Ausführung des `WRITE`-Statements zur Ausgabe einer neuen Seite führt. Ohne `NOHDR`-Option würden auf dieser neuen Seite die `DISPLAY`-Spaltenüberschriften ausgegeben, mit `NOHDR` werden sie dort nicht ausgegeben.
`statement-parameters` | Parameter-Definition auf Statement-Ebene: Unmittelbar nach dem `WRITE`-Statement können Sie auf Statement-Ebene in Klammern einzelne Session-Parameter angeben. Die Werte dieser Parameter haben dann für das betreffende Statement vor auf übergeordneter Ebene mittels `GLOBALS`-Kommando, `SET GLOBALS`- (nur im Reporting Mode) oder `FORMAT`-Statement gesetzten Parameterwerten. Wenn Sie mehrere Parameter angeben, müssen Sie sie durch ein oder mehrere Leerzeichen voneinander trennen. Eine einzelne Parameterangabe darf sich nicht über zwei Quellcode-Zeilen erstrecken. Anmerkung Die hier gültigen Parameter-Einstellungen kommen nur für Variablen-Felder in Betracht und haben keine Auswirkungen auf Text-Konstanten. Wenn Sie Feldattribute für eine Text-Konstante setzen möchten, dann müssen diese explizit für dieses Element gesetzt werden; siehe Parameter-Definition auf Element-Ebene. Siehe auch: Liste der Parameter Beispiel für die Benutzung von Parametern auf Statement- und Element-Ebene Beispiel 5 − WRITE-Statement mit ’=’ und Parametern auf Statement/Element-Ebene.
`nX, nT, x/y, T*field-name, P*field-name, '=', /,` | Notation Feld-Positionierung: Siehe Feld-Positionierung im Abschnitt Formatierung der Ausgabe.
`'text', 'c'(n), attributes, operand1, parameters` | Text/Attributzuweisung: Siehe Text-, Attribut-Zuweisung, Ausgabe-Elemente im Abschnitt Formatierung der Ausgabe.

### Liste der Parameter bei WRITE

Parameter, die mit dem WRITE-Statement angegeben werden können: | Spezifikation
--- | ---
S = auf Statement-Ebene
E =auf Element-Ebene
AD | Attribute Definition | SE
AL | Alphanumeric Length for Output | SE
BX | Box Definition | SE
CD | Color Definition | SE
CV | Control Variable | SE
DF | Date Format | SE
DL | Display Length for Output | SE
DY | Dynamic Attributes | SE
EM | Edit Mask | SE
EMU | Unicode Edit Mask | E
FL | Floating Point Mantissa Length | SE
IS | Identical Suppress | SE
LS | Line Size | S
MC | Multiple-Value Field Count | S
MP | Maximum Number of Pages of a Report | S
NL | Numeric Length for Output | SE
PC | Periodic Group Count | S
PM | Print Mode | SE
PS | Page Size * | S
SG | Sign Position | SE
UC | Underlining Character | S
ZP | Zero Printing | SE

* Wenn die Anzahl der Ausprägungen eines Arrays den `PS`-Wert überschreitet, wird ein NAT0303-Fehler ausgegeben.

Ausführliche Beschreibungen der oben genannten Session-Parameter finden Sie in der Parameter-Referenz.

Siehe auch die folgenden Themen im Leitfaden zur Programmierung:

- Spaltenüberschriften zentrieren − der HC-Parameter

- Breite von Spaltenüberschriften − der HW-Parameter

- Füllzeichen für Überschriften − die Parameter FC und GC

- Unterstreichungszeichen für Überschriften − der UC-Parameter

### Beispiel für die Parameter-Benutzung auf Statement/Element-Ebene

    DEFINE DATA LOCAL
    1 VARI (A4)     INIT <'1234'>                  /*     Output
    END-DEFINE                                     /*    Produced
    *                                              /*    ---------
    WRITE           'Text'           VARI          /*    Text 1234
    WRITE (PM=I)    'Text'           VARI          /*    Text 4321
    WRITE           'Text' (PM=I)    VARI (PM=I)   /*    txeT 4321
    WRITE           'Text' (PM=I)    VARI          /*    txeT 1234
    END

Siehe auch Beispiel 5 − WRITE-Statement mit ‘=’ und Parametern auf Statement/Element-Ebene.

### Formatierung der Ausgabe

| n `X` |  |  |  |  |  |
n `T` |  |  |  |
x/y |  |  | 'text' [(attributes)] |
`T*`field-name |  | 'c' (n) [(attributes)]
`P*`field-name |  | [`'='`] operand1 [(parameters )]
/ |  |  |  |

Erläuterung der in dem Syntax-Diagramm verwendeten Symbole siehe Abschnitt Syntax-Symbole.

#### Feld-Positionierung

Syntax-Element | Beschreibung
--- | ---
`nX` | Spaltenabstand: Mit der `nX` Notation können Sie zwischen zwei Feldern `n` Leerzeichen einfügen. `n` darf nicht 0 sein. Beispiel:
    WRITE NAME 5X SALARY
Siehe auch: Beispiel 2 − WRITE-Statement mit nX-, nT-Notation (weiter unten) Spaltenabstand − der SF-Parameter und die Notation nX (im Leitfaden zur Programmierung)
`nT` | Tabulator-Einstellungen: Mit der Notation `nT` setzen Sie Tabulatoren, d.h. die Ausgabe eines Feldes beginnt ab Spalte n. Ein Tabulator, der bereits durch eine andere Ausgabe belegt ist, darf nicht gesetzt werden. In dem folgenden Beispiel wird das Feld `NAME` ab Spalte 25 und `SALARY` ab Spalte 50 ausgegeben:
    WRITE 25T NAME 50T SALARY
Siehe auch: Beispiel 2 − WRITE-Statement mit nX-, nT-Notation (weiter unten) Tabulator-Notation nT (im Leitfaden zur Programmierung)
`x/y` | x/y-Positionierung:: Mit der Notation `x/y` erreichen Sie, dass ein Feld `x` Zeilen unter der Ausgabe des letzten Statements, und zwar ab Spalte `y` ausgegeben wird. `y` darf nicht 0 sein. Eine Spalte, die in derselben Ausgabezeile bereits belegt ist, darf nicht angegeben werden. Siehe auch Positionierungsnotation x/y (im Leitfaden zur Programmierung).
`T*field-name` | Feldbezogene Positionierung: Mit der Notation `T*` können Sie die `WRITE`-Ausgabe nach der Position eines in einem vorangegangenen `DISPLAY`-Statement ausgegebenen Feldes (field-name) ausrichten. Es ist nicht erlaubt, auf eine bereits belegte Position zu positionieren. Siehe auch: Beispiel 3 − WRITE-Statement mit Notation T* (weiter unten) Tabulator-Notation T*field (im Leitfaden zur Programmierung)
`P*field-name` | Feld- und zeilenbezogene Positionierung: Mit der Notation `P*` können Sie die `WRITE`-Ausgabe nach der Position und Zeile eines in einem vorangegangenen `DISPLAY`-Statement ausgegebenen Feldes (field-name) ausrichten. Diese Notation wird vor allem nach `DISPLAY VERTICALLY`-Statements verwendet. Es ist nicht erlaubt, auf eine bereits belegte Position zu positionieren. Siehe auch: Beispiel 4 − WRITE-Statement mit Notation P* (weiter unten) Tabulator-Notation P*field (im Leitfaden zur Programmierung)
`'='` | Feldinhalt hinter Feldüberschrift: Ein Gleichheitszeichen in Apostrophen (`'='`) vor einem Feld bewirkt, dass vor dem Feldwert die (im `DEFINE DATA`-Statement oder im DDM) für das Feld definierte Überschrift ausgegeben wird. Siehe auch: WRITE-Statement mit '=', 'text', '/' WRITE-Statement mit '=' und Parametern auf Statement/Element-Ebene
`/` | Zeilenvorschub − Schrägstrich-Notation: Ein Schrägstrich (/) zwischen Feldern/Textelementen bewirkt einen Zeilenvorschub, d.h. die nachfolgenden Felder/ Textelemente werden in der nächsten Zeile ausgegeben. Beispiel:
    WRITE NAME / SALARY
Für mehrfachen Zeilenvorschub geben Sie mehrere Schrägstriche an. Siehe auch: WRITE-Statement mit '=', 'text', '/' (weiter unten) Zeilenvorschub − die Schrägstrich-Notation (im Leitfaden zur Programmierung) Beispiel für Zeilenvorschub in WRITE-Statement (im Leitfaden zur Programmierung)

#### Text-, Attribut-Zuweisung, Ausgabe-Elemente

Syntax-Element | Beschreibung
--- | ---
`'text'` | Text-Zuweisung: Der in Apostrophen stehende Text wird ausgegeben. Beispiel:
    WRITE 'EMPLOYEE' NAME 'MARITAL/STATUS' MAR-STAT
Siehe auch: WRITE-Statement mit '=', 'text', '/' (weiter unten) Text Notation, Mit einem Statement zu benutzenden Text definieren - die 'text'-Notation (im Leitfaden zur Programmierung)
`'c'(n)` | Zeichen-Wiederholung: Das in Apostrophen stehende Zeichen (character) wird n-mal unmittelbar vor dem Feldwert ausgegeben. Zum Beispiel:
    WRITE '*' (5) '=' NAME
führt zur Ausgabe von
    ***** SMITH
Siehe auch Text-Notation, Vor einem Feldwert n mal anzuzeigendes Zeichen definieren - die 'c'(n)-Notation (im Leitfaden zur Programmierung).
`attributes` | Felddarstellung und Farbattribute: Es ist möglich, den auszugebenden Feldern/Texten Anzeige- und Farbattribute zuzuordnen. Diese Attribute und die zu benutzende Syntax sind im Abschnitt Ausgabeattribute weiter unten beschrieben. Beispiele:
    WRITE 'TEXT' (BGR)
    WRITE 'TEXT' (B)
    WRITE 'TEXT' (BBLC)
`operand1` | Name des auszugebenden Feldes: operand1 gibt das Feld an, dessen Inhalt an diese Stelle geschrieben wird. Arrays mit Bereichen, die es ermöglichen, die Anzahl der Ausprägungen zur Ausführungszeit zu variieren, dürfen nicht angegeben werden.
`parameters` | Parameter-Definition auf Element-Ebene: Unmittelbar nach operand1 können Sie auf Element-Ebene in Klammern einzelne Session-Parameter setzen. Diese Parameterwerte haben dann für das betreffende Feld Vorrang vor den mit einem `GLOBALS`-Kommando, `SET GLOBALS`- (nur im Reporting Mode) oder `FORMAT`-Statement oder auf Statement-Ebene gesetzten Parameterwerten. Wenn Sie mehrere Parameter angeben, müssen Sie sie durch ein oder mehrere Leerzeichen voneinander trennen. Eine Parameterangabe darf sich jeweils nicht über zwei Quellcode-Zeilen erstrecken. Siehe auch: Liste der Parameter Beispiel für die Parameter-Benutzung auf Statement- und Element-Ebene

#### Ausgabeattribute

Sie können den ausgegebenen Feldern/Textelementen Anzeige- und Farbattribute zuordnen. Sie können die folgenden Attribute angeben:

|  | `AD`=AD-value `BX`=BX-value `CD`=CD-value `PM`=PM-value |  |
| AD-value CD-value |

Die möglichen Parameterwerte sind in der Parameter-Referenz aufgeführt.

- AD - Attribute Definition, Abschnitt Feldanzeige

- CD - Color Definition

- BX - Box Definition

- PM - Print Mode

Anmerkung
Der Compiler akzeptiert tatsächlich mehr als einem Attributwert für ein Ausgabefeld. Zum Beispiel können Sie Folgendes angeben: `AD=BDI`. In solch einem Fall gilt allerdings nur der letzte Wert. Im hier gezeigten Beispiel erhält nur der Wert `I` Gültigkeit, und das Ausgabefeld wird intensiviert (hell hervorgehoben) angezeigt.

## Syntax 2 — Vordefinierte Form/Map benutzen

`WRITE` [(rep)] [`NOTITLE`] [`NOHDR`] [`USING` ] |  | `FORM` |  | operand1 [operand2 ]
`MAP`

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

## Syntax 2 — Beschreibung

Operanden-Definitionstabelle:

Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition
--- | --- | --- | --- | ---
operand1 | C | S |  |  |  | A |  |  |  |  |  |  |  |  |  |  |  |  | nein | nein
operand2 |  | S | A | G | N | A | U | N | P | I | F | B | D | T | L |  |  |  | ja | nein

Syntax-Element-Beschreibung:

Syntax-Element | Beschreibung
--- | ---
`FORM/MAP` | Benutzung des vordefinierten Form/Map-Layouts: Diese Option verwenden Sie, wenn Sie für die Ausgabe eine (mit dem Natural-Masken-Editor (Map Editor) erstellte) Maske (Map) verwenden wollen. `WRITE USING MAP` bedeutet nicht, dass jedesmal, wenn die Maske ausgegeben wird, automatisch eine neue Seite ausgegeben wird. Für den Zeilenabstand muss der Parameter `LS` um ein Byte größer gesetzt werden als die Zeilenlänge der Map.
`operand1` | Form/Map-Name: operand1 ist der Name der zu verwendenden Map.
`operand2` | Auszugebendes Feld: operand2 ist der Name des auszugebenden Feldes bzw. der auszugebenden Felder. Ist operand1 eine Konstante und wird operand2 nicht angegeben, so werden bei der Kompilierung die Felder aus der Map-Quellcode übernommen. Die Felder müssen bezüglich Anzahl, Reihenfolge, Format, Länge und (bei Arrays) Anzahl der Ausprägungen mit den Feldern in dem referenzierten Layout bzw. der referenzierten Map übereinstimmen, andernfalls tritt ein Fehler auf.
`NOTITLE/NOHDR` | Unterdrückung der Kopfzeile/Spaltenüberschrift: Die Optionen `NOTITLE` und `NOHDR` sind unter Syntax 1 des `WRITE`-Statements beschrieben.

## Beispiele WRITE

- Beispiel 1 − WRITE-Statement mit '=', 'text', '/'

- Beispiel 2 − WRITE-Statement mit nX-, nT-Notation

- Beispiel 3 − WRITE-Statement mit Notation T*

- Beispiel 4 − WRITE-Statement mit Notation P*

- Beispiel 5 − WRITE-Statement mit '=' und Parametern auf Statement/Element-Ebene

- Beispiel 6 − Report-Spezifikation mit für Natural als PC definierter Ausgabedatei

### Beispiel 1 − WRITE-Statement mit '=', 'text', '/'

    ** Example 'WRTEX1': WRITE (with '=', 'text', '/')
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPL-VIEW VIEW OF EMPLOYEES
      2 FULL-NAME
        3 FIRST-NAME
        3 MIDDLE-I
        3 NAME
      2 CITY
      2 COUNTRY
    END-DEFINE
    *
    LIMIT 1
    READ EMPL-VIEW BY NAME
      /*
      WRITE NOTITLE
            '=' NAME '=' FIRST-NAME '=' MIDDLE-I //
            'L O C A T I O N' /
            'CITY:   ' CITY    /
            'COUNTRY:' COUNTRY //
      /*
    END-READ
    END

Ausgabe des Programms `WRTEX1`:

    NAME: ABELLAN              FIRST-NAME: KEPA                 MIDDLE-I:

    L O C A T I O N
    CITY:    MADRID
    COUNTRY: E

### Beispiel 2 − WRITE-Statement mit nX-, nT-Notation

    ** Example 'WRTEX2': WRITE (with nX, nT notation)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPL-VIEW VIEW OF EMPLOYEES
      2 NAME
      2 JOB-TITLE
    END-DEFINE
    *
    LIMIT 4
    READ EMPL-VIEW BY NAME
      WRITE NOTITLE 5X NAME 50T JOB-TITLE
    END-READ
    END

Ausgabe des Programms `WRTEX2`:

    ABELLAN                                     MAQUINISTA
    ACHIESON                                    DATA BASE ADMINISTRATOR
    ADAM                                        CHEF DE SERVICE
    ADKINSON                                    PROGRAMMER

### Beispiel 3 − WRITE-Statement mit Notation T*

    ** Example 'WRTEX3': WRITE (with T* notation)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPL-VIEW VIEW OF EMPLOYEES
      2 NAME
      2 CITY
      2 SALARY (1)
    END-DEFINE
    *
    LIMIT 5
    READ EMPL-VIEW BY CITY STARTING FROM 'ALBU'
      DISPLAY NOTITLE CITY NAME SALARY (1)
      AT BREAK CITY
        /*
        WRITE / 'CITY AVERAGE:' T*SALARY (1) AVER(SALARY(1)) //
        /*
      END-BREAK
    END-READ
    END

Ausgabe des Programms `WRTEX3`:

            CITY                 NAME           ANNUAL
                                                SALARY
    -------------------- -------------------- ----------

    ALBUQUERQUE          HAMMOND                   22000
    ALBUQUERQUE          ROLLING                   34000
    ALBUQUERQUE          FREEMAN                   34000
    ALBUQUERQUE          LINCOLN                   41000

    CITY AVERAGE:                                  32750

    ALFRETON             GOLDBERG                   4800

    CITY AVERAGE:                                   4800

### Beispiel 4 − WRITE-Statement mit Notation P*

    ** Example 'WRTEX4': WRITE (with P* notation)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPL-VIEW VIEW OF EMPLOYEES
      2 NAME
      2 CITY
      2 BIRTH
      2 SALARY (1)
    END-DEFINE
    *
    LIMIT 3
    READ EMPL-VIEW BY CITY FROM 'N'
      DISPLAY NOTITLE NAME CITY
              VERT AS 'BIRTH/SALARY' BIRTH (EM=YYYY-MM-DD) SALARY (1)
      SKIP 1
      AT BREAK CITY
        WRITE  / 'CITY AVERAGE' P*SALARY (1) AVER(SALARY (1)) //
      END-BREAK
    END-READ
    END

Ausgabe des Programms `WRTEX4`:

            NAME                 CITY           BIRTH
                                                SALARY
    -------------------- -------------------- ----------

    WILCOX               NASHVILLE            1970-01-01
                                                   38000

    MORRISON             NASHVILLE            1949-07-10
                                                   36000

    CITY AVERAGE                                   37000

    BOYER                NEMOURS              1955-11-23
                                                  195900

    CITY AVERAGE                                  195900

### Beispiel 5 − WRITE-Statement mit '=' und Parametern auf Statement/Element-Ebene

    ** Example 'WRTEX5': WRITE (using '=', statement/element parameters)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPL-VIEW VIEW OF EMPLOYEES
      2 NAME
      2 PERSONNEL-ID
      2 PHONE
    END-DEFINE
    *
    LIMIT 2
    READ EMPL-VIEW BY NAME
      WRITE NOTITLE (AL=16 NL=8)
            '=' PERSONNEL-ID '=' NAME '=' PHONE (AL=10 EM=XXX-XXXXXXX)
    END-READ
    END

Ausgabe des Programms `WRTEX5`:

    PERSONNEL ID: 60008339         NAME: ABELLAN          TELEPHONE: 435-6726
    PERSONNEL ID: 30000231         NAME: ACHIESON         TELEPHONE: 523-341

### Beispiel 6 − Report-Spezifikation mit für Natural als PC definierter Ausgabedatei

    ** Example 'PCDIEX1': DISPLAY and WRITE to PC
    **
    ** NOTE: Example requires that Natural Connection is installed.
    ************************************************************************
    DEFINE DATA LOCAL
    01 PERS VIEW OF EMPLOYEES
      02 PERSONNEL-ID
      02 NAME
      02 CITY
    END-DEFINE
    *
    FIND PERS WITH CITY = 'NEW YORK'               /* Data selection
      WRITE (7) TITLE LEFT 'List of employees in New York' /
      DISPLAY (7)          /* (7) designates the output file (here the PC).
        'Location'  CITY
        'Surname'   NAME
        'ID'        PERSONNEL-ID
    END-FIND
    END

### On this page

- Funktion WRITE
- Syntax 1 — Dynamische Formatierung
- Syntax 1 − Beschreibung
- Syntax 2 — Vordefinierte Form/Map benutzen
- Syntax 2 — Beschreibung
- Beispiele WRITE