REINPUT
|
[FULL ]
[(statement-parameters)]
|
USING HELP
|
||
WITH-TEXT-option | ||||
[MARK-option] | ||||
[ALARM-option] |
Dieses Dokument behandelt folgende Themen:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Verwandte Statements: DEFINE
WINDOW
| INPUT
| SET WINDOW
Gehört zur Funktionsgruppe: Bildschirmgenerierung für interaktive Verarbeitung
Das Statement REINPUT
dient dazu, zu einem
INPUT
-Statement
zurückzukehren und dieses erneut auszuführen. Es wird in der Regel dazu
benutzt, eine Fehlermeldung auszugeben, die dem Benutzer sagt, dass auf das
INPUT
-Statement hin ungültige Daten eingegeben wurden. Siehe
Beispiel
1.
Zwischen einem INPUT
-Statement und dem dazugehörigen
REINPUT
-Statement werden keine WRITE
- oder
DISPLAY
-Statements
ausgeführt. Im Batch-Betrieb ist das REINPUT
-Statement nicht
gültig.
Wenn das REINPUT
-Statement ausgeführt wird, setzt es den
Programmstatus, was die Verarbeitung von Unterprogrammen, besonderen
Bedingungen und Verarbeitungsschleifen anbelangt, wieder auf den Stand zurück,
der galt, als das INPUT
-Statement ausgeführt wurde (vorausgesetzt
das INPUT
-Statement ist nach wie vor aktiv). Wurde nach der
Ausführung des INPUT
-Statements eine Verarbeitungsschleife
gestartet und das REINPUT
-Statement befindet sich innerhalb dieser
Schleife, so wird die Schleife abgebrochen und erst dann neu gestartet, wenn
das INPUT
-Statement aufgrund des REINPUT
-Statements
erneut ausgeführt worden ist.
Wird nach der ersten Ausführung des INPUT
-Statements eine
Hierarchie von Unterprogrammen aufgerufen und das
REINPUT
-Statement steht in einem dieser Unterprogramme, so kehrt
Natural automatisch zu dem Programm zurück, das bei der Ausführung des
INPUT
-Statements aktiv war.
Steht ein INPUT
-Statement innerhalb einer
Verarbeitungsschleife, eines Unterprogramms oder eines nur unter bestimmten
Bedingungen verarbeiteten Statement-Blocks, so kann ein
REINPUT
-Statement nicht ausgeführt werden, wenn der Status, unter
dem das INPUT
-Statement ausgeführt wurde, bereits beendet ist.
Eine derartige Situation würde einen Programmabbruch und eine entsprechende
Fehlermeldung zur Folge haben.
Anmerkung:
Der MODIFIED
-Status einer in dem betreffenden
INPUT
-Statement verwendeten Kontrollvariablen wird bei der
Ausführung von einem REINPUT
-Statement (ohne
FULL
-Option) nicht
zurückgesetzt. Um zu überprüfen, ob einer Attributkontroll-Variable der Status
MODIFIED
(geändert) zugewiesen wurde, benutzen Sie die
MODIFIED
-Option.
REINPUT FULL |
Wenn Sie die Option
Anmerkung: Eine andere Eigenschaft des Siehe auch Beispiel 3 - REINPUT FULL mit MARK POSITION. |
||
---|---|---|---|
statement-parameters |
Mit einem Auf Feldebene gesetzte Parameter (siehe MARK-Option) haben für das betreffende Feld Gültigkeit vor auf Statement-Ebene gesetzten. |
||
Parameter, die mit REINPUT-Statement angegeben werden können: | Spezifikation | ||
S=auf Statement-Ebene | |||
E=auf Element-Ebene | |||
AD | Attribute Definition * | SE | |
CD | Color Definition | S | |
* Wird Informationen zu den o.g. Session-Parametern finden Sie in der Parameter-Referenz. |
|||
USING HELP |
Beispiel: REINPUT USING HELP MARK 3 In diesem Beispiel wird die für das dritte Feld der
|
||
WITH-TEXT-option | Mit der Option WITH
TEXT können Sie einen Text angeben, der in der Meldungszeile angezeigt
werden soll. Siehe WITH
TEXT-Option weiter unten.
|
||
MARK-option | Mit der MARK -Option
können Sie ein bestimmtes Feld markieren, d.h. bei der Ausführung des
REINPUT -Statements wird der Cursor in dieses Feld plaziert. Siehe
MARK-Option
weiter unten.
|
||
ALARM-option | Diese Option bewirkt, dass der
Warnton des Terminals ausgelöst wird, wenn das REINPUT -Statement
ausgeführt wird. Siehe ALARM-Option weiter
unten.
|
Mit der Option WITH TEXT
können Sie einen Text angeben,
der in der Meldungszeile angezeigt werden soll. Der Text ist in der Regel eine
Meldung, die angibt, welche Maßnahme zum Abarbeiten des Bildschirms getroffen
werden sollte, oder wie der Fehler korrigiert werden kann.
[WITH ]
[TEXT ]
|
*
operand1
|
[(attributes)] [,operand3]7 | ||
operand2 |
Operanden-Definitionstabelle:
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | N | P | I | B * | ja | nein | ||||||||||||
operand2 | C | S | A | U | ja | nein | ||||||||||||||
operand3 | C | S | A | U | N | P | I | F | B | D | T | L | ja | nein |
* Format B von operand1 kann nur mit einer Länge von kleiner gleich 4 benutzt werden.
Syntax-Element-Beschreibung:
operand1 |
Meldungstext aus der
Natural-Fehlermeldungsdatei:
Als operand1 geben Sie eine Natural-Fehlernummer an. Natural liest dann die entsprechende Fehlermeldung von der Natural- Fehlermeldungsdatei. Es können entweder benutzerdefinierte Meldungen oder Natural- Systemmeldungen gelesen werden.
Siehe auch Beispiel 4 — WITH TEXT-Option. Natural-Meldungsdateien werden mit derSYSERR -Utility erstellt und gepflegt.
|
---|---|
operand2 |
Meldungstext:
Als operand2 geben Sie den Text an, der in der Meldungszeile ausgegeben werden soll. Siehe auch Beispiel 4 — WITH TEXT-Option. |
attributes |
Ausgabe-Attribute:
Als attributes können Sie operand1 oder operand2 bestimmte Anzeige- und Farbattribute zuordnen. Diese Attribute und die Syntax, die benutzt werden kann, sind im Abschnitt Ausgabe-Attribute weiter unten beschrieben. |
operand3 |
Dynamische Ergänzung im
Meldungstext:
operand3 kann in Form einer numerischen Konstanten oder Textkonstanten oder als Name einer Variablen angegeben werden. Der angegebene Wert dient dazu, einen Teil einer mit
operand1 oder operand2
angegebenen Meldung dynamisch zu generieren. Innerhalb der Fehlermeldung dient
die Notation Siehe auch Beispiel 4 — WITH TEXT-Option. Anmerkung: Nicht signifikante Nullen oder Leerzeichen werden aus dem Feldwert entfernt, bevor er in einer Meldung angezeigt wird. |
attributes sind zur Text-Anzeige verwendete Ausgabeattribute. Sie können folgende attributes angeben:
AD =AD-value
|
||
CD =CD-value
|
Die möglichen Parameterwerte sind in der Parameter-Referenz aufgeführt:
Anmerkung:
Der Compiler akzeptiert mehr als einen Attributwert für ein
Ausgabefeld. Beispielsweise können Sie angeben: AD=BDI
. In einem
solchen Fall gilt allerdings nur der letzte Wert. In dem vorliegenden Beispiel
greift nur der Wert I
, und das Ausgabefeld wird intensiviert
dargestellt.
Mit der MARK
-Option können Sie ein bestimmtes Feld
markieren, so dass bei der Ausführung des REINPUT
-Statements der
Cursor in dieses Feld plaziert wird. Sie können auch eine bestimmte Stelle
innerhalb eines Feldes markieren. Außerdem können Sie Felder gegen Eingabe
schützen sowie ihre Anzeige- und Farbattribute ändern.
MARK
[POSITION
operand4
[IN ]] [FIELD ]
|
operand5 | [(attributes)] | ||||
*fieldname |
Operanden-Definitionstabelle:
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand4 | C | S | N | P | I | ja | nein | |||||||||||||
operand5 | C | S | A | N | P | I | ja | nein |
Syntax-Element-Beschreibung:
operand5 |
Das zu markierende Feld:
Jedes mit einem Die Notation *fieldname wird verwendet,
um den Cursor in ein Feld zu positionieren, und zwar mittels des (im
Ist das betreffende INPUT #ARRAY (A1/1:5) ... REINPUT (AD=P) 'TEXT' MARK *#ARRAY (2:3) Ist operand5 ebenfalls ein Array, so
werden die Werte von operand5 als Feldnummern für
das RESET #X(N2/1:2) INPUT #ARRAY ... ... REINPUT (AD=P) 'TEXT' MARK #X (1:2) |
---|---|
MARK POSITION |
POSITION-Option:
Mit der MARK POSITION-Option können Sie den Cursor an eine bestimmte Stelle, die Sie mit operand4 angeben, innerhalb eines Feldes plazieren. Siehe auch Beispiel 3 - REINPUT FULL mit MARK POSITION. |
operand4 |
Cursor-Position: operand4
gibt die Cursor-Position an, operand4 darf keine
Dezimalziffern enthalten.
|
attributes |
Attribut-Zuweisungen: Siehe
Attribut-Zuweisungen
weiter unten.
|
Sie können explizite Attribute verwenden, um die Darstellung und Farbe der Anzeige der WITH TEXT
-Meldung und das Layout des MARK
(welches durch das REINPUT
-Statement positioniert wird) festzulegen.
B
|
BL
|
||||||||||||
C
|
GR
|
||||||||||||
D
|
NE
|
||||||||||||
AD =[P ]
|
I |
CD=
|
PI
|
[CV =operand6]
|
|||||||||
N
|
RE
|
||||||||||||
U
|
TU
|
||||||||||||
V
|
YE
|
Operanden-Definitionstabelle:
Operand | Possible Structure | Possible Formats | Referencing Permitted | Dynamic Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand6
|
S | C | no | no |
Mit dem Attribut AD=P
können Sie ein Eingabefeld (AD=A
oder AD=M
) gegen Eingaben schützen.
Anmerkung:
Reine Ausgabefelder (AD=O
) können nicht durch ein
entsprechendes Attribut zu Eingabefeldern gemacht werden.
Informationen zu den Attributen AD
,
CD
und CV
finden Sie in der
Parameter Reference-Dokumentation.
Die Attribute für die Felder WITH TEXT
und MARK
brauchen Sie nicht fest anzugeben, sondern Sie können sie dynamisch mittels einer Attributkontrollvariablen zuweisen, die
in einer (CV=)
-Klausel referenziert wird. Wenn sowohl eine AD
- als auch eine CV
-Option bei demselben Feld angegeben werden, dann werden die Attribute aus der AD
-Option vollständig ignoriert, mit Ausnahme von der Option (AD=P)
, die wirksam bleibt.
Wird für dasselbe Feld eine CD
- und eine CV
-Option angegeben, dann wird die Farbe von der CV
-Option übernommen. Falls die CV
-Variable keine Farbe enthält, wird für dieses Feld die Farbe aus der CD
-Option übernommen.
Wird AD=P
auf Statement-Ebene gesetzt, so sind alle Felder
geschützt außer den in der MARK
-Option
angegebenen.
[AND ] [SOUND ] ALARM
|
Diese Option bewirkt, dass der Warnton des Terminals ausgelöst wird,
wenn das REINPUT
-Statement ausgeführt wird. Voraussetzung ist,
dass die verwendete Terminal-Hardware dies ermöglicht.
** Example 'REIEX1': REINPUT ************************************************************************ DEFINE DATA LOCAL 1 #FUNCTION (A1) 1 #PARM (A1) END-DEFINE * INPUT #FUNCTION #PARM * DECIDE FOR FIRST CONDITION WHEN #FUNCTION = 'A' AND #PARM = 'X' REINPUT 'Funktion A with parameter X selected.' MARK *#PARM WHEN #FUNCTION = 'C' THRU 'D' REINPUT 'Funktion C or D selected.' WHEN #FUNCTION = 'X' STOP WHEN NONE REINPUT 'Please enter a valid function.' MARK *#FUNCTION END-DECIDE * END
Ausgabe des Programms REIEX1
:
#FUNCTION A #PARM Y
Nach Drücken von EINGABE:
PLEASE ENTER A VALID FUNCTION #FUNCTION A #PARM Y
** Example 'REIEX2': REINPUT (with attributes) ************************************************************************ DEFINE DATA LOCAL 1 #A (A20) 1 #B (N7.2) 1 #C (A5) 1 #D (N3) END-DEFINE * INPUT (AD=A) #A #B #C #D * IF #A = ' ' OR #B = 0 REINPUT (AD=P) 'RETYPE VALUES' MARK *#A (AD=I CD=RE) /* put cursor on first field *#B (AD=U CD=PI) /* and change colours END-IF * END
** Example 'REIEX3': REINPUT (with FULL and POSITION option) ************************************************************************ DEFINE DATA LOCAL 1 #A (A20) 1 #B (N7.2) 1 #C (A5) 1 #D (N3) END-DEFINE * INPUT (AD=M) #A #B #C #D * IF #A = ' ' COMPUTE #B = #B + #D RESET #D END-IF * IF #A = SCAN 'TEST' OR = ' ' REINPUT FULL 'RETYPE VALUES' MARK POSITION 5 IN *#A END-IF * END
Ausgabe des Programms REIEX3
:
RETYPE VALUES #A #B 0.00 #C #D 0
** Example 'REIEX4': REINPUT (with TEXT option) ************************************************************************ DEFINE DATA LOCAL 01 #NAME (A8) 01 #TEXT (A20) END-DEFINE * * INPUT WITH TEXT 'Enter a program name.' 'Program name:' #NAME * IF #NAME = ' ' REINPUT WITH TEXT 'Input missing. Enter a name.' END-IF * IF #NAME NE MASK (A) MOVE 'Invalid input.' TO #TEXT REINPUT WITH TEXT ':1: Name must start with a letter.',#TEXT ELSE /* Using Natural error message 7600 for demonstration COMPRESS *INIT-USER 'on' *DAT4I INTO #TEXT INPUT WITH TEXT *-7600,#NAME,#TEXT 'Input accepted.' END-IF END
DEFINE DATA LOCAL 1 #HELLO (A5) INIT <'HELO'> 1 #VAR (A20) INIT <'Enter "HELLO"'> 1 #CV (C) END-DEFINE * INPUT (IP=OFF) #HELLO (AD=M) * IF #HELLO NE 'HELLO' THEN MOVE (AD=U CD=RE) TO #CV REINPUT FULL WITH TEXT #VAR (CD=YE) MARK *#HELLO (CV=#CV) END-IF END