INPUT

#### Search Results

Search

# INPUT

Dieses Dokument behandelt folgende Themen:

- Funktion

- Eingabe-Modi

- Eingabe von Daten als Reaktion auf ein INPUT-Statement

- SB − Auswahlfenster (Selection Box)

- Eingabefehler

- Geteilter Schirm (Split Screen)

- Systemvariablen beim INPUT-Statement

Die Syntax des `INPUT`-Statements wird in den folgenden Abschnitten beschrieben:

- INPUT-Syntax 1 − Dynamisch generierter Eingabeschirm

- INPUT-Syntax 2 − Verwendung einer vordefinierten Eingabemaske

Siehe auch Bildschirmgestaltung / Fenster im Leitfaden zur Programmierung.

Verwandte Statements: `DEFINE WINDOW` | `REINPUT` | `SET WINDOW`

Gehört zur Funktionsgruppe: Bildschirmgenerierung für interaktive Verarbeitung

## Funktion

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.

## Eingabe-Modi

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.

### Screen-Modus

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`).

### Andere Eingabe-Modi

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:

- INPUT-Statement unter Nicht-Screen-Modi

- INPUT-Statement im Batch-Betrieb

- Eingabedaten aus dem Natural-Stack

## Eingabe von Daten als Reaktion auf ein INPUT-Statement

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.

### Numerischer Editiermasken-Freimodus

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.

#### Beispiel:

    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 1EUR 01,000EUR
1234 | 1.234,000EUR | 1234567 | 1.234.567,000EUR | 1234567 1.234.567 1.234.567EUR
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.

#### Beispiel mit aktiviertem Editiermasken-Freimodus:

    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 1,0 001 1,00EUR 0.001 1,EUR | 1EUR
1234567 | 1234567 1.234.567 1234.567 1234567,0 1.234.567,0 1.234.567,EUR 1.234.567,0EUR 1.234.567,000EUR | 1.234.567EUR
1,234 | 1,234 1,234EUR 001,234 0.001,234EUR 00001,234EUR | 1,234EU

Anmerkung
Der Editiermasken-Freimodus gilt nur für das `INPUT`-Statement, wird aber bei einem `MOVE EDITED`-Statement ignoriert.

## SB − Auswahlfenster (Selection Box)

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 können keine Auswahlfenster definiert werden. Auswahlfenster, die aus einer Großrechner- oder Windows-Umgebung importiert wurden, werden unter UNIX 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.

## Eingabefehler

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.

## Geteilter Schirm (Split Screen)

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.

## Systemvariablen beim INPUT-Statement

Zu Informationen über die relevanten Systemvariablen siehe Abschnitt Eingabe/Ausgabebezogene Systemvariablen in der Systemvariablen-Dokumentation.

### On this page

- Funktion
- Eingabe-Modi
- Eingabe von Daten als Reaktion auf ein INPUT-Statement
- SB − Auswahlfenster (Selection Box)
- Eingabefehler
- Geteilter Schirm (Split Screen)
- Systemvariablen beim INPUT-Statement