Der Operand VARIABLE-NAME des Kommandos bezeichnet die Variable, der ein neuer Inhalt zugewiesen werden soll. Diese Variable kann eine einfache oder zusammengesetzte Variable sein. Bei jeder Zuweisung wird standardmäßig zunächst der alte Variableninhalt gelöscht und dann der neue Inhalt zugewiesen.
Variablennamen direkt angeben
Das Eingabeziel kann im Operanden VARIABLE-NAME direkt benannt werden, als Variablenname einer einfachen Variablen oder als Variablenname einer Struktur.
Bezeichnet NAME eine einfache Variable, muss diese Variable überschreibbar sein. Ist die angegebene Variable kein Variablenelement und noch nicht deklariert, wird sie implizit deklariert mit dem Geltungsbereich SCOPE = *CURRENT und dem Datentyp *ANY, wenn implizite Deklaration von Variablen zulässig ist.
Wenn NAME ein Variablenelement bezeichnet, das noch nicht existiert, wird es ebenfalls implizit deklariert, falls die übergeordnete zusammengesetzte Variable existiert und erweitert werden kann.
Es können mehrere Variablennamen (bis zu 2000) in Form einer Liste angegeben werden, sie sind dann in runde Klammern einzuschließen: (varname1, varname2, ...). Für jeden die-ser Variablennamen gelten die vorher beschriebenen Regeln.
Werden Variablen in einer solchen Liste angegeben, muss jeder dieser Variablen ein Wert zugewiesen werden können. Wenn die Eingabe kürzer ist als diese Liste, das heißt, wenn nicht allen Variablen Werte zugewiesen werden können, wird die Fehlerbehandlung angestoßen.
Variablen implizit erzeugen
Im Operanden NAME des Kommandos READ-VARIABLE können implizit Variablen erzeugt werden, abhängig von der Eingabe (Operand VARIABLE-NAME = *BY-INPUT(.:.)). Diese Angabe setzt voraus, dass Variablen in dem Format eingelesen werden, das das Kommando SHOW-VARIABLE mit seinen Operanden bei der Ausgabe von Variablen erzeugt. Das heißt, es werden Variablenname und Variablenwert eingelesen.
Werden einfache Variablen eingelesen, die bereits existieren, wird ihnen ein Wert zugewiesen.
Handelt es sich bei den einfachen Variablen um Variablenelemente, sind folgende Fälle zu unterscheiden:
Es wird ein Listenelement eingelesen: Das Kommando wird abgewiesen.
Es wird ein Strukturelement eingelesen, dessen übergeordnete Struktur noch nicht deklariert ist: Die Struktur wird implizit mit SCOPE = *CURRENT angelegt.
Wenn eine statische Struktur eingelesen wird, die in der Prozedur noch nicht existiert, wird sie nicht als statische, sondern als dynamische Struktur neu angelegt.
Sowohl für das Einlesen einfacher als auch zusammengesetzter Variablen gilt: Wird eine Variable eingelesen, die noch nicht initialisiert ist (Inhalt *NO-INIT), das heißt, der noch kein Wert zugewiesen wurde, wird die entsprechende Variable in der Prozedur implizit gelöscht (implizites FREE-VARIABLE).
In eine Listenvariable einlesen
Im Operanden VARIABLE-NAME des Kommandos READ-VARIABLE kann der Name einer Listenvariablen angegeben werden. Wenn in der Prozedur noch keine Liste dieses Namens existiert, wird, wenn zulässig, implizit eine Liste angelegt mit dem Geltungsbereich
SCOPE = *CURRENT und dem Datentyp TYPE = *STRING.
Die Liste kann überschrieben (WRITE-MODE = *REPLACE) oder erweitert werden (WRITE-MODE = *EXTEND).
„Überschreiben“ bedeutet: Der alte Inhalt der Liste wird zunächst gelöscht. Dann werden den Listenelementen der Reihe nach die eingelesenen Werte zugewiesen, angefangen beim Listenkopf. „Erweitern“ bedeutet: Der alte Inhalt der Liste bleibt erhalten. Bei jeder Zuweisung wird die Liste um ein Element erweitert. Das heißt, an das Ende der Liste wird ein Element angehängt, dem dann der eingelesene Wert zugewiesen wird.