Dieses Dokument behandelt folgende Themen:
Die Syntax des INPUT
-Statements wird in den folgenden
Abschnitten beschrieben:
Siehe auch Bildschirmgestaltung / Fenster im Leitfaden zur Programmierung.
Verwandte Statements: DEFINE
WINDOW
| REINPUT
|
SET WINDOW
Gehört zur Funktionsgruppe: Bildschirmgenerierung für interaktive Verarbeitung
Das INPUT
-Statement dient bei der interaktiven
Verarbeitung dazu, formatierte Schirme oder Maps auszugeben oder zu generieren,
die zur Eingabe von Daten verwendet werden.
Das Statement kann auch in Verbindung mit dem
Natural-Stack
(siehe STACK
-Statement)
verwendet werden, sowie zur Eingabe von Benutzerdaten bei Programmen, die im
Batch-Betrieb ausgeführt werden.
Für den Natural RPC: Siehe Notes on Natural Statements on the Server in der Natural RPC (Remote Procedure Call)-Dokumentation.
Das INPUT
-Statement kann unter drei verschiedenen
Eingabe-Modi verwendet werden: Screen-Modus, Forms-Modus oder
Keyword/Delimiter-Modus. Im Falle von Videoterminals/ Videobildschirmen wird in
der Regel der Screen-Modus verwendet. Forms-Modus kann bei TTY-Terminals
verwendet werden. Keyword/Delimiter-Modus kann bei TTY-Terminals oder im
Batch-Betrieb benutzt werden (auf Großrechnern). Standardmäßig gilt
Screen-Modus.
Sie können den Eingabemodus mit dem Session-Parameter
IM
oder den Terminalkommandos %F
und
%D
ändern.
Im Screen-Modus bewirkt die Ausführung eines
INPUT
-Statements die Anzeige eines Schirms (Screen) entsprechend
der angegebenen Felder und ihrer Positionen. Die Meldungszeile des Schirms wird
von Natural zur Ausgabe von Fehlermeldungen benutzt. Die Position dieser Zeile
(Kopf- oder Fußzeile) kann mit dem Terminalkommando
%M
beeinflusst werden. Der Terminal-Benutzer kann über die verschiedenen
Tabulator-Tasten bestimmte Felder ansteuern.
Da Natural die sogenannte Bildschirmfenster- oder "Window"-Technik unterstützt, ist es erlaubt, dass die Größe einer logischen vom Programm ausgegebenen Map (Bildschirmmaske, theoretisch maximal 250 Stellen breit und 250 Zeilen lang, aber begrenzt durch den internen Bildschirm-Puffer) über die Größe des physischen Bildschirms hinausgeht.
Um ein Bildschirmfenster, d.h. den auf dem physischen Schirm
sichtbaren Ausschnitt einer logischen Programmseite, zu beeinflussen und auf
der logischen Seite zu verschieben, kann das Terminalkommando
%W
verwendet werden
(Näheres zur Fenster-Verarbeitung siehe Terminalkommando
%W
).
Für Eingabefelder (definiert mit Session-Parameter
AD=A
oder
AD=M
),
die auf dem physischen Bildschirm nicht vollständig angezeigt werden, gilt
folgendes:
Ein Eingabefeld, dessen Anfang außerhalb des Fensters liegt, wird immer zu einem geschützten Feld gemacht.
Ein Eingabefeld, das im Fenster beginnt aber außerhalb des
Fensters endet, wird nur dann geschützt, wenn der Wert, den es enthält, nicht
vollständig innerhalb des Fensters sichtbar ist. Bitte beachten Sie, dass es
hierbei darauf ankommt, ob die Wertlänge, nicht die
Feldlänge, über das Fenster hinausgeht. Füllzeichen (wie mit dem
Profilparameter FC
oder dem
Session-Parameter AD
angegeben) zählen
nicht als Teil des Wertes.
Falls Sie in ein derart geschütztes Eingabefeld Eingaben
machen möchten, müssen Sie zunächst die Fenstergröße so ändern, dass sich der
Anfang des Feldes bzw. das Ende des Feldwertes innerhalb des Fensters befindet
(siehe Terminalkommando %W
).
Das INPUT
-Statement kann sowohl für Operationen auf
zeilenorientierten Geräten wie zur Verarbeitung von Batch-Eingaben aus
sequentiellen Dateien verwendet werden.
Dieselben Maps, die im interaktiven Screen-Modus verwendet werden, können auch in einem der anderen Eingabe-Modi verarbeitet werden.
Im Forms- oder Keyword/Delimiter-Modus werden die Eingaben entweder ohne Maps verarbeitet oder durch Map-Simulation im Line-Modus.
Siehe auch:
Bei alphanumerischen Feldern müssen die Daten linksbündig eingegeben werden; jedes eingegebene Zeichen (auch Leerzeichen) hat eine Bedeutung. Die Daten werden ein Zeichen pro Byte dem internen Feld zugeordnet. In ein alphanumerisches Feld eingegebene Daten werden nicht auf Gültigkeit überprüft.
Die Umsetzung von Klein- in Großbuchstaben kann über die
Terminalkommandos %L
und
%U
sowie
die Feldattribute AD=T
und
AD=W
gesteuert werden.
In numerische Felder können Daten an beliebiger Stelle eingegeben werden, wobei Leerzeichen und Nullen vor und Leerzeichen nach dem eingegebenen Wert erlaubt sind; darüber hinaus dürfen ein Vorzeichen und ein Komma (Dezimalpunkt) eingegeben werden. Natural richtet den Feldwert entsprechend der internen Definition des Feldes aus.
Gilt SG=OFF
, so reserviert oder
vergibt Natural keine Stelle für das Vorzeichen. Bei Feldern mit Format P
müssen Daten in Dezimalform eingegeben werden; falls nötig, setzt Natural
dezimale Daten automatisch in gepackte um. Ein Feld, das nur Leerzeichen
enthält, wird als Nullwert interpretiert.
Bei in ein numerisches Feld eingegebenen Daten überprüft Natural, ob es sich um keine anderen Zeichen als Zahlenzeichen, Komma (Dezimalpunkt, optional), Vorzeichen (optional) und vor- oder nachgestellte Leerzeichen handelt. Wird kein Komma eingegeben, so wird angenommen, dass es sich rechts neben dem eingegebenen Wert befindet.
Daten für binäre Felder müssen für alle Byte-Positionen eingegeben
werden (zwei Zeichen pro Byte); es dürfen nur Hexadezimalzeichen (0 −
9
, A − F
) eingegeben werden. Ein Leerzeichen
(H'20'
in ASCII bzw. H'40'
in EBCDIC) ist erlaubt und
wird in binäre Nullen umgesetzt. Natural überprüft, ob keine anderen außer den
gültigen Hexadezimalzeichen eingegeben wurden.
Bei logischen Feldern (Format L) kann entweder ein Leerzeichen (für falsch) oder ein anderes Zeichen (für wahr) eingegeben werden.
Bei Feldern der Formate F, D und T müssen die Daten entsprechend den für Gleitkomma-, Datums- bzw. Zeitkonstanten gültigen Regeln eingegeben werden.
Innerhalb eines Feldelements können Sie die Darstellung des Feldinhalts mit einer Editiermaske formatieren. Die Editiermaske dient zwei verschiedenen Zwecken:
zum Erstellen des Layouts zur Anzeige des Feldes auf dem Bildschirm;
zum Extrahieren der Felddaten aus der eingegebenen Zeichenkette nach dem Ändern einer Zeichenkette und dem Drücken von FREIG.
Der Vorteil der Verbesserung des Formats der mit zusätzlichen Einfügungszeichen angezeigten Felddaten kann sich als ein Nachteil herausstellen, weil ein neu eingegebener Datenwert genau dem Format der Editiermaske entsprechen muss.
SET GLOBALS ID=; DC=, RESET N (N7,3) INPUT N (AD=M EM=Z'.'ZZZ'.'ZZZ,999EUR) END
Ausgabewert | angezeigt als: | Eingabewert | einzugeben als: | −−>Eingabefehler, wenn eingegeben als: |
---|---|---|---|---|
0 | ,000EUR | 1 | 1,000EUR |
1 |
1234 | 1.234,000EUR | 1234567 | 1.234.567,000EUR |
1234567 |
0,123 | ,123EUR | 1,234 | 1,234EUR | 1,234 |
Eine andere Möglichkeit zur Eingabe von numerischen Feldern in die
Editiermaske besteht in der Benutzung eines anderen INPUT
-Modus,
der Editiermasken-Freimodus genannt wird. Wenn sie aktiviert sind (entweder
beim Session-Start über den Profilparameter EMFM
oder in einer
laufenden Natural-Session über das Terminalkommando
%FM+
),
können alle oder einige der Einfügungszeichen der Editiermaske beim
INPUT
-Statement weggelassen werden.
Erscheint aber eine benachbarte Zeichenkette mit Einfügungszeichen
in der Editiermaske (wie EUR
im folgenden Beispiel), dürfen Sie
nur die Zeichenkette angeben oder sie vollständig weglassen. Die Anzahl der
optionalen oder zwingenden Ziffern (Editiermasken-Zeichen Z
und
9
), die angegeben werden müssen, wird nicht beeinflusst.
SET GLOBALS ID=; DC=, SET CONTROL 'FM+' /* activate numeric Edit Mask Free Mode RESET N (N7,3) INPUT N (AD=M EM=Z'.'ZZZ'.'ZZZ,999EUR) END
Eingabewert | kann eingegeben werden als: | führt zu einem Fehler, wenn eingegeben als: |
---|---|---|
1 |
1 |
1EUR |
1234567 |
1234567 |
1.234.567EUR |
1,234 |
1,234 |
1,234EU |
Anmerkung:
Der Editiermasken-Freimodus gilt nur für das
INPUT
-Statement, wird aber bei einem MOVE EDITED
-Statement
ignoriert.
Auswahlfenster (Selection Boxes) in einem
INPUT
-Statement stehen nur auf Großrechnern zur Verfügung. Bei
anderen Plattformen können Auswahlfenster nur im Masken-Editor (Map Editor)
definiert werden.
Anmerkung:
Unter UNIX und OpenVMS können keine Auswahlfenster definiert
werden. Auswahlfenster, die aus einer Großrechner- oder Windows-Umgebung
importiert wurden, werden unter UNIX und OpenVMS ignoriert.
Auswahlfenster können an Eingabefelder angehängt werden. Sie sind eine komfortable Alternative zu an Feldern angehängte Helproutinen, da Sie ja ein Auswahlfenster direkt in Ihrem Programm kodieren können. Sie brauchen kein zusätzliches Programm wie bei Helproutinen.
Weitere Informationen entnehmen Sie der Beschreibung des
Session-Parameters SB
in der
Parameter-Referenz.
Entsprechen die in ein Eingabefeld eingegebenen Daten nicht dem Format bzw. der Editiermaske des Feldes, gibt Natural eine entsprechende Fehlermeldung aus (ohne die Programmausführung abzubrechen) und platziert den Cursor in das betreffende Feld; der Benutzer kann dann den Fehler berichtigen und gültige Daten eingeben, woraufhin die Verarbeitung fortgesetzt wird.
In der Regel erzeugt jedes INPUT
-Statement eine neue
Ausgabeseite (bzw. einen neuen Schirm).
Ein an ein AT END OF
PAGE
-Statement geknüpftes INPUT
-Statement
erzeugt keinen neuen Schirm. Dadurch besteht die Möglichkeit, einen geteilten
Schirm (Split Screen) zu erhalten, dessen obere Hälfte mehrere Zeilen anzeigt,
während in der unteren Hälfte eine Eingabe-Map erstellt werden kann.
Damit die Eingabe-Map auf denselben physischen Schirm passt, muss
die logische Seitenlänge mit dem Profilparameter
PS
in einem
SET GLOBALS
- oder
FORMAT
-Statement
entsprechend gesetzt werden.
Die erste INPUT
-Zeile wird unter die letzte angezeigte
Zeile platziert. Falls die NO
ERASE
-Option verwendet wird, wird die erste
INPUT
-Zeile an den Anfang der Seite platziert.
Zu Informationen über die relevanten Systemvariablen siehe Abschnitt Eingabe/Ausgabebezogene Systemvariablen in der Systemvariablen-Dokumentation.