REINPUT
|
[FULL] [(statement-parameters)]
|
|
USING HELP
|
|
| WITH-TEXT-option | ||||
| [MARK-option] | ||||
| [ALARM-option] |
Dieser Abschnitt 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 Subprogrammen, 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
Subprogrammen aufgerufen und das REINPUT-Statement steht in einem dieser
Subprogramme, 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
Subprogramms 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] |
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 platziert 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