Dieses Dokument behandelt folgende Themen:
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
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:
WRITE
[(rep)] [NOTITLE ] [NOHDR ]
|
||||||||
[(statement-parameters)] | ||||||||
nX
|
'text' [(attributes)] | |||||||
nT
|
'c'(n) [(attributes)] | |||||||
x/y | ['='] operand1 [(parameters)] | |||||||
T* field-name
|
||||||||
P* field-name
|
||||||||
/ |
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
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:
(rep) |
Report-Spezifikation:
Mit der Notation
Es kann ein Wert von 0 bis 31 oder ein logischer Name, der mit
einem Wenn Wenn diese Druckdatei für Natural als PC definiert wird, wird der Report auf den PC heruntergeladen, siehe Beispiel 5. 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 Beispiele:
Anmerkungen:
|
NOHDR |
Unterdrückung der
Spaltenüberschrift:
Das Die Ohne |
statement-parameters |
Parameter-Definition auf
Statement-Ebene:
Unmittelbar nach dem Wenn Sie mehrere Parameter angeben, müssen Sie sie durch ein oder mehrere Leerzeichen voneinander trennen. Eine einzelne Parameterangabe darf sich nicht über zwei Sourcecode-Zeilen erstrecken. Anmerkung: Siehe auch: |
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. |
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 |
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:
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.
nX
|
|||||||
nT
|
|||||||
x/y | 'text' [(attributes)] | ||||||
T* field-name
|
'c' (n) [(attributes)] | ||||||
P* field-name
|
['=' ]
operand1
[(parameters )]
|
||||||
/ |
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
nX |
Spaltenabstand:
Mit der Beispiel: WRITE NAME 5X SALARY Siehe auch:
|
---|---|
nT |
Tabulator-Einstellungen:
Mit der Notation In dem folgenden Beispiel wird das Feld WRITE 25T NAME 50T SALARY Siehe auch:
|
x/y |
x/y-Positionierung::
Mit der Notation Siehe auch Positionierungsnotation x/y (im Leitfaden zur Programmierung). |
T*field-name |
Feldbezogene Positionierung:
Mit der Notation Siehe auch:
|
P*field-name |
Feld- und zeilenbezogene
Positionierung:
Mit der Notation Siehe auch:
|
'=' |
Feldinhalt hinter Feldüberschrift:
Ein Gleichheitszeichen in Apostrophen ( Siehe auch: |
/ |
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:
|
'text' |
Text-Zuweisung:
Der in Apostrophen stehende Text wird ausgegeben. Beispiel: WRITE 'EMPLOYEE' NAME 'MARITAL/STATUS' MAR-STAT Siehe auch:
|
---|---|
'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. Anmerkung: |
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
Wenn Sie mehrere Parameter angeben, müssen Sie sie durch ein oder mehrere Leerzeichen voneinander trennen. Eine Parameterangabe darf sich jeweils nicht über zwei Sourcecode-Zeilen erstrecken. Siehe auch: |
Sie können den ausgegebenen Feldern/Textelementen Anzeige- und Farbattribute zuordnen. Sie können die folgenden Attribute angeben:
|
||||
AD-value
|
Die möglichen Parameterwerte sind in der Parameter-Referenz aufgeführt.
AD - Attribute Definition, Abschnitt Feldanzeige
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.
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.
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:
FORM/MAP |
Benutzung des vordefinierten
Form/Map-Layouts:
Diese Option verwenden Sie, wenn Sie für die Ausgabe eine (mit dem Natural Map Editor erstellte) Map verwenden wollen.
Für den Zeilenabstand muss der Parameter
|
---|---|
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-Source übernommen. Die Felder müssen bezüglich Anzahl, Reihenfolge, Format, Länge und (bei Arrays) Anzahl der Ausprägungen mit den Feldern in de/mr referenzierten Layout/Map übereinstimmen, sonst tritt ein Fehler auf. |
NOTITLE/NOHDR |
Unterdrückung der
Kopfzeile/Spaltenüberschrift:
Die Optionen |
Beispiel 5 − WRITE-Statement mit '=' und Parametern auf Statement/Element-Ebene
Beispiel 6 − Report-Spezifikation mit für Natural als PC definierter Ausgabedatei
** 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
** 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
** 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
** 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
** 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
** 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