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 REINPUT
-Statement 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.
Siehe auch Dialog-Gestaltung, Statements REINPUT/REINPUT FULL im Leitfaden zur Programmierung.
Wird ein Eingabe-/Ausgabefeld (Option
(AD=M)
)
durch ein INPUT
-Statement angezeigt, werden die am Schirm
sichtbaren Daten nur dann in die Variable zurück übertragen, wenn das Feld als
"verändert" (MODIFIED
) angesehen wird. Ein Feld
erhält den Status MODIFIED
, wenn eine der folgenden Operationen
erfolgt ist:
Der Inhalt des Feldes wurde verändert (d.h., es wurden andere Daten in das Feld eingegeben).
Die Taste EEOF (Erase to End of Field/Löschen bis Feldende) wird bei einem leeren Feld gedrückt.
Leerzeichen werden in ein leeres Feld oder nach dem letzten Nicht-Leerzeichen im Feld eingegeben.
Der Profilparameter CVMIN
wurde auf
ON
gesetzt und die Daten im Feld werden durch Editiermaßnahmen
verändert, die letzten Endes zur Wiederherstellung des Feldinhaltes führen
(z.B. durch Überschreiben des ersten Zeichens mit dem vorhandenen Zeichen).
Der Inhalt eines Feldes, der letztendlich unverändert bleibt, wird nicht vom Bildschirmfeld in die Variable übertragen.
Die Ausführung eines REINPUT
-Statements (ohne
FULL
-Option) hat keinen Einfluss auf den
MODIFIED
-Status eines Eingabe-/Ausgabefeldes. Ein Feld gilt
weiterhin als nicht verändert, wenn es nicht über das
INPUT
-Statement mittels einer der oben aufgelisteten Operationen
verändert wurde. Anders ausgedrückt wird ein Feld als verändert behandelt, wenn
mindestens eine der erwähnten Operationen durchgeführt wurde, und zwar
unabhängig davon, wie oft das INPUT
-Statement durch
REINPUT
-Statements (ohne FULL
-Option) neu gesendet
wurde.
Mit anderen Worten wird ein mittels INPUT
-Statement
angezeigter Feldwert, der von einem REINPUT
-Statement (ohne
FULL
-Option) getriggert wurde, nur dann in die Variable
übernommen, wenn der Feldinhalt durch eine der genannten Operationen verändert
wurde.
Der MODIFIED
-Status kann geprüft werden, wenn im
Programmcode eine Attributkontrollvariable (Option
CV
) zu dem Feld
zugeordnet wurde, das mit der
MODIFIED
-Option
z.B. des IF
-Statements nach dem INPUT
-Statement
geprüft wird.
Syntax-Element-Beschreibung:
Syntax-Element | Beschreibung | |
---|---|---|
REINPUT FULL
|
FULL-Option:
Wenn Sie die Option
Anmerkung: Eine andere Eigenschaft des Siehe auch Beispiel 3 - REINPUT FULL mit MARK POSITION. |
|
statement-parameters |
Parameter:
Bei einem Auf Element-Ebene (Feldebene) gesetzte Parameter (siehe MARK-Option) haben für das betreffende Feld Gültigkeit vor den auf Statement-Ebene gesetzten. |
|
Parameter, die mit dem
REINPUT- Statement angegeben werden können:
|
Angabe (S = auf Statement-Ebene, E = auf Element-Ebene) | |
AD -
Attributdefinition * |
SE | |
CD -
Farbdefinition
|
S | |
* Wenn Sie Informationen zu den o.g. Session-Parametern finden Sie in der Parameter-Referenz-Dokumentation. |
||
USING HELP
|
USING HELP-Option:
Diese Option bewirkt, dass die für die Eingabemaske
(
Beispiel: REINPUT USING HELP MARK 3 In diesem Beispiel wird die für das dritte Feld der Eingabemaske definierte Helproutine aufgerufen. |
|
WITH-TEXT-option
|
WITH TEXT-Option:
Mit dieser Option können Sie einen Text angeben, der in der Meldungszeile angezeigt werden soll. Siehe WITH TEXT Option weiter unten. |
|
MARK-option
|
MARK-Option
Mit dieser Option können Sie ein bestimmtes Feld
markieren, d.h. bei der Ausführung des Siehe MARK Option weiter unten. |
|
ALARM-option
|
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 dieser Option 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 ]
|
[(attributes)] [,operand3]7 |
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:
Syntax-Element | Beschreibung |
---|---|
operand1
|
Meldungstext aus der
Natural-Fehlermeldungsdatei:
Als Es können entweder benutzerdefinierte Meldungen oder Natural- Systemmeldungen abgerufen werden.
Siehe auch Beispiel 4 - mit TEXT-Option . Natural-Meldungsdateien werden mit derSYSERR -Utility erstellt und
gepflegt.
|
operand2
|
Meldungstext:
Als Siehe auch Beispiel 4 - mit TEXT-Option . |
attributes
|
Ausgabe-Attribute:
Als Attribute können Sie
|
operand3
|
Dynamische Ergänzung im
Meldungstext:
Die angegebenen Werte dienen dazu, einen Teil des Textes
einer mit Innerhalb des Textes der Fehlermeldung dient die
Notation Siehe auch Beispiel 4 - mit 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 Attribute angeben:
AD =AD-value
|
||
CD =CD-value
|
Die möglichen Parameterwerte sind in der Parameter-Referenz-Dokumentation 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 dieser 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:
Syntax-Element | Beschreibung |
---|---|
Zu markierendes Feld:
Jedes mit einem Die Notation
Ist das betreffende INPUT #ARRAY (A1/1:5) ... REINPUT (AD=P) 'TEXT' MARK *#ARRAY (2:3) Ist RESET #X(N2/1:2) INPUT #ARRAY ... ... REINPUT (AD=P) 'TEXT' MARK #X (1:2) |
|
MARK
POSITION
|
MARK POSITION-Option:
Mit dieser Option können Sie den Cursor an eine
bestimmte Stelle, die Sie mit Siehe auch Beispiel 3 — REINPUT FULL mit MARK POSITION . |
operand4
|
Cursor-Position:
|
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 | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand6
|
S | C | nein | nein |
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-Referenz-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=operand6)
-Klausel
referenziert wird. See Example 5 - REINPUT with Attribute
Assignment Using a Control Variable.
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 Farbangabe 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. Siehe auch Beispiel 2 — REINPUT mit
Attribut-Zuweisung .
[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 'Function A with parameter X selected.' MARK *#PARM WHEN #FUNCTION = 'C' THRU 'D' REINPUT 'Function C or D selected.' WHEN #FUNCTION = 'X' STOP WHEN NONE REINPUT 'Please enter a valid function.' MARK *#FUNCTION END-DECIDE * END
#FUNCTION A #PARM Y
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
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