Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

@READ - Einlesen einer SAM-Datei

&pagelevel(3)&pagelevel

Mit der Anweisung @READ wird eine SAM-Datei ganz oder teilweise von Platte oder Band in die aktuelle Arbeitsdatei eingelesen.

Operation

Operanden

F-Modus, L-Modus

@READ

[file] [(ver)] [lines[,...] ] [:cols[,...]:] [ {RECORDS | KEY} ] [STRIP]

file

Name der SAM-Datei, die eingelesen werden soll. Der Name muss dem
SDF-Datentyp <filename 1..54> entsprechen oder die spezielle Angabe
'/' sein.

Besteht noch kein lokaler @FILE-Eintrag für die Arbeitsdatei, so wird der
angegebene Dateiname bei Erfolg als impliziter lokaler @FILE-Eintrag
eingetragen. Fehlt der Operand file, so wird, falls vorhanden, der explizite
lokale @FILE-Eintrag und andernfalls der globale @FILE-Eintrag als Dateiname
herangezogen (siehe auch @FILE-Anweisung).
Ist weder ein expliziter lokaler noch ein globaler @FILE-Eintrag definiert
(z.B. nur ein impliziter lokaler @FILE-Eintrag), wird die Anweisung @READ
mit der Fehlermeldung EDT5484 abgewiesen.

Existiert die angegebene Datei nicht oder ist sie nicht wie erforderlich
zugreifbar, wird die Anweisung mit einer entsprechenden Fehlermeldung
abgewiesen.

Wenn der Dateikettungsname EDTSAM einer Datei zugeordnet ist, genügt
die Angabe '/', um diese Datei einzulesen (siehe Kapitel „Dateibearbeitung“).

ver

Versionsnummer der einzulesenden Datei. Stimmt die angegebene
Versionsnummer nicht mit der Versionsnummer der Datei überein, wird die
Meldung EDT0902 ausgegeben, die Datei aber trotzdem eingelesen.

lines

Einer oder mehrere Zeilenbereiche, die aus der SAM-Datei eingelesen
werden sollen. Werden symbolische Zeilennummern angegeben, werden
deren Werte aus der aktuellen Arbeitsdatei bestimmt, haben also normalerweise
nichts mit der Satzstruktur der bei file angegebenen Datei zu tun.

Wird lines zusammen mit RECORDS angegeben, bezieht sich lines auf
die logischen Zeilennummern der Datei (siehe RECORDS). Wird lines ohne
RECORDS angegeben, wirkt dies wie die Angabe von lines mit KEY.

Wird lines nicht angegeben, wird die gesamte Datei eingelesen.

cols

Einer oder mehrere Spaltenbereiche, durch die der einzulesende Bereich
jedes Satzes festgelegt wird. Wiederholungen und Überlappungen der
Bereiche sind erlaubt. Die Spaltenangaben beziehen sich auf die Zeichen
in der einzulesenden Datei. Bei Dateien, die in einem Unicode-Zeichensatz
vorliegen, stimmt das zumeist nicht mit der Byteposition innerhalb eines
Satzes überein. Werden Spaltenwerte angegeben, die die Länge eines
Satzes überschreiten, so werden dafür Leerzeichen in die Arbeitsdatei
eingelesen. Bei Angabe von KEY (bzw. lines ohne RECORDS) beginnt die
Spaltenzählung erst nach dem Schlüssel im Datensatz.

Wird kein Spaltenbereich angegeben, werden die Zeilen in voller Länge
eingelesen.

KEY

Der EDT interpretiert die ersten 8 Zeichen jedes einzulesenden Satzes als
Schlüssel. Die Sätze, die in die Arbeitsdatei eingelesen werden, erhalten
diesen Schlüssel als Zeilennummer und nicht als Teil des Zeileninhalts. Der
Operand KEY ist Standardwert, wenn lines angegeben wurde.

Der EDT prüft dabei, ob in den ersten 8 Zeichen jeder Zeile ein gültiger
Schlüssel steht. Gültig heißt, dass der Schlüssel nur aus den Ziffern 0 bis 9
bestehen darf, sonst wird die Anweisung @READ mit der Fehlermeldung
EDT4984 abgebrochen. Die bis zu diesem Zeitpunkt gelesenen Sätze werden
in die Arbeitsdatei übernommen. Hat ein Satz den Schlüssel 0, dann
wird er wie ein Satz mit dem Schlüssel 1 (Zeilennummer 0.0001) behandelt
und die Warnung EDT2900 ausgegeben.

Wird über lines eine Auswahl von Zeilen vorgenommen, geht der EDT
davon aus, dass die Sätze der Datei aufsteigende Schlüssel haben. Ist das
nicht der Fall werden gegebenenfalls nicht alle erwarteten Sätze
eingelesen.

RECORDS

Legt fest, dass ein Zeilenbereich (siehe Operand lines) über die logische
Zeilennummer der Datei ausgewählt werden soll. Die logische Zeilennummer
der ersten Zeile ist 0.0001, die der zweiten 0.0002 usw. Die
eingelesenen Sätze werden an der durch die aktuelle Zeilennummer bestimmten
Stelle in die Arbeitsdatei eingefügt (siehe unten).

Wenn STRIP nicht angegeben wird, kann das Schlüsselwort RECORDS auch
durch R abgekürzt werden. Der Operand RECORDS ist Standardwert, wenn
lines nicht angegeben wurde.

STRIP

Bewirkt, dass eventuell vorhandene Leerzeichen am Ende jeder erzeugten
Arbeitsdateizeile gelöscht werden. Besteht eine Zeile nur aus Leerzeichen,
werden alle Leerzeichen bis auf eines gelöscht.

Ist KEY (bzw. lines ohne RECORDS) angegeben, werden Zeilen ignoriert, die weniger als 8 Zeichen lang sind.

Bei der Angabe von lines bzw. cols können sich Zeilennummern bzw. Spaltennummern wiederholen, was zu einem mehrmaligen Einlesen der entsprechenden Zeilen bzw. Spalten führt.

Sofern ohne die Angabe KEY gelesen wird, werden die Zeilennummern abhängig von der aktuellen Zeilennummer und der aktuellen Schrittweite vergeben (siehe Abschnitt „Zeilennummernvergabe“).

Die Datei wird nur während des Lesevorgangs temporär geöffnet. Ist die einzulesende Datei leer, wird die Warnung EDT2903 ausgegeben.

Ist die aktuelle Arbeitsdatei leer und hat den Zeichensatz *NONE, erhält die Arbeitsdatei den Zeichensatz der einzulesenden Datei. Ist dieser *NONE, erhält die Arbeitsdatei den Zeichensatz EDF03IRV.

Hat die Arbeitsdatei bereits einen Zeichensatz, dann werden die einzulesenden Sätze vom Zeichensatz der Datei in den Zeichensatz der Arbeitsdatei konvertiert. Enthält die einzulesende Datei Zeichen, die im Zeichensatz der Arbeitsdatei nicht darstellbar sind, werden diese durch ein Ersatzzeichen ersetzt, sofern ein solches spezifiziert ist (siehe
@PAR SUBSTITUTION-CHARACTER), andernfalls wird das Einlesen der Datei abgebrochen und die Fehlermeldung EDT5453 ausgegeben. Dies gilt auch, falls sich das ungültige Zeichen außerhalb des einzulesenden Spaltenbereichs befindet. Ungültige Zeichen außerhalb des einzulesenden Zeilenbereichs werden hingegen ignoriert.

Liegt die Datei in einem Unicode-Zeichensatz vor und enthält sie ungültige Bytefolgen, z.B. Surrogate-Zeichen, kann sie auch bei Angabe eines SUBSTITUTION-CHARACTERS nicht eingelesen werden. In diesem Fall wird das Lesen mit der Meldung EDT5454 abgewiesen.

Wird die Anweisung mit [K2] unterbrochen und der EDT-Lauf mit /INFORM-PROGRAM fortgesetzt, so wird die Bearbeitung der Anweisung abgebrochen und die Meldung EDT5501 ausgegeben.

Hinweis

Wird versucht, mit @READ eine ISAM-Datei einzulesen, gibt der EDT die Meldung EDT1901 aus und setzt den Schalter für EDT-Fehler. Er liest die angegebene Datei aber trotzdem ein, indem intern ein @GET für diese Datei ausgeführt wird.
Die Operanden STRIP, RECORDS und KEY werden dabei ignoriert.

Wird file angegeben, kann @READ im F-Modus aus Kompatibilitätsgründen auch weiterhin mit R abgekürzt werden.