READ
|
WORK
[FILE ]
work-file-number
[ONCE ]
|
||||||||
RECORD
operand1
|
|||||||||
[AND ]
[SELECT ]
|
OFFSET
n
|
operand2 | |||||||
FILLER
nX
|
|||||||||
[GIVING
LENGTH operand3]
|
|||||||||
AT [END ] [OF ] [FILE ]
|
|||||||||
statement | |||||||||
END-ENDFILE
|
|||||||||
END-WORK
|
READ
|
WORK [FILE ]
work-file-number
[ONCE ]
|
||||||||
RECORD {operand1
[FILLER
nX ]}
|
|||||||||
[AND ]
[SELECT ]
|
OFFSET
n
|
operand2 | |||||||
FILLER
nX
|
|||||||||
[GIVING LENGTH
operand3]
|
|||||||||
AT [END ] [OF ] [FILE ]
|
statement | ||||||||
DO
statement
DOEND
|
|||||||||
[LOOP ]
|
Dieses Dokument behandelt folgende Themen:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Verwandte Statements: CLOSE WORK
FILE
| DEFINE WORK
FILE
| WRITE WORK
FILE
Gehört zur Funktionsgruppe: Verarbeitung von Arbeitsdateien/PC-Dateien
Das Statement READ WORK FILE
dient dazu, Daten von einer
physisch-sequentiellen Nicht-Adabas-Arbeitsdatei zu lesen. Die Daten werden
sequentiell von der Arbeitdatei gelesen. Wie sie gelesen werden, ist unabhängig
davon, wie Sie auf die Arbeitsdatei geschrieben wurden.
Das READ WORK FILE
-Statement führt eine
Verarbeitungsschleife aus, um alle Datensätze der Arbeitsdatei zu lesen.
Innerhalb einer READ WORK FILE
-Schleife können automatische
Gruppenwechsel-Verarbeitungen durchgeführt werden.
Informationen zu Unicode- und Codepage-Support siehe Work Files and Print Files on Windows, UNIX and OpenVMS Platforms in der Unicode and Code Page Support-Dokumentation.
Anmerkungen:
READ WORK FILE
-Statements
eine End-of-File-Bedingung auftritt, schließt Natural die Arbeitsdatei
automatisch.
READ WORK
FILE
-Verarbeitungsschleife kein I/O-Statement stehen.
Wenn eine ASCII-Arbeitsdatei gelesen wird, kann es passieren, dass ein leerer Datensatz als letzter Datensatz nach dem letzten physischen Datensatz zurückgegeben wird. Dies geschieht, weil Natural keine individuellen Datensätze liest, sondern größere Blöcke der Arbeitsdatei, um die Performanz beim Datei-Zugriff zu optimieren.
Die Länge der Felder in der Operanden-Definitionstabelle wird wie folgt bestimmt:
Format | Länge |
---|---|
A, B, I, F | Die Anzahl der Bytes im Eingabedatensatz entspricht der internen Längendefinition. |
N | Die Anzahl der Bytes im Eingabedatensatz ergibt sich aus der Summe der internen Stellen vor und nach dem Komma (Dezimalpunkt). Komma und Vorzeichen belegen im Eingabedatensatz kein Byte. |
P, D, T | Die Anzahl der Bytes im Eingabedatensatz ergibt sich aus der Summe der Stellen vor und nach dem Komma (Dezimalpunkt) plus einer Stelle für das Vorzeichen, geteilt durch 2 und aufgerundet. |
L | 1 Byte wird benutzt. Bei Feldern des Formats C werden 2 Bytes benutzt. |
Felddefinition | Eingabedatensatz |
---|---|
#FIELD1 (A10) | 10 Bytes |
#FIELD2 (B15) | 15 Bytes |
#FIELD3 (N1.3) | 4 Bytes |
#FIELD4 (N0.7) | 7 Bytes |
#FIELD5 (P1.2) | 2 Bytes |
#FIELD6 (P6.0) | 4 Bytes |
Siehe auch Format und Länge von Benutzervariablen im Leitfaden zur Programmierung.
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | S | A | G | A | U | N | P | I | F | B | D | T | L | C | G | ja | ja | |||
operand2 | S | A | G | A | U | N | P | I | F | B | D | T | L | C | ja | ja | ||||
operand3 | S | I | ja | ja |
Bei dem Arbeitsdateityp ENTIRECONNECTION darf operand2 nicht im Format C sein.
Siehe auch Feldlängen.
Syntax-Element-Beschreibung:
work-file-number |
Arbeitsdateinummer:
Die für Natural definierte Nummer der Arbeitsdatei, die gelesen werden soll. Variabler
Indexbereich:
Wenn Sie ein Array von einer Arbeitsdatei lesen, können Sie für das Array einen variablen Indexbereich angeben. Zum Beispiel: READ WORK FILE work-file-number #ARRAY (I:J) |
|
---|---|---|
ONCE |
ONCE-Option:
Die Wird ein |
|
RECORD operand1 FILLER nX |
RECORD-Option:
Wird Mit Im Structured Mode ist Natural überprüft die Daten des Datensatzes nicht. Demzufolge ist diese Option die schnellste Art, Datensätze von einer sequentiellen Datei zu verarbeiten. Allerdings müssen Sie selbst darauf achten, dass der Aufbau des Datensatzes korrekt beschrieben ist, da es sonst durch nicht-numerische Daten in numerischen Feldern zu einem ungewollten Programmabbruch kommen kann. Bevor der Datensatz gelesen wird, füllt Natural die Operandenliste (operand1) mit Leerzeichen; demzufolge wird bei einer End-of-File-Bedingung ein leerer Bereich zurückgegeben. Kurze Datensätze werden mit Leerzeichen aufgefüllt. Siehe Übersicht für die Benutzung der RECORD-Option weiter unten. |
|
SELECT |
SELECT-Option (Voreinstellung):
Wird die |
|
OFFSET n | OFFSET 0 spezifiziert das erste Byte des
Datensatzes.
|
|
FILLER nX | Bedeutet, dass n Bytes des Eingabedatensatzes übersprungen werden. | |
Natural ordnet den einzelnen Feldern die ausgewählten Werte zu und
überprüft, dass die vom Datensatz ausgewählten numerischen Felder entsprechend
ihrer Definition auch wirklich gültige numerische Werte enthalten. Aufgrund
dieser Prüfung dauert die Verarbeitung einer sequentiellen Datei mit der
Wenn ein Datensatz nicht alle in der
Beim Lesen des Datei-Typs CSV werden die Optionen
|
||
GIVING LENGTH operand3 |
GIVING LENGTH-Klausel
Mit dieser Klausel können Sie die tatsächliche Länge des gelesenen Datensatzes in Erfahrung bringen. Die Länge (Anzahl der Bytes) erhalten Sie in operand3. operand3 muss mit Format/Länge I4 definiert sein. Wenn die Arbeitsdatei als Wenn die |
|
AT END OF FILE |
AT END OF FILE-Klausel
Diese Klausel kann nur zusammen mit der |
|
END-WORK | Das für Natural reservierte Wort
END−WORK muss zum Beenden des READ WORK
FILE -Statements benutzt werden.
|
RECORD -Option wird benutzt
mit
|
Zur Kompilierzeit zurückgewiesen | Zur Laufzeit zurückgewiesen | RECORD -Option wird ignoriert,
Verarbeitung schaltet um in SELECT-Modus
|
---|---|---|---|
Arbeitsdateityp ENTIRE CONNECTION | x | ||
Dynamische Variablen | x | ||
Arbeitsdateityp CSV | x | ||
Arbeitsdateityp PORTABLE | x | ||
Arbeitsdateitypen ASCII, ASCII COMPRESSED, CSV, UNFORMATTED, Codepage ist im Configuration Utility angegeben (Konvertierung ist erforderlich) oder zumindest ein Unicode-Feld ist angegeben (Operand mit Format U, Konvertierung ist erforderlich) | x |
Die Länge der Felder in der Operanden-Definitionstabelle wird wie folgt bestimmt:
Format | Länge |
---|---|
A, B, I, F | Die Anzahl der Bytes im Eingabedatensatz entspricht der internen Längendefinition. |
N | Die Anzahl der Bytes im Eingabedatensatz ergibt sich aus der Summe der internen Stellen vor und nach dem Komma (Dezimalpunkt). Komma und Vorzeichen belegen im Eingabedatensatz kein Byte. |
P, D, T | Die Anzahl der Bytes im Eingabedatensatz ergibt sich aus der Summe der Stellen vor und nach dem Komma (Dezimalpunkt) plus einer Stelle für das Vorzeichen, geteilt durch 2 und aufgerundet. |
L | 1 Byte wird benutzt. Bei Feldern des Formats C werden 2 Bytes benutzt. |
Felddefinition | Eingabedatensatz |
---|---|
#FIELD1 (A10) | 10 Bytes |
#FIELD2 (B15) | 15 Bytes |
#FIELD3 (N1.3) | 4 Bytes |
#FIELD4 (N0.7) | 7 Bytes |
#FIELD5 (P1.2) | 2 Bytes |
#FIELD6 (P6.0) | 4 Bytes |
Siehe auch Format und Länge von Benutzervariablen im Leitfaden zur Programmierung.
Arbeitsdateityp | Verarbeitung |
---|---|
ASCII |
Die Arbeitsdateitypen ASCII, ASCII-COMPRESSED und SAG (binär) können keine dynamischen Variablen verarbeiten und rufen einen Fehler hervor. Sie können jedoch große Variablen mit einer maximalen Feld-/Datensatzlänge von 32766 Bytes verarbeiten. |
Der Arbeitsdateityp ENTIRECONNECTION kann keine dynamische Variablen verarbeiten. Er kann jedoch große Variablen mit einer maximalen Feld-/Datensatzlänge von 107341824 Bytes verarbeiten. Die |
|
Große und dynamische Variablen können mit den beiden Arbeitsdateitypen PORTABLE und UNFORMATTED in Arbeitsdateien geschrieben oder aus Arbeitsdateien gelesen werden. Bei diesen Typen gibt es keine Größenbeschränkung für dynamische Variablen. Große Variablen dürfen jedoch eine maximale Feld-/Datensatzlänge von 32766 Bytes nicht überschreiten. Wenn eine dynamische Variable aus einer PORTABLE-Arbeitsdatei gelesen wird, so führt dies zu einer Größenänderung auf die gespeicherte Länge. |
|
CSV | Die maximale Feld-/Datensatzlänge für dynamische und große Variablen ist 32766 Bytes. Dynamische Variables werden unterstützt. X-Arrays sind nicht erlaubt und resultieren in einer Fehlermeldung. |
** Example 'RWFEX1': READ WORK FILE ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME * 1 #RECORD 2 #PERS-ID (A8) 2 #NAME (A20) END-DEFINE * FIND EMPLOY-VIEW WITH CITY = 'STUTTGART' WRITE WORK FILE 1 PERSONNEL-ID NAME END-FIND * * ... * READ WORK FILE 1 RECORD #RECORD DISPLAY NOTITLE #PERS-ID #NAME END-WORK * END
Ausgabe des Programms RWFEX1
:
#PERS-ID #NAME -------- -------------------- 11100328 BERGHAUS 11100329 BARTHEL 11300313 AECKERLE 11300316 KANTE 11500304 KLUGE 11500308 DIETRICH 11500318 GASSNER 11500343 ROEHM 11600303 BERGER 11600320 BLAETTEL 11500336 JASPER 11100330 BUSH 11500328 EGGERT