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 Besteht noch kein lokaler @FILE-Eintrag für die Arbeitsdatei, so wird der Existiert die angegebene Datei nicht oder ist sie nicht wie erforderlich Wenn der Dateikettungsname |
ver | Versionsnummer der einzulesenden Datei. Stimmt die angegebene |
lines | Einer oder mehrere Zeilenbereiche, die aus der SAM-Datei eingelesen Wird Wird |
cols | Einer oder mehrere Spaltenbereiche, durch die der einzulesende Bereich Wird kein Spaltenbereich angegeben, werden die Zeilen in voller Länge |
KEY | Der EDT interpretiert die ersten 8 Zeichen jedes einzulesenden Satzes als Der EDT prüft dabei, ob in den ersten 8 Zeichen jeder Zeile ein gültiger Wird über |
RECORDS | Legt fest, dass ein Zeilenbereich (siehe Operand Wenn |
STRIP | Bewirkt, dass eventuell vorhandene Leerzeichen am Ende jeder erzeugten |
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.