Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

@INPUT (Format 2) - Starten einer @INPUT-Prozedur aus einer DVS-Datei

&pagelevel(3)&pagelevel

Mit diesem Format der @INPUT-Anweisung wird eine @INPUT-Prozedur aus einer SAM- oder ISAM-Datei gestartet. Format 2 wird nur noch aus Kompatibilitätsgründen unterstützt und sollte nicht mehr verwendet werden. Die Anweisungen bzw. Datensätze aus der Datei werden sequentiell abgearbeitet. Einzelheiten zum Aufbau und zur Bearbeitung von EDT-Prozeduren findet man im Abschnitt „EDT-Prozeduren“.

Operation

Operanden

F-Modus, L-Modus

@INPUT

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

file

Name der SAM- oder ISAM-Datei, die eingelesen und abgearbeitet werden
soll. Der Name muss dem SDF-Datentyp <filename 1..54> entsprechen.

Die symbolische Bezeichnung '/' für eine Datei, für die der LINK-Name
EDTSAM bzw. EDTISAM durch das /SET-FILE-LINK-Kommando vergeben
wurde, ist hier nicht zulässig.

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

ver

Dieser Operand darf zwar aus Symmetriegründen angegeben werden, wird
aber vollständig ignoriert.

lines

Einer oder mehrere Zeilenbereiche, die in der ISAM- oder SAM-Datei
abgearbeitet werden sollen. Fehlt lines, werden alle Zeilen der Datei
abgearbeitet.

Werden symbolische Zeilennummern angegeben, werden deren Werte aus
der aktuellen Arbeitsdatei entnommen, haben also normalerweise nichts
mit der Satzstruktur der angegebenen Datei zu tun.
Eine Angabe von lines für SAM-Dateien wird ignoriert, wenn nicht gleichzeitig
eines der Schlüsselwörter KEY oder RECORDS angegeben wurde.

cols

Einer oder mehrere Spaltenbereiche, die die abzuarbeitenden Anweisungen
enthalten. Wiederholungen und Überlappungen der Bereiche sind
erlaubt. Werden Spaltenwerte angegeben, die die Länge eines Satzes
überschreiten, so werden dafür Leerzeichen eingelesen.
Bei Angabe von KEY für SAM-Dateien bzw. bei ISAM-Dateien beginnt die
Spaltenzählung erst nach dem Schlüssel im Datensatz.
Wird kein Spaltenbereich angegeben, werden die Zeilen in voller Länge
eingelesen.

KEY

Legt fest, dass die ersten 8 Zeichen einer jeden Zeile einer SAM-Datei als
Zeilennummer zu interpretieren sind. Derartige Sätze lassen sich für SAM-
Dateien mit @WRITE bei Angabe des Operanden KEY erstellen.
Durch die Angabe von KEY bei @INPUT werden diese Nummern beim
Lesen der Datei nicht als Zeileninhalt, sondern als Zeilennummer interpretiert.
Andernfalls würde der EDT jede Zeile der Datei als Textzeile betrachten.

RECORDS

Legt fest, dass bei SAM-Dateien ein Zeilenbereich (siehe Operanden
lines) über die logische Zeilennummer ausgewählt werden soll. Die logische
Zeilennummer der 1. Zeile der Datei ist 0.0001, die logische Zeilennummer
der 2. Zeile der Datei ist 0.0002 usw.

PRINT

Jede Zeile der Prozedur soll vor ihrer Verarbeitung protokolliert werden. Die
Ausgabe erfolgt im Dialogbetrieb nach SYSOUT und im Stapelbetrieb nach
SYSLST.

Durch die Angabe von PRINT wird auch erreicht, dass alle Fehlermeldungen
ausgegeben werden und der EDT-Fehlerschalter gesetzt wird.
Normalerweise werden die beiden Meldungen EDT0901 und EDT4932 in Prozeduren
nicht ausgegeben und der EDT-Fehlerschalter nicht gesetzt (siehe
Abschnitt „Meldungstexte“).

Die Anweisung @INPUT (Format 2) darf weder in @INPUT- noch in @DO-Prozeduren abgesetzt werden.

Die Schlüsselwörter KEY und RECORDS werden für ISAM-Dateien ignoriert. Wenn weder RECORDS noch KEY angegeben wird, wird eine Angabe des Operanden lines für SAM-Dateien ignoriert, d.h. es werden alle Zeilen der Datei abgearbeitet.

Die Abarbeitung einer @INPUT-Prozedur wird abgebrochen, wenn die Anweisung @RETURN oder die letzte Anweisung der Prozedur abgearbeitet wurde.

Für ISAM-Dateien und SAM-Dateien (mit Operanden KEY) sollte der Satzschlüssel immer eine gültige Zeilennummer enthalten und bei SAM-Dateien erwartet der EDT eine aufsteigende Ordnung der Sätze.

Wird die Datei ohne Angabe eines Zeilenbereiches gelesen, werden die Satzschlüssel einfach ignoriert, also auch nicht überprüft. Werden dagegen Zeilenbereiche angegeben so ist das Verhalten für SAM-Dateien und ISAM-Dateien unterschiedlich.
Bei ISAM-Dateien werden die Schlüssel der tatsächlich gelesenen Sätze überprüft. Enthält ein Satz einen nichtnumerischen Schlüssel, wird die Abarbeitung der Prozedur mit dem Fehler EDT4984 abgebrochen.
Bei SAM-Dateien werden Sätze mit nichtnumerischen Schlüsseln oder mit Schlüsselwerten die kleiner als die aktuelle untere Bereichsgrenze sind ignoriert. Ist der Schlüsselwert größer als die aktuelle obere Bereichsgrenze, werden dieser und alle nachfolgenden Sätze ignoriert. Außerdem werden bei SAM Sätze die kürzer als 8 Zeichen sind ebenfalls ignoriert.

Enthält die @INPUT-Prozedur Datensätze, werden diese wie bei der Dateneingabe im L-Modus in die aktuelle Arbeitsdatei eingefügt (leere Sätze werden ignoriert). Ist die aktuelle Arbeitsdatei leer und hat den Zeichensatz *NONE, erhält die Arbeitsdatei den Zeichensatz der Datei, falls Datensätze eingefügt werden. Ist der Zeichensatz der Datei *NONE, erhält die Arbeitsdatei beim Einfügen von Sätzen den Zeichensatz EDF03IRV.

Die aus der @INPUT-Prozedur gelesenen Anweisungen oder Datensätze werden in dem Zeichensatz der angegebenen Datei interpretiert. Ist dieser *NONE, wird EDF03IRV benutzt.

Dieser Zeichensatz kann sich von dem Zeichensatz der aktuellen Arbeitsdatei unterscheiden. Da die Anweisungen stets auf die aktuelle Arbeitsdatei wirken bzw. die Datensätze in die aktuelle Arbeitsdatei eingefügt werden, kann es daher notwendig sein, Literale in Anweisungen bzw. Datensätze umzucodieren.
Enthält die 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 die Abarbeitung der @INPUT-Prozedur mit der Fehlermeldung EDT5453 abgebrochen. 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 die Abarbeitung der @INPUT-Prozedur mit der Meldung EDT5454 abgebrochen.

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.

Beispiel

6.     @PRINT
1.0000 @DELETE
2.0000 ICH BIN ZEILE 1
3.0000 ICH BIN DIE ZWEITE ZEILE
4.0000 @PRINT 1
5.0000 @PRINT 2
6.     @WRITE 'SAM-INP' KEY --------------------------------------------- (1)
6.     @SAVE 'ISAM-INP' ------------------------------------------------- (2)
6.     @INPUT 'SAM-INP' KEY --------------------------------------------- (3)
1.0000 ICH BIN ZEILE 1
2.0000 ICH BIN DIE ZWEITE ZEILE
3.     @INPUT 'ISAM-INP' 1-3,5,4 ---------------------------------------- (4)
2.0000 ICH BIN DIE ZWEITE ZEILE
1.0000 ICH BIN ZEILE 1
3.

(1) Der Inhalt der Arbeitsdatei wird als SAM-Datei geschrieben, wobei vor jede Zeile ein Schlüssel zu legen ist, der aus der jeweiligen Zeilennummer errechnet wird.

(2) Der Inhalt der Arbeitsdatei wird noch einmal geschrieben, diesmal aber als ISAM-Datei.

(3) Die komplette Datei SAM-INP wird eingelesen und ausgeführt. Da diese Datei mit @WRITE unter Benutzung von KEY erstellt wurde, ist KEY anzugeben. Anderenfalls erfolgt keine Umrechnung der gespeicherten Schlüssel in die Zeilennummern.

(4) Die Zeilen 1-3,5,4 der Datei ISAM-INP sollen in dieser Reihenfolge eingelesen und ausgeführt werden.