Diese Form des INPUT
-Statements wird benutzt, wenn bei der
Eingabeverarbeitung eine mit dem Natural-Map-Editor erstellte Eingabemaske
(Map) verwendet werden soll.
Hierbei gibt es zwei Möglichkeiten:
das Programm enthält keine Parameterliste
das Programm enthält eine Parameterliste (operand1).
INPUT
[WINDOW= 'window-name']
[WITH-TEXT-option]
|
||
[MARK-option] | ||
[ALARM-option] | ||
[USING ] MAP map-name [NO ERASE ]
|
||
operand1 | ||
NO PARAMETER |
Dieses Dokument behandelt folgende Themen:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Die folgenden Anforderungen müssen bei der Benutzung von INPUT
USING MAP
ohne Parameterliste erfüllt werden:
Der map-name muss als alphanumerische Konstante (maximal 8 Zeichen lang) angegeben werden.
Die verwendete Map muss bereits erstellt sein, bevor das Programm, das sie referenziert, kompiliert werden kann.
Die Feldnamen werden bei der Kompilierung dynamisch von der Map-Source übernommen. Die Feldnamen müssen in Map und Programm identisch sein.
Zu diesem Zeitpunkt muss auf alle im INPUT
-Statement
referenzierten Felder zugegriffen werden können.
Im Structured Mode müssen die Felder vorher definiert werden, und Datenbankfelder müssen durch Referenzierung der betreffenden Verarbeitungsschleife bzw. des betreffenden Views korrekt referenziert werden.
Im Reporting Mode müssen Benutzervariablen in der Map neu definiert werden.
Wird das Layout der Map verändert, müssen die die Map verwendenden Programme nicht neu katalogisiert werden. Wenn aber Array-Strukturen oder -Namen, Format/Länge von Feldern geändert oder Felder zur Map hinzugefügt bzw. aus ihr gelöscht werden, müssen die die Map verwendenden Programme neu katalogisiert werden.
Die Map-Source muss bei der Programm-Kompilierung zur Verfügung
stehen; sonst kann das INPUT USING MAP
-Statement nicht kompiliert
werden.
Anmerkung:
Wollen Sie das Programm kompilieren, obwohl noch keine Map zur
Verfügung steht, geben Sie NO PARAMETER
an: das INPUT USING
MAP
-Statement kann dann kompiliert werden, auch wenn die Map noch nicht
vorhanden ist.
Wenn Sie Namen der Eingabefelder (operand1) im Programm definieren, müssen diese nicht mit den für die Maske (Map) verwendeten Feldnamen übereinstimmen.
Die Reihenfolge der Felder im Programm muss allerdings zur Reihenfolge der Felder in der Maske passen. Hierbei ist zu beachten, dass der Masken-Editor die in der Maske definierten Felder in alphabetischer Reihenfolge der Feldnamen sortiert. Näheres hierzu finden Sie in der Masken-Editor-Beschreibung in der Editoren-Dokumentation.
Das Programm-Editor-Zeilenkommando
.I(mapname)
kann dazu verwendet werden,
ein vollständiges INPUT USING MAP
-Statement mit einer
Parameterliste, die anhand der in der angegebenen Map definierten Felder
generiert wird, zu erstellen.
Wird das Layout der Map verändert, muss das Programm nicht neu katalogisiert werden, es sei denn, in der Map werden Felder gelöscht, hinzugefügt oder umbenannt, Feldformate/-längen geändert oder Array-Strukturen modifiziert.
Bei der Ausführung prüft Natural, ob Format und Länge der Map-Felder in Einklang mit denen der Programm-Felder stehen. Ist dies nicht der Fall, wird eine entsprechende Fehlermeldung ausgegeben.
Operanden-Definitionstabelle:
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
map-name
|
C | S | A | U | ja | nein | ||||||||||||||
operand1
|
S | A | A | U | N | P | I | F | B | D | T | L | C | ja | ja |
Syntax-Element-Beschreibung:
Syntax-Element | Beschreibung |
---|---|
INPUT
WINDOW='window-name' |
Eingabe-Fenster:
Siehe Syntax
1 des |
WITH
TEXT/MARK/ALARM-options
|
Optionen:
Diese Optionen sind unter Syntax 1 des
|
USING
MAP map-name
|
Name der Eingabemaske:
Mit der Der map-name kann als 1 bis 8 Zeichen
lange alphanumerische Konstante oder in Form einer Benutzervariablen angegeben
werden. Wird eine Variable verwendet, muss diese vorher definiert worden sein.
Die Groß-/Kleinschreibung des Namens wird nicht
verändert. Der Map-Name darf ein Und-Zeichen (&) enthalten; dies
wird dann zur Ausführungszeit den aus einem Zeichen bestehenden Code ersetzt,
der dem aktuellen Wert der Systemvariablen
Die Ausführung des |
NO ERASE |
Überlagerte Anzeige:
Siehe Syntax
1 des |
operand1
|
Zu verwendende Felder:
Es können Datenbankfelder oder Benutzervariablen angegeben werden, die jedoch alle vorher definiert worden sein müssen. Die Felder müssen in Anzahl, Reihenfolge Format und Länge und für (Arrays) in der Anzahl der Ausprägungen mit den referenzierten Map-Feldern übereinstimmen, da andernfalls ein Fehler generiert wird. Ändert sich der Wert eines Datenbankfeldes aufgrund einer
|
Sie können den Eingabemodus mit dem Session-Parameter
IM
oder den Terminalkommandos %F
und
%D
ändern.
Der Forms-Modus wird mit dem Terminalkommando
%F
eingeschaltet.
Im Forms-Modus (Profil/Session-Parameter
IM=F
) zeigt
Natural den gesamten Ausgabetext des Map-Layouts Feld für Feld an, und zwar
entsprechend der Positionierungsparameter. Dadurch kann der Benutzer Daten Feld
für Feld eingeben. Wenn alle Daten eingegeben sind, wird eine Hardcopy-Ausgabe
erzeugt, die genau dem Abbild auf dem Bildschirm entspricht.
Im Falle eines Fehlers kann der Benutzer das Terminalkommando
%R
eingeben und sodann
das gesamte Formular erneut eingeben. Die Eingaben werden dann wie bei der
ersten Ausführung des INPUT
-Statements verarbeitet.
Der Keyword/Delimiter-Modus wird mit dem Terminalkommando
%D
eingeschaltet.
In diesem Modus (Profil/Session-Parameter
IM=D
) können Daten
unter Verwendung von Schlüsselwörtern oder in Abhängigkeit von der
Position/Reihenfolge der Felder eingegeben werden.
Daten, die im Keyword/Delimiter-Modus eingegeben werden, werden wie beim Screen-Modus auf Gültigkeit geprüft. Falls versucht wird, mehr Zeichen einzugeben, als für ein Feld definiert wurden, wird eine Fehlermeldung zurückgegeben.
Wenn das INPUT
-Statement auf einem gepufferten Terminal
(Typ 3270) oder einer Workstation im Keyword/Delimiter-Modus verarbeitet werden
soll, müssen alle Daten, die einem INPUT
-Statement zugewiesen
werden sollen, auf demselben Bildschirm eingegeben werden. ENTER
soll erst dann benutzt werden, nachdem alle Daten für das
INPUT
-Statement eingegeben worden sind.
Bei der Dateneingabe unter Verwendung von Schlüsselwörtern kann der
Terminal-Operator Daten für die einzelnen Felder eingeben, indem er den
Eingabeaufforderungstext als Schlüsselwort (Keyword) benutzt, der im
Forms-Modus vor einem Feld ausgegeben werden würde, um das betreffende Feld zu
identifizieren. Nach dem Schlüsselwort muss das Eingabezuweisungszeichen stehen
(siehe Session-Parameter IA
) und unmittelbar
danach die Eingabedaten. Alle Stellen nach dem Eingabe-Zuweisungszeichen bis
hin zum Eingabebegrenzungszeichen (siehe Session-Parameter
ID
) werden
als Daten genommen. Nach dem letzten Datenelement braucht kein
Eingabebegrenzungszeichen zu stehen. Schlüsselwort-Dateneingaben für die
einzelnen Felder müssen durch das Eingabebegrenzungszeichen voneinander
getrennt sein und können in beliebiger Reihenfolge stehen. Falls der
Terminal-Operator ein Schlüsselwort eingibt, das nicht im
INPUT
-Statement definiert ist, wird eine entsprechende
Fehlermeldung zurückgegeben. Es brauchen nicht alle Felder mit Eingabedaten
gefüllt zu werden. Felder, in die nichts eingegeben wird, werden auf
Leerzeichen (alphanumerische Felder) bzw. Null (numerische und hexadezimale
Felder) gesetzt.
Ein Schlüsselwort und das entsprechende Eingabefeld müssen sich in
derselben logischen Zeile befinden. Wenn ihre Gesamtlänge länger als die
Zeilenlänge ist, passen Sie die Zeilenlänge (siehe Parameter
LS
) so an,
dass Schlüsselwort und Feld in eine Zeile passen.
Bei der Dateneingabe unter Verwendung eines Indexes kann der
Terminal-Operator Daten für die einzelnen Felder eingeben, indem er ihre
ordinalen Werte mit einem Prozentzeichen (%) als Präfix benutzt. Nach der
Indexangabe muss das Eingabezuweisungszeichen stehen (siehe Session-Parameter
IA
) und
unmittelbar danach die Eingabedaten.
Indizierte Daten für die verschiedenen Felder können in beliebiger
Reihenfolge stehen. Sie müssen durch Eingabebegrenzungszeichen (siehe
Session-Parameter ID
) voneinander
getrennt sein. Falls der angegeben ordinale Wert keinem der Werte eines
existierenden Feldes entspricht, wird eine entsprechende Fehlermeldung
zurückgegeben. Es brauchen nicht alle Felder mit Eingabedaten gefüllt zu
werden. Felder, in die nichts eingegeben wird, werden auf Leerzeichen
(alphanumerische Felder) bzw. Null (numerische und hexadezimale Felder)
gesetzt.
Bei der Dateneingabe in Abhängigkeit von der Position der Felder gibt
der Terminal-Operator allein die Daten für die einzelnen Felder ein. Diese
müssen durch Eingabebegrenzungszeichen (siehe Session-Parameter
ID
)
voneinander getrennt sein. Die Reihenfolge der Felder bei der Dateneingabe muss
der Reihenfolge der Eingabefelder im INPUT
-Statement
entsprechen.
Der Benutzer kann vom positionalen Modus in den Schlüsselwortmodus
wechseln, indem er zunächst eine Anzahl von durch Eingabebegrenzungszeichen
voneinander getrennten Werten im positionalen Modus eingibt und dann bei
ausgewählten Feldern durch Angabe des jeweiligen Schlüsselworts vor den Werten
in den Schlüsselwortmodus wechselt. Nachdem zum Positionieren eines Feldes ein
Schlüsselwort benutzt worden ist, werden alle nicht auf ein Schlüsselwort
bezogenen Eingaben, die auf das Schlüsselwort folgen, als positionale Eingaben
verarbeitet, die zu den Feldern nach dem zuvor ausgewählten Feld im
INPUT
-Statement folgen.
Wenn Sie das folgende Programm aus der Kommandozeile ausführen
***** Program PGM1 ***** DEFINE DATA LOCAL 1 #F1 (A10) 1 #F2 (A10) 1 #F3 (A10) END-DEFINE INPUT (IP=ON) / 'FLD1' #F1 / 'FLD2' #F2 / 'FLD3' #F3 WRITE 'FLD1' #F1 / 'FLD2' #F2 / 'FLD3' #F3 END
und dabei eines der folgenden Kommandos benutzen, wobei das Komma
(,
) als Eingabebegrenzungszeichen benutzt wird,
PGM1 FLD1=AA,FLD3=CC |
Schlüsselworteingabe |
PGM1 %1=AA,%3=CC |
Indexeingabe |
PGM1 AA,,CC |
positionale Eingabe |
PGM1 AA,FLD3=CC |
positionale Eingabe kombiniert mit Schlüsselworteingabe |
PGM1 AA,FLD2=,CC |
positionale Eingabe kombiniert mit Schlüsselworteingabe |
PGM1 AA,%3=CC |
positionale Eingabe kombiniert mit Indexeingabe |
dann erhalten Sie immer die folgende Ausgabe:
FLD1 AA FLD2 FLD3 CC
Daten, die mittels eines FETCH
-, RUN
- oder STACK
-Statements auf dem
Natural-Stack
abgelegt wurden, werden bei der Ausführung des nächsten
INPUT
-Statements als Eingabedaten verarbeitet.
Das INPUT
-Statement verarbeitet die Daten in dem oben
beschriebenen Keyword/Delimiter-Modus.
Felder, für die keine Eingabedaten zur Verfügung stehen, werden je nach Format mit Leerzeichen bzw. Nullen gefüllt. Sind mehr Daten als Eingabefelder vorhanden, so werden überschüssige Eingabedaten ignoriert.
Wenn ein Feld mit Daten aus dem Natural-Stack gefüllt wird, gelten die Feldattribute nicht für die Daten.
Über die Natural-Systemvariable *DATA
können Sie erfahren, wieviele Datenelemente gegenwärtig im Natural-Stack zur
Verfügung stehen.
Folgende Themen werden behandelt:
Im Batch-Forms-Modus wird die Eingabe-Map angezeigt. Für jede Zeile,
die ein oder mehrere Eingabefelder (AD=A
oder
AD=M
) enthält, wird ein Datensatz gelesen, und die in
dem Satz enthaltenen Daten werden den entsprechenden Feldern zugeordnet.
Eingabedatenfelder werden als benachbart angesehen. Werden keine
Delimiter-Zeichen verwendet, so müssen die Daten genau den intern definierten
Feldlängen entsprechend eingegeben werden. Bei numerischen Feldern müssen
gegebenenfalls eine Stelle für das Vorzeichen (falls
SG=ON
gesetzt ist) und/oder eine Stelle für das Komma (Dezimalpunkt) berücksichtigt
werden.
Werden Delimiter-Zeichen verwendet, um die Eingabedaten der einzelnen
Felder voneinander zu trennen, so ist dies nicht erforderlich; die Eingabedaten
werden dann jeweils von links nach rechts ab Stelle 1 verarbeitet. Für die
Eingabe der Daten gelten die unter
Eingabe von
Daten als Reaktion auf ein INPUT-Statement beschriebenen
Regeln. Darüber hinaus kann mit dem Zuweisungszeichen für Eingabe-Parameter
(siehe Profil- und Session-Parameter IA
) bewirkt werden,
dass der Inhalt eines *OUTIN
-Feldes nicht
zurückgesetzt wird.
Im Batch-Betrieb gilt für diesen Modus dasselbe wie im TP-Betrieb, allerdings mit folgenden Ausnahmen:
Das Drucken der gesamten Eingabemaske kann über das Terminalkommando
%Q
gesteuert
werden.
*OUTIN
-Felder behalten ihre
ursprünglichen Werte, wenn diese nicht explizit geändert werden.
Folgende Terminalkommandos können verwendet
werden, wenn ein INPUT
-Statement im Batch-Betrieb auf einem
Großrechner verwendet wird:
Terminalkommando | Funktion |
---|---|
%*
|
Unterdrückung des nächsten
Eingabedatensatzes:
Wenn in Position 1 oder 2 eines Datensatzes eingegeben, bewirkt
DATA RECORD %* SUPPRESSED DATA RECORD |
%
|
Fortsetzung des Datensatzes:
Als letztes Zeichen eines Datensatzes bewirkt
DATA, RECORD, WITH, CONTINUATION, % CONTINUATION RECORD INPUT V1 V2 V3 V4 V5 V6 DISPLAY V1 V2 V3 V4 V5 V6 erzeugt folgende Ausgabe: DATA RECORD WITH CONTINUATION CONTINUATION RECORD |
%/
|
Dateiende-Bedingung:
|
%%
|
Restart-Punkte setzen:
Sie können mit dem Terminalkommando %% Restart-Punkte in den Eingabedateien setzen und so die Synchronisation der Eingabedateien im Falle eines Fehlers sicherstellen. |
%.
|
Lesen der Eingabewerte beenden:
Lesen der Eingabewerte für das gerade ausgeführte
|
%Knn
|
Simulieren von PF-Tasten bzw.
PA-Tasten:
Dadurch können PF-Tastenfunktionen auch im Batch-Betrieb verwendet werden. |
%KPn
|
|
%Q
|
Maskenausgabe im Batch-Betrieb
unterdrücken: Bewirkt, dass Masken, die zum Lesen von
Eingabedaten verwendet werden, nicht mit ausgedruckt werden.
|
Ausführliche Informationen zu den oben genannten Kommandos finden Sie in der Terminalkommandos-Dokumentation.
Zur Verwendung des INPUT
-Statements im Batch-Betrieb ist
zusätzliche JCL erforderlich. Bitte wenden Sie sich an Ihren
Natural-Administrator um sicherzustellen, dass diese JCL bereitgestellt ist,
bevor Sie eine Batch-Ausführung versuchen.