Version 6.3.8 für Windows
 —  Statements  —

REINPUT

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


Funktion

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.

Seitenanfang

Syntax-Beschreibung

REINPUT FULL

Wenn Sie die Option FULL in einem REINPUT-Statement angeben, wird das entsprechende INPUT-Statement vollständig neu ausgeführt:

  • Bei einem normalen REINPUT-Statement (ohne FULL-Option) werden Inhalte von Variablen, die zwischen INPUT- und REINPUT-Statement geändert wurden, nicht angezeigt; d.h. alle Variablen auf dem Schirm zeigen den Inhalt, den sie hatten, als das INPUT-Statement ursprünglich ausgeführt wurde.

  • Bei einem REINPUT FULL-Statement werden alle nach der ersten Ausführung des INPUT-Statements gemachten Änderungen sichtbar, wenn das INPUT-Statement erneut ausgeführt wird; d.h. alle Variablen auf dem Schirm haben den Inhalt, den sie zum Zeitpunkt der Ausführung des REINPUT-Statements hatten.

Anmerkung:
Der Inhalt reiner Eingabefelder (AD=A) wird durch REINPUT FULL wieder gelöscht.

Eine andere Eigenschaft des REINPUT FULL-Statements besteht darin, dass der Status der Kontrollvariable auf NOT MODIFIED (nicht geändert) zurückgesetzt wird. Dies erfolgt nicht mittels des normalen REINPUT-Statements. Um zu überprüfen, ob einer Attribut- Kontrollvariablen der Status MODIFIED (geändert) zugewiesen wurde, benutzen Sie die MODIFIED-Option.

Siehe auch Beispiel 3 - REINPUT FULL mit MARK POSITION.

statement-parameters

Mit einem REINPUT-Statement gesetzte Parameter gelten für alle Felder, die im Statement angegeben sind.

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 AD=P auf Statement-Ebene gesetzt, so sind alle Felder geschützt, außer den in der MARK-Option angegebenen.

Informationen zu den o.g. Session-Parametern finden Sie in der Parameter-Referenz.

USING HELP

USING HELP bewirkt, dass die für die INPUT-Map definierte Helproutine aufgerufen wird.

USING HELP in Verbindung mit der MARK-Option (siehe unten) bewirkt, dass die für das erste in der MARK-Option angegebene Feld definierte Helproutine aufgerufen wird. Ist für das Feld keine Helproutine definiert, wird die Helproutine für die Map aufgerufen.

Beispiel:

REINPUT USING HELP MARK 3

In diesem Beispiel wird die für das dritte Feld der INPUT-Map definierte Helproutine aufgerufen.

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.

WITH TEXT-Option

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.

  • Wenn Sie einen positiven Wert von bis zu vier Stellen (z.B.: 0954) angeben, werden benutzerdefinierte Meldungen gelesen.

  • Wenn Sie einen negativen Wert von bis zu vier Stellen (z.B.: −0954) angeben, werden Natural-Systemmeldungen gelesen.

Siehe auch Beispiel 4 — WITH TEXT-Option.

Natural-Meldungsdateien werden mit der SYSERR-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 :n: zur Referenzierung von operand3, wobei n die Ausprägung (1 − 7) von operand3 darstellt.

Siehe auch Beispiel 4 — WITH TEXT-Option.

Anmerkung:
Werden mehrere operanden3 angegeben, müssen diese mit einem Komma voneinander getrennt werden. Falls das Komma als Dezimalzeichen verwendet wird (wie mit dem Session-Parameter DC definiert) und es sich bei operand3 um numerische Konstanten handelt, setzen Sie Leerzeichen vor und nach dem Komma, damit es nicht als Dezimalkomma missinterpretiert wird. Alternativ können mehrere operanden3 auch mit dem Eingabebegrenzungszeichen (Input Delimiter Character, wie mit dem Session-Parameter ID definiert) voneinander getrennt werden; dies geht jedoch nicht im Falle von ID=/ (Schrägstrich).

Nicht signifikante Nullen oder Leerzeichen werden aus dem Feldwert entfernt, bevor er in einer Meldung angezeigt wird.

Ausgabeattribute

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.

MARK-Option

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 INPUT-Statement angegebene Eingabefeld (AD=A oder AD=M) wird durchnumeriert (beginnend mit 1). Sie können als operand5 die Nummer des Feldes angeben, in das der Cursor plaziert werden soll.

Die Notation *fieldname wird verwendet, um den Cursor in ein Feld zu positionieren, und zwar mittels des (im INPUT-Statement verwendeten) Namens des Feldes.

Ist das betreffende INPUT-Feld ein Array, kann zur Markierung einer oder mehrerer Ausprägungen des Arrays ein eindeutiger Index oder ein Indexbereich angegeben werden.

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 INPUT-Array benutzt.

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.

Attribut-Zuweisungen:

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.

ALARM-Option

[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.

Seitenanfang

Beispiele

Beispiel 1 — REINPUT-Statement

** 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

Beispiel 2 — REINPUT mit Attribut-Zuweisung

** 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                                                                     

Beispiel 3 — REINPUT FULL mit MARK POSITION

** 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

Beispiel 4 - mit TEXT-Option

** 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                                                  

Beispiel 5 — REINPUT mit Attribut-Zuweisung mittels Kontrollvariable

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

Seitenanfang