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-VARIABLE Variablen Werte zuweisen

&pagelevel(4)&pagelevel

Anwendungsgebiet: PROCEDURE

Kommandobeschreibung

Das Kommando READ-VARIABLE liest Daten satzweise von einem Eingabemedium ein und speichert sie in einer Variablen ab. Der Vorgang wird beendet, wenn der String „*END-OF-CMD“ oder Dateiende (EOF) auftritt.

Eingabemedium kann sein:

  • das Terminal

  • eine katalogisierte Datei

  • eine Variable

  • ein Bibliothekselement

  • die Systemdatei SYSDTA

Hinweise zum Einlesen von SYSDTA

  • Daten werden von SYSDTA genauso eingelesen wie von einer Datei. Allerdings mit folgender Ausnahme: Wenn das Lesen vor SYSDTA-EOF beendet wird, wird beim nächsten Lesen von SYSDTA auf den nächsten SYSDTA-Satz zugegriffen. Das erlaubt gezieltes Lesen von SYSDTA, z.B. für den Fall: wenn nur eine einfache Variable gelesen werden soll.

  • Die Eingabe endet mit dem Ende der Systemdatei SYSDTA, d.h. entweder bei Dateiende, wenn SYSDTA einer katalogisierten Datei zugewiesen ist, oder mit dem nächsten Kommando, wenn SYSDTA SYSCMD zugewiesen ist (Default-Voreinstellung von S-Prozeduren).

  • Einlesen von SYSDTA kann mit HOLD-PROGRAM, oder BEGIN-BLOCK PROGRAM-INPUT=*MIXED-WITH-CMD nicht unterbrochen werden (um in den Kom-mando-Modus umzuschalten). Diese Kommandos bzw. Maßnahmen verursachen nur, dass ein Einlesestop, d.h. SYSDTA-EOF (Dateiende), zum jeweiligen Kommando gemeldet wird. Nur das Kommando SEND-DATA beendet das READ-VARIABLE-Kommando nicht.

Hinweis zum Einlesen einer Datei

Wenn nicht der komplette Inhalt der Datei für die weitere Bearbeitung benötigt wird, kann in folgenden Fällen die Datenmenge bereits beim Einlesen beschränkt werden:

  1. Es wird nur ein zusammenhängender Teil von Datensätzen benötigt. Für den einzulesenden Bereich von Datensätzen wird die Nummer des ersten und des letzten benötigten Datensatzes in den Operanden BEGIN-RECORD and END-RECORD angegeben.

  2. Ab SDF-P-BASYS V2.5I11:
    Es wird nur ein zusammenhängender Teil der letzten Datensätze der Datei benötigt. Die Anzahl der benötigten Sätze wird durch den Wert von *BEFORE-LAST-RECORD im Operanden BEGIN-RECORD festgelegt. Die Anzahl kann auch durch einen negativen Wert im Operanden BEGIN-RECORD bestimmt werden. In beiden Fällen hat der Operand END-RECORD keine Wirkung.
  3. Es werden nur Datensätze benötigt, die bestimmte Zeichenfolgen enthalten. Die einzulesenden Datensätze werden über die im Operanden PATTERN angegebene Suchzeichenfolge selektiert. Der Operand PATTERN-TYPE bestimmt, ob die Suchzeichenfolge als String oder als regulärer Ausdruck nach POSIX-Regeln auszuwerten ist. Eine einfache Suchzeichenfolge kann direkt als String angegeben werden. Ein regulärer Ausdruck ermöglicht die Angabe einer komplexen Suchzeichenfolge, die nicht direkt als String angegeben werden kann (siehe „POSIX-Platzhalter“ (SDF-Syntaxdarstellung ); der „reguläre Ausdruck“ ist im Handbuch „POSIX Kommandos“ [18] beschrieben).

    Hinweis
    Eine Suchzeichenfolge wird immer innerhalb des gesamten Datensatz gesucht, auch wenn beim Einlesen nur ein Teil (Spaltenbereich) des Datensatzes übernommen werden soll (siehe Beispiel 5, Fall 4).

  4. Es wird jeweils nur ein Teil aus jedem Datensatz benötigt. Der einzulesende Datensatzteil wird als Spaltenbereich mit der Spalte des ersten und des letzten benötigten Zeichens in den Operanden BEGIN-COLUMN and END-COLUMN angegeben.

Format

READ-VARIABLE                                            Kurzname: RDV

VARIABLE-NAME = *BY-INPUT(...) / *LIST(...) / list-poss(2000): <composed-name 1..255>

*BY-INPUT(...)

PREFIX = *NONE / <composed-name 1..255>

*LIST(...)

LIST-NAME = <composed-name 1..255>

,WRITE-MODE = *REPLACE / *EXTEND

,STRING-QUOTES = *OPTIONAL / *YES / *NO

,INPUT = *TERMINAL(...) / <filename 1..54 without-gen-vers>(...) / *VARIABLE(...) /

*LIBRARY-ELEMENT(...) / *SYSDTA(...)

*TERMINAL(...)

PROMPT-STRING = '>>' / <text 0..1800 with-low>

,SECRET-INPUT = *NO / *YES

<filename 1..54 without-gen-vers>(...)

REMOVE-KEY = *YES / *NO

,BEGIN-RECORD = *FIRST / <integer -2147483646..2147483647>

                               *BEFORE-LAST-RECORD(...)

*BEFORE-LAST-RECORD(...)

NUMBER-OF-LINES = <integer 0..500000>

,END-RECORD = *LAST / <integer 1..2147483647>

,BEGIN-COLUMN = *FIRST / <integer 1..2147483647>

,END-COLUMN = *LAST / <integer 1..2147483647>

,PATTERN = *NONE / <c-string 0..1800 with-low>

,PATTERN-TYPE = *STRING / *REGULAR-EXPRESSION

*VARIABLE(...)

VARIABLE-NAME = <composed-name 1..255>

*LIBRARY-ELEMENT(...)

LIBRARY = <filename 1..54 without-vers>

,ELEMENT = <composed-name 1..64 with-underscore>(...)

<composed-name 1..64 with-underscore>(...)

VERSION = *HIGHEST-EXISTING / <composed-name 1..24 with-underscore>

,TYPE = S / <alphanum-name 1..8>

*SYSDTA(...)

REMOVE-KEY = *YES / *NO

Operandenbeschreibung

VARIABLE-NAME =
Bezeichnet die Variablen, denen Werte zugewiesen werden sollen.

VARIABLE-NAME = *BY-INPUT(...)
Gibt an, dass die Variablen in dem Format vorliegen, wie es das Kommando SHOW-VARIABLE über die Operanden PREFIX und FORM erzeugt hat.
Werden die Variablen nicht vom Kommando SHOW-VARIABLE erzeugt, dann müssen sie im SHOW-VARIABLE-Ausgabeformat vorliegen (z.B. vor und nach dem '=' muss ein Leerzeichen stehen). Existieren die Variablen bereits, wird ihnen der Wert zugewiesen.

Existiert eine Variable noch nicht, so wird sie implizit angelegt, wenn implizite Deklaration erlaubt ist.
Existiert zu einem Variablenelement die übergeordnete zusammengesetzte Variable nicht, so wird diese mit SCOPE = *CURRENT angelegt.
Statische Strukturen können nur als dynamische Strukturen wiedererzeugt werden. STRING, INTEGER und BOOLEAN werden auf ANY abgebildet, falls die Variablen nicht existieren.

Bezieht sich die Eingabe in *BY-INPUT(...) auf ein Listenelement (Variablenname mit (*LIST)), dann wird das Kommando mit Fehler beendet.
Wird einer Variablen der Wert *NO-INIT zugewiesen, wird ihr bisheriger Inhalt gelöscht (entspricht einem Kommandoaufruf FREE-VARIABLE).
Der Wert *END-OF-VAR wird ignoriert. Der Wert *END-OF-CMD beendet die Zuweisung.

PREFIX = *NONE
Dem Variablennamen wird kein Präfix vorangestellt.

PREFIX = <composed-name 1..255>
Bezeichnet den Namen, der als Präfix dem Variablennamen vorangestellt wird.

VARIABLE-NAME = *LIST(...)
Bezeichnet eine Listenvariable.

LIST-NAME = <composed-name 1..255>
Name der Liste.
Ist die Liste bereits vorhanden, so muss sie vom Typ ANY, STRING, BOOLEAN oder INTEGER sein.
Existiert die Liste nicht oder kann sie nicht gefunden werden, dann wird sie neu angelegt, mit dem Geltungsbereich SCOPE = *CURRENT und dem Datentyp TYPE = *STRING.

WRITE-MODE = *REPLACE
Die Liste wird überschrieben.

WRITE-MODE = *EXTEND
Neue Elemente werden an das Ende der Liste angehängt.

VARIABLE-NAME = list-poss(2000): <composed-name 1..255>
Namen der Variablen, denen neue Werte zuzuweisen sind.
Die eingelesenen Werte werden den Variablen(elementen) - angefangen beim ersten Element der Struktur - der Reihe nach zugewiesen.
Die Fehlerbehandlung wird gestartet, wenn wegen vorzeitigem EOF oder *END-OF-CMD nicht alle Variablen mit Werten versorgt wurden.

STRING-QUOTES =
Legt fest, wie der Eingabewert interpretiert werden soll.

STRING-QUOTES = *OPTIONAL
Bewirkt, dass Variablenwerte wie Prozedurparameter angegeben werden können.
Bei der Interpretation der Eingabe wird der Datentyp der Variablen, der der Wert zugewiesen werden soll, berücksichtigt:

  • Ist die Variable vom Datentyp ANY oder STRING, so wird der Wert als String interpretiert. Hochkommas innerhalb des Strings müssen verdoppelt werden (allerdings nur wenn der ganze String in Hochkommata eingeschlossen ist).

  • Ist die Variable vom Datentyp INTEGER, so wird der Wert als Integer-Wert interpretiert.

  • Ist die Variable vom Datentyp BOOLEAN, so wird der Wert als boolescher Wert interpretiert.

STRING-QUOTES = *YES
Interpretiert Werte, die mit Hochkomma (') oder C-Hochkomma (C') beginnen, als String. Ist der Wert nicht mit Hochkomma abgeschlossen oder sind Hochkommas innerhalb des Wertes nicht verdoppelt, so gilt dies als Fehler.
Falls ein Wert, der nicht in Hochkomma eingeschlossen ist, einem der Schlüsselwörter für boolesche Werte entspricht, so wird er als boolescher Wert interpretiert. In allen anderen Fällen wird er als Integer-Wert interpretiert.

STRING-QUOTES = *NO
Interpretiert alle Werte als String.

INPUT =
Legt fest, von wo die Werte eingelesen werden sollen.

INPUT = *TERMINAL(...)
Prompting: Die Werte werden von der Datenstation eingelesen. (Dabei werden die Werte aber nicht wie bei DECLARE-PARAMETER INITIAL-VALUE =*PROMPT in Großbuchstaben konvertiert.)

PROMPT-STRING = '>>' / <text 0..1800 with-low>
String-Ausdruck. Definiert das Zeichen bzw. die Zeichenfolge, die als Eingabeaufforderung ausgegeben werden soll.

SECRET-INPUT = *NO / *YES
Gibt an, ob die Benutzereingabe geschützt werden soll.

INPUT = <filename 1..54 without-gen-vers>(...)
Die Werte sind aus der angegebenen Datei einzulesen.
Jeder Eingabesatz gilt als einzelner Wert.

REMOVE-KEY =
Gibt an, ob beim Lesen aus einer ISAM-Datei der Schlüssel weggelassen werden soll.

REMOVE-KEY = *YES
Bei einer ISAM-Datei werden die Schlüssel nicht mit eingelesen. Bei SAM-Datei wird nur diese Angabe akzeptiert.

REMOVE-KEY = *NO
Bei ISAM-Dateien mit den Standardattributen KEY-POSITION=5 und KEY-LENGTH=8 wird der Schlüssel mit eingelesen. Bei ISAM-Dateien mit anderen Attributen führt die Angabe zum Fehler.  Bei SAM-Dateien führt diese Angabe in jedem Fall zum Fehler.

BEGIN-RECORD = *FIRST / <integer 1..2147483647>
Gibt an, mit welchem Datensatz das Einlesen beginnen soll. Mit *FIRST ist der erste Datensatz der Datei voreingestellt.
Falls der angegebene Wert größer als die Anzahl der vorhandenen Datensätze ist, wird eine leere Datei angenommen. Im Fall von VARIABLE-NAME=*LIST(...) wird eine leere Liste angelegt.

Ab SDF-P V2.5I11:
Wenn ein negativer Wert angegeben ist, so bezeichnet sein Absolutwert die Anzahl der vom Dateiende zusätzlich zum letzten Datensatz zu lesenden Sätze. Ist dieser Wert größer als die Anzahl der vorhandenen Datensätze ohne den letzten Datensatz, so wird die ganze Datei eingelesen. Bei Angabe von 0 wird nur der letzte Datensatz verarbeitet.

BEGIN-RECORD = *BEFORE-LAST-RECORD(...)
Ab SDF-P V5.2I11:
Wird angegeben, wenn nur die letzten Datensätze einer Datei von Interesse sind.

NUMBER-OF-LINES = <integer 0..500000>
Gibt die Anzahl der vom Dateiende zusätzlich zum letzten Datensatz zu verarbeitenden Einträge an. Bei Angabe von 0 wird nur der letzte Datensatz verarbeitet.

END-RECORD = *LAST / <integer 1..2147483647>
Gibt an, nach welchem Datensatz das Einlesen beendet werden soll. Mit *LAST ist der letzte Datensatz der Datei voreingestellt.
Falls der angegebene Wert größer als die Anzahl der vorhandenen Datensätze ist, wird *LAST angenommen.
END-RECORD hat keinen Effekt, falls *BEFORE-LAST-RECORD oder ein negativer Wert in BEGIN-RECORD angegeben ist.

BEGIN-COLUMN = *FIRST / <integer 1..2147483647>
Gibt an, ab welcher Spaltenposition der Inhalt eines Datensatzes eingelesen werden soll. Mit *FIRST ist der Beginn des Datensatzes (Spaltenposition 1) voreingestellt. Falls der angegebene Wert größer als der Datensatz ist, wird ein leeres Listenelement angelegt, damit die Anzahl der Listenelemente immer der Anzahl der gelesenen Zeilen entspricht.

END-COLUMN = *LAST / <integer 1..2147483647>
Gibt an, nach welcher Spaltenposition das Einlesen eines Datensatzes beendet werden soll. Mit *LAST das Ende des Datensatzes voreingestellt.
Falls der angegebene Wert größer als der Datensatz ist, wird *LAST angenommen.

PATTERN =
Gibt an, ob nur Datensätze, die eine bestimmte Suchzeichenfolge enthalten, eingelesen werden.

PATTERN = *NONE
Datensätze werden unabhängig von einer bestimmten Suchzeichenfolge eingelesen.

PATTERN = <c-string 0..1800 with-low>
Es werden nur Datensätze eingelesen, die die angegebene Suchzeichenfolge enthalten. Der Operand PATTERN-TYPE bestimmt, wie die Suchzeichenfolge auszuwerten ist. Wenn eine Suchzeichenfolge der Länge 0 verwendet wird, ist der Effekt derselbe wie für das Muster *NONE - Datensätze werden unabhängig von einem bestimmten Suchstring gelesen.

PATTERN-TYPE =
Gibt an, wie die Suchzeichenfolge auszuwerten ist.

PATTERN-TYPE = *STRING
Es werden Datensätze selektiert, die den angegebenen String enthalten.

PATTERN-TYPE = *REGULAR-EXPRESSION
Es werden Datensätze selektiert, die den als regulären Ausdruck angegebenen String enthalten.

INPUT = *VARIABLE(...)
Die Werte sind aus einer Listenvariablen einzulesen.

VARIABLE-NAME = <composed-name 1..255>
Name der Listenvariablen.
Die Variable muss existieren und mit dem Datentyp STRING deklariert worden sein. (Sie kann auch mit dem Datentyp ANY deklariert sein. Jedoch darf sie dann auch nur Strings enthalten.)

INPUT = *LIBRARY-ELEMENT(...)
Die Werte sind aus dem Element einer PLAM-Bibliothek einzulesen. Die Angabe einer Bibliotheksliste (S-Variable SYSPLAMALT-<name>) ist erlaubt.

LIBRARY = <filename 1..54 without-vers>
Name der Bibliothek.

ELEMENT = <composed-name 1..64 with-underscore>(...)
Name des Bibliothekselements.

VERSION = *HIGHEST-EXISTING / <composed-name 1..24 with-underscore>
Version des Bibliothekselements.

TYPE = S / <alphanum-name 1..8>
Typ des Bibliothekselements.

INPUT = *SYSDTA(...)
Die Werte werden von SYSDTA eingelesen.

REMOVE-KEY =
Falls SYSDTA einer Datei zugewiesen ist:
Gibt an, ob beim Lesen aus einer ISAM-Datei der Schlüssel weggelassen werden soll. Für SAM-Dateien wird dieser Operand ignoriert.

REMOVE-KEY = *YES
Bei einer ISAM-Datei wird der Schlüssel weggelassen.

REMOVE-KEY = *NO
Nur bei einer ISAM-Datei mit den Standardattributen KEY-POSITION=5 und KEY-LENGTH=8 wird der Schlüssel mit eingelesen. Für eine ISAM-Datei mit anderen Attributen führt diese Angabe zum Fehler.

Kommando-Returncode

Es ist möglich, dass ein Teil des Kommandos schon abgearbeitet und ausgeführt wurde, bevor der Fehler auftrat. In diesem Fall ist das Ergebnis des Kommandos nicht garantiert.

(SC2)SC1MaincodeBedeutung

0CMD0001Ohne Fehler
20SDP2000Warnung: Nicht alle Elemente der Eingabeliste konnten
erfolgreich abgearbeitet werden.
garantierte Meldung: SDP2000

1CMD0202Syntaxfehler

1SDP0118Kommando im falschen Kontext

3CMD2203Falsche Syntaxdatei

32CMD0221Systemfehler (interner Fehler)

64SDP0089INPUT-Fehler

64SDP0091Semantikfehler
garantierte Meldung: SDP1008

64SDP0499BEGIN-RECORD ist größer als END-RECORD

64SDP2001Keines der Elemente konnte eingelesen werden

130SDP0099Kein Adressraum mehr verfügbar

Beispiel 1

Wenn eine bestimmte Menge von Werten in einer Prozedur benutzt werden muss, können diese Werte in SYSCMD aufgelistet werden; sie müssen nicht in eine andere Datei gebracht werden.

/DECLARE-VARIABLE FILES(TYPE=*STRING),MULTIPLE-ELEMENTS=*LIST
/READ-VARIABLE *LIST(FILES),INPUT=*SYSDTA
FILE1
FILE2
FILE3
/FOR FILE=*LIST(FILES)
/   IF (NOT IS-CATALOGED-FILE(FILE))
/      WRITE-TEXT 'DATEI &FILE NICHT GEFUNDEN.'
/   END-IF
/END-FOR

Beispiel 2

Von einer Datei soll eine ganz bestimmte, konstante Anzahl von Zeilen gelesen werden: in diesem Beispiel sind es genau 10. Damit werden bei jedem Schleifendurchlauf 10 Zeilen der Datei „MY-FILE“ gelesen, und eine Liste „LINES“ wird deklariert mit der Grenze von 10 Listenelementen. Kurz: Dieses Beispiel zeigt den Inhalt der Datei „MY-FILE“ an.

/ASSIGN-SYSDTA TO=MY-FILE
/DECLARE-VARIABLE LINES(TYPE=*STRING),MULTIPLE-ELEMENTS=*LIST(LIMIT=10)
/REPEAT
/   READ-VARIABLE *LIST(LINES),INPUT=*SYSDTA
/   SHOW-VARIABLE LINES,INFORMATION=*PARAMETERS(NAME=*NONE)
/UNTIL (SIZE('LINES') LT 10)

Beispiel 3

Eine Prozedur hat folgenden Inhalt:

/DECLARE-VARIABLE VORNAME
/WRITE-TEXT 'Geben Sie einen Vornamen ein!'
/READ-VARIABLE VORNAME
/SHOW-VARIABLE VORNAME 

Ausgabe

Geben Sie einen Vornamen ein!

Eingabe

Hans

Ausgabe

VORNAME = Hans

Beispiel 4

Eine Datei soll Zeile für Zeile bei Benutzung von SYSDTA gelesen werden. Ein Fehler wird gemeldet, wenn durch READ-VARIABLE das Dateiende „EOF“ von SYSDTA gefunden wird. So zeigt dieses Beispiel einfach den Inhalt der Datei „MY-FILE“ an.

/ASSIGN-SYSDTA TO=MY-FILE
/EOF=FALSE
/WHILE (NOT EOF)
/   READ-VARIABLE LINE,INPUT=*SYSDTA
/   IF-CMD-ERROR
/       EOF=TRUE
/   ELSE
/       SHOW-VARIABLE LINE,INFORMATION=*PARAMETERS(NAME=*NONE)
/   END-IF
/END-WHILE

Beispiel 5

Die Datei SDF-P-FILE enthält folgende Datensätze:

MUELLER       : 55900 : DE : Gladbecker Strasse 7
GRANDY        : 74663 : UK : Albert Street 12
DANFERTH      : 83092 : DE : Colmberger Strasse 2
GRABATER      : 01927 : FR : rue du Couedic 27
SMITH         : 54920 : UK : Elizabeth Street 54
DUPONT        : 45888 : FR : rue de la Maderie 78
VANDENMORSE   : 94958 : BE : Brusselssteenweg 101
  1. Datensatzbereich einlesen

    /DECLARE-VARIABLE FILE (TYPE=*STRING), MULTIPLE-ELEMENTS=*LIST
    /READ-VARIABLE *LIST(FILE), INPUT=SDF-P-FILE (BEGIN-RECORD = 4, -
    /                                             END-RECORD = 7)
    /SHOW-VARIABLE FILE
    FILE(*LIST) = GRABATER      : 01927 : FR : rue du Couedic 27
    FILE(*LIST) = SMITH         : 54920 : UK : Elizabeth Street 54
    FILE(*LIST) = DUPONT        : 45888 : FR : rue de la Maderie 78
    FILE(*LIST) = VANDENMORSE   : 94958 : BE : Brusselssteenweg 101
    

    In die Variable FILE wurden die Datensätze 4 bis 7 eingelesen.

  2. Spaltenbereich aus Datensatzbereich einlesen

    /DECLARE-VARIABLE FILE (TYPE=*STRING), MULTIPLE-ELEMENTS=*LIST
    /READ-VARIABLE *LIST(FILE), INPUT=SDF-P-FILE (BEGIN-RECORD=5, -
    /                                             END-RECORD=8, -
    /                                             BEGIN-COLUMN=17, -
    /                                             END-COLUMN=21)
    /SHOW-VARIABLE FILE
    FILE(*LIST) = 54920
    FILE(*LIST) = 45888
    FILE(*LIST) = 94958
    

    In die Variable FILE wurden jeweils die Spalten 17 bis 21 aus den Datensätzen 5 bis 7 eingelesen (ein 8. Datensatz existiert nicht).

  3. Einlesen der letzten n+1 Datensätze

    /DECLARE-VARIABLE FILE (TYPE=*STRING), MULTIPLE-ELEMENTS=*LIST
    /READ-VARIABLE VARIABLE-NAME=*LIST(FILE),INPUT=SDF-P-FILE -
    /              (BEGIN-RECORD=*BEFORE-LAST-RECORD(NUMBER-OF-LINES=3))
    /SHOW-VARIABLE FILE
    FILE(*LIST) = GRABATER      : 01927 : FR : rue du Couedic 27
    FILE(*LIST) = SMITH         : 54920 : UK : Elizabeth Street 54
    FILE(*LIST) = DUPONT        : 45888 : FR : rue de la Maderie 78
    FILE(*LIST) = VANDENMORSE   : 94958 : BE : Brusselssteenweg 101

    In die Variable FILE wurden die letzten 4 Datensätze (Sätze 4 bis 7) eingelesen.

    /DECLARE-VARIABLE FILE (TYPE=*STRING), MULTIPLE-ELEMENTS=*LIST
    /READ-VARIABLE VARIABLE-NAME=*LIST(FILE),INPUT=SDF-P-FILE -
    /                                             (BEGIN-RECORD=-4)
    /SHOW-VARIABLE FILE
    FILE(*LIST) = DANFERTH      : 83092 : DE : Colmberger Strasse 2
    FILE(*LIST) = GRABATER      : 01927 : FR : rue du Couedic 27
    FILE(*LIST) = SMITH         : 54920 : UK : Elizabeth Street 54
    FILE(*LIST) = DUPONT        : 45888 : FR : rue de la Maderie 78
    FILE(*LIST) = VANDENMORSE   : 94958 : BE : Brusselssteenweg 101

    In die Variable FILE wurden die letzten 5 Datensätze (Sätze 3 bis 7) eingelesen

    /DECLARE-VARIABLE FILE (TYPE=*STRING), MULTIPLE-ELEMENTS=*LIST
    /READ-VARIABLE VARIABLE-NAME=*LIST(FILE),INPUT=SDF-P-FILE -
    /              (BEGIN-RECORD=*BEFORE-LAST-RECORD(NUMBER-OF-LINES=0))
    /SHOW-VARIABLE FILE
    FILE(*LIST) = VANDENMORSE   : 94958 : BE : Brusselssteenweg 101

    In die Variable FILE wurde nur der letzte Datensatz eingelesen.

  4. Datensätze nach String durchsuchen und Treffer einlesen

    /DECLARE-VARIABLE FILE (TYPE=*STRING), MULTIPLE-ELEMENTS=*LIST
    /READ-VARIABLE *LIST(FILE), INPUT=SDF-P-FILE (PATTERN=': DE :', -
    /                                             PATTERN-TYPE=*STRING)
    /SHOW-VARIABLE FILE
    FILE(*LIST) = MUELLER       : 55900 : DE : Gladbecker Strasse 7
    FILE(*LIST) = DANFERTH      : 83092 : DE : Colmberger Strasse 2
    

    In die Variable FILE wurden alle Datensätze eingelesen, die den String „: DE :“ enthalten.

    /READ-VARIABLE *LIST(FILE), INPUT=SDF-P-FILE (BEGIN-COLUMN=23, -
    /                                             END-COLUMN=28, -
    /                                             PATTERN=': DE :', -
    /                                             PATTERN-TYPE=*STRING)
    /SHOW-VARIABLE FILE
    FILE(*LIST) = : DE :
    FILE(*LIST) = : DE :
    

    In die Variable FILE wurden aus allen Datensätzen, die den String „: DE :“ enthalten, die Spalten 23 bis 28 eingelesen.

    /READ-VARIABLE *LIST(FILE), INPUT=SDF-P-FILE (BEGIN-COLUMN=1, -
    /                                             END-COLUMN=22, -
    /                                             PATTERN=': DE :', -
    /                                             PATTERN-TYPE=*STRING)
    /SHOW-VARIABLE FILE
    FILE(*LIST) = MUELLER       : 55900 
    FILE(*LIST) = DANFERTH      : 83092 
    

    In die Variable FILE wurden aus allen Datensätzen, die den String „: DE :“ enthalten, die Spalten 1 bis 22 eingelesen.

  5. Datensätze nach String oder regulären Ausdruck durchsuchen und Treffer einlesen

    /DECLARE-VARIABLE FILE (TYPE=*STRING), MULTIPLE-ELEMENTS=*LIST
    /READ-VARIABLE *LIST(FILE), INPUT=SDF-P-FILE (PATTERN=': DE :', -
    /                                             PATTERN-TYPE=*STRING)
    /SHOW-VARIABLE FILE
    FILE(*LIST) = MUELLER       : 55900 : DE : Gladbecker Strasse 7
    FILE(*LIST) = DANFERTH      : 83092 : DE : Colmberger Strasse 2
    

    In die Variable FILE wurden alle Datensätzen eingelesen, die den String „: DE :“ enthalten.

    /READ-VARIABLE *LIST(FILE) -
    /            , INPUT=SDF-P-FILE (PATTERN=': [DB]E :', -
    /                                PATTERN-TYPE=*REGULAR-EXPRESSION)
    /SHOW-VARIABLE FILE
    FILE(*LIST) = MUELLER       : 55900 : DE : Gladbecker Strasse 7
    FILE(*LIST) = DANFERTH      : 83092 : DE : Colmberger Strasse 2
    FILE(*LIST) = VANDENMORSE   : 94958 : BE : Brusselssteenweg 101
    

    In die Variable FILE wurden alle Datensätzen eingelesen, die den regulären Ausdruck „: [DB]E :“ (also „: DE :“ oder „: BE :“) enthalten.