INPUT-Syntax 1 — Dynamisch generierter Eingabeschirm

Diese Form des INPUT-Statements wird dazu verwendet, entweder einen Eingabe-Schirm zu generieren oder ein Eingabedaten-Layout zu erstellen, das (auf Großrechnern) im Batch-Betrieb von einer sequentiellen Eingabedatei gelesen werden kann.

INPUT [WINDOW='window-name'] [NO ERASE]
  [(statement-parameters)]
  [WITH-TEXT-option]
  [MARK-option]
  [ALARM-option]

nX
nT
x/y
/

'text'
'c' (n)

[(attributes)]  

'-'
'='

*IN
*OUT
*OUTIN

{operand1 [(parameter)]}

Dieses Dokument behandelt folgende Themen:

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.


INPUT Syntax 1 — Beschreibung

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1   S A G N A U N P I F B D T L   G   ja ja

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
INPUT WINDOW='window-name'
Eingabe-Fenster:

Mit der Option WINDOW='window-name' bewirken Sie, dass das INPUT-Statement für das angegebene Fenster (Window) ausgeführt werden soll. Das angegebene Fenster muss in einem DEFINE WINDOW-Statement definiert sein; siehe Beispiel 2 — INPUT-Statement mit DEFINE WINDOW-Statement weiter unten.

Das angegebene Fenster ist nur für die Dauer des betreffenden INPUT-Statements aktiv und wird nach Ausführung des INPUT-Statements automatisch deaktiviert.

Siehe auch die Statements DEFINE WINDOW und SET WINDOW.

NO ERASE
Überlagerte Anzeige:

NO ERASE bewirkt, dass die vom INPUT-Statement ausgegebene Schirmanzeige eine bereits vorhandene Anzeige überlagern kann, ohne letztere zu löschen.

Schirm bezieht sich in diesem Zusammenhang auf die logische Ausgabe und nicht auf den physischen Bildschirm.

Alle ungeschützten Felder auf dem alten Schirm werden geschützt, so dass keine Eingaben mehr in sie gemacht werden können. Die alten Daten bleiben auf dem Schirm, bis der neue Schirm angezeigt wird. Überlagert ein Feld des neuen Schirms teilweise ein altes, so werden das Zeichen vor dem neuen Feld und das nächste Zeichen im alten Feld durch ein Leerzeichen ersetzt.

statement-parameters
Parameter auf Statement-/Feldebene:

Unmittelbar nach dem Schlüsselwort INPUT oder nach einem der auszugebenden Felder können Sie in Klammern einen oder mehrere Session-Parameter setzen.

Eine Liste der mit dem INPUT-Statement anzugebenden Parameter finden Sie im Abschnitt Statement-Parameter weiter unten.

Diese Parameter haben dann für das jeweilige Statement oder Feld Gültigkeit statt der betreffenden mit einem GLOBALS-Kommando, SET GLOBALS- oder FORMAT-Statement gesetzten Parameter. Werden mehrere Parameter angegeben, müssen sie jeweils durch ein oder mehrere Leerzeichen voneinander getrennt werden. Die Angabe eines Parameters darf sich nicht über zwei Sourcecode-Zeilen erstrecken.

Die hier gültigen Parameter-Einstellungen kommen nur für Variablen-Felder in Betracht, haben aber keine Auswirkungen auf Text-Konstanten. Wenn Sie Feldattribute für eine Text-Konstante setzen möchten, dann müssen Sie explizit für dieses Element gesetzt werden.

Beispiel:

DEFINE DATA LOCAL
1 VARI (A4)     INIT <'1234'>                  /*    Displays 
END-DEFINE                                     /*       as
FORMAT AD=M                                    /*    ---------
INPUT           'Text'           VARI          /*    Text 1234
INPUT (PM=I)    'Text'           VARI          /*    Text 4321
INPUT           'Text' (PM=I)    VARI (PM=I)   /*    txeT 4321
INPUT           'Text' (PM=I)    VARI          /*    txeT 1234
END

Beispiele für den Einsatz von Parametern auf Statement- und Element-Ebene finden Sie auf den folgenden Seiten.

WITH TEXT-option
Textausgabe in Meldungszeile:
Diese Option dient dazu, Text anzugeben, der in der Meldungszeile ausgegeben werden soll (siehe den ensprechenden Abschnitt weiter unten).
MARK-option
Cursorposition im Feld:
Siehe Abschnitt MARK-Option weiter unten.
ALARM-option
Warntonausgabe:
Siehe Abschnitt Alarm-Option weiter unten.
Other syntax elements (nX, nT, x/y, operand1 usw.)
Sonstige Syntax-Elemente:

Siehe Abschnitt Feldpositionierung, Text, Attributzuweisung weiter unten.

Statement-Parameter

Parameter, die mit dem INPUT-Statement angegeben werden können: Spezifikation
S=auf Statement-Ebene
E=auf Element-Ebene
AD Attribute Definition SE
AL Alphanumeric Length for Output SE
BX Box Definition SE
CD Color Definition SE
CV Control Variable SE
DF Date Format SE
DL Display Length for Output SE
DY Dynamic Attributes SE
EM Edit Mask SE
EMU Unicode Edit Mask E
FL Floating Point Mantissa Length SE
HE Helproutine SE
IP Input Prompting Text SE
LS Line Size S
MC Multiple-Value Field Count S
MS Manual Skip S
NL Numeric Length for Output SE
PC Periodic Group Count S
PM Print Mode SE
PS Page Size * S
SB Selection Box E
SG Sign Position SE
ZP Zero Printing SE

* Wenn die Anzahl der Ausprägungen eines Arrays den PS-Wert überschreitet, wird ein NAT0303-Fehler ausgegeben.

Beschreibungen der einzelnen Session-Parameter sind in der Parameter-Referenz enthalten.

WITH TEXT-Option

[WITH] TEXT

* operand1
operand2

[(attributes)][,operand3] 7

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1 C S         N P I   B*             ja ja
operand2 C S       A                       ja ja
operand3 C S       A N P I F B D T L       ja ja

* Format B von operand1 kann nur mit einer Länge kleiner gleich 4 benutzt werden.

Diese Option dient dazu, Text anzugeben, der in der Meldungszeile ausgegeben werden soll. In der Regel handelt es sich dabei um eine Meldung, was auf dem jeweiligen Schirm getan werden soll bzw. wie eine falsche Eingabe korrigiert werden soll.

Syntax-Element-Beschreibung:

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 Ziffern (zum Beispiel: 0954) angeben, werden benutzerdefinierte Meldungen gelesen.

  • Wenn Sie einen negativen Wert von bis zu vier Ziffern (zum Beispiel −0954) angeben, werden Natural-Systemmeldungen gelesen.

Siehe auch REINPUT-Statement, Beispiel 4 − WITH TEXT-Optionen.

Natural-Fehlermeldungsdateien werden mit der SYSERR-Utility erstellt und gepflegt.

Die Natural-Fehlermeldungen sind in der Messages and Codes-Dokumentation enthalten.

operand2
Eigener Meldungstext:

Als operand2 geben Sie den Text an, der in der Meldungszeile ausgegeben werden soll.

Siehe REINPUT-Statement, Beispiel 4 − WITH TEXT-Optionen.

attributes
Ausgabeattribute:

Als attributes können Sie operand1 oder operand2 bestimmte Anzeige- und Farbattribute zuordnen.

Diese Attribute und die benutzbare Syntax sind im Abschnitt Ausgabeattribute weiter unten beschrieben.

operand3
Dynamische Meldungstext-Komponente:

operand3 kann in Form einer numerischen Konstanten oder Textkonstanten oder als Name einer Variablen angegeben werden.

Der entweder mit operand1 oder operand2 angegebene Wert dient dazu, einen Teil der Meldung zu ersetzen und 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 REINPUT-Statement, Beispiel 4 - WITH TEXT-Optionen.

Anmerkungen:

  1. Wird operand3 mehrmals angegeben, müssen diese Operanden 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.
  2. Alternativ können mehrere Ausprägungen von operand3 auch mit dem Input-Delimiterzeichen (wie mit dem Session-Parameter ID definiert) voneinander getrennt werden; dies geht jedoch nicht bei ID=/ (Schrägstrich), da der Schrägstrich in der Syntax des INPUT-Statements eine andere Bedeutung hat.
  3. Nicht signifikante Nullen oder Leerzeichen werden aus dem Feldwert entfernt, bevor er in einer Meldung angezeigt wird.

Ausgabeattribute

attributes gibt die für die Text-Anzeige zu benutzenden Ausgabe-Attribute an. Es gibt die folgenden Attribute:

AD=AD-value
BX=BX-value
CD=CD-value
PM=PM-value

AD-value
CD-value

Die möglichen Parameterwerte sind in der Parameter-Referenz aufgeführt.

Anmerkung:
Der Compiler akzeptiert tatsächlich mehr als einen Attributwert für ein Ausgabefeld. Zum Beispiel können Sie Folgendes angeben: AD=BDI. In solch einem Fall gilt allerdings nur der letzte Wert. Im hier gezeigten Beispiel erhält nur der Wert I Gültigkeit, und das Ausgabefeld wird intensiviert (hell hervorgehoben) angezeigt.

MARK-Option

Mit MARK POSITION können Sie bewirken, dass der Cursor in einem beliebigen, nicht geschützten Feld auf dem Bildschirm platziert wird. Zusätzlich können Sie die Position des Cursors innerhalb dieses Feldes bestimmen.

Standardmäßig, das heisst, wenn Sie die MARK POSITION weglassen, wird der Cursor an den Anfang des ersten, nicht geschützten Feldes positioniert.

MARK [POSITION operand4 [IN]] [FIELD]

operand1
*fieldname

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand4 C S         N P I                 ja ja
operand1 C S A       N P I                 ja ja

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
operand1
Feldnummer für Referenzierung:

operand1 gibt die Nummer des Feldes an, in dem der Cursor platziert werden soll:

Jedem in einem INPUT-Statement angegebenen Feldattribut AD=A oder AD=M (d.h. ein ungeschütztes Feld) wird eine Feldreferenz- Nummer zugewiesen. Der Startwert ist 1.

*fieldname
Feldname für Referenzierung:

Anstelle der Feldnummer können Sie den Feldnamen angeben, um den Cursor in ein bestimmtes Feld zu platzieren. Dazu verwenden Sie die Notation *fieldname.

operand4
Cursorposition im referenzierten Feld:

Mit MARK POSITION können Sie den Cursor an eine bestimmte Stelle — die Sie mit operand4 angeben — innerhalb des mit operand1 oder *fieldname angegebenen Feldes platzieren.

operand4 darf keine Dezimalstellen enthalten.

Beispiele:

MARK #NUMBER               /* Field number
MARK 3                     /* Third map field
MARK *#FIELD1              /* Map field             
MARK POSITION 3 IN #NUMBER /* Third character in field number

Siehe auch Beispiel 3 — INPUT-Statement mit MARK POSITION-Option weiter unten.

ALARM-Option

Diese Option bewirkt, dass der Warnton des Terminals ausgelöst wird, wenn das INPUT-Statement ausgeführt wird. Voraussetzung ist, dass die verwendete Terminal-Hardware dies ermöglicht.

[[AND] [SOUND] ALARM]

Text vor einem Feld

Ist der Session-Parameter IP nicht auf IP=OFF gesetzt, so wird der jeweilige Feldname vor dem Feldwert (Forms-Modus) oder als Aufforderung, ein Feld auszuwählen, (Keyword/Delimiter-Modus) angezeigt. Wenn Sie vor dem Feld '-' angeben, wird der Feldname nicht angezeigt; wenn Sie einen 'text' angeben, wird dieser statt des Feldnamens angezeigt.

Feldpositionierung, Text, Attributzuweisung

     

'text'  [(attributes)]

       

nX

'c' (n) [(attributes)]

*IN

{operand1 [(parameter(s))]}
nT '-' *OUT
x /y '=' *OUTIN
      /        

Verschiedene Notationen stehen zur Feldpositionierung, Texterstellung und Attributzuweisung zur Verfügung.

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
nX
Leerstellen zwischen Spalten:

Fügt zwischen den Feldern n Leerstellen ein.

Anmerkung:
Diese Notation fügt zwischen den Spalten n Leerstellen ein. n darf nicht 0 sein.

nT
Tabulator für Feldausgabe:

Setzt einen Tabulator, d.h. die Ausgabe eines Feldes beginnt ab Spalte n.

x/y
Ausgabeposition für nächstes Feld:

Gibt das nachfolgende Element in Zeile x ab Spalte y aus. y darf nicht 0 sein. Rückwärtspositionierung in derselben Zeile ist nicht möglich.

'text'
Textausgabe:

In Apostrophen angegebener Text wird schreibgeschützt ausgegeben. Siehe auch den Abschnitt Text-Notation, Unterabschnitt Mit einem Statement zu benutzenden Text definieren.

'c' (n)
Wiederholungszeichen:

Wie 'text'. Aber das Zeichen c (character) wird n-mal ausgegeben. n darf 1 − 132 sein. Siehe auch den Abschnitt Text-Notation, Unterabschnitt Vor einem Feldwert n mal anzuzeigendes Zeichen definieren..

attributes
Ausgabeattribute:

Dient zum Setzen der Anzeigeattribute. Siehe Attribute weiter unten.

'-'
Unterdrückung des Feldnamens:

Die Notation '-' unmittelbar vor einem Feld bewirkt, dass die Anzeige des Feldnamens vor dem Feld unterdrückt wird.

Anmerkung:
Eine Textkette vor einem Feld ersetzt den Feldnamen als Eingabeaufforderungstext.

'='
Feldüberschrift-Ausgabe:

Die Notation '=' unmittelbar vor einem Feld bewirkt, dass unmittelbar vor dem Feldwert die Feldüberschrift ausgegeben wird.

'/'
Zeilenvorschub:

Ein Schrägstrich '/' zwischen zwei Feldern oder Textelementen bewirkt einen Zeilenvorschub, d.h. das nachfolgende Element wird in der nächsten Zeile ausgegeben.

Felder können als reine Eingabefelder (Session-Parameter AD=A), reine Ausgabefelder (AD=O) oder als modifizierbare Ausgabefelder (AD=M) definiert werden. Standardmäßig gilt AD=A. Felder, die mit AD=A oder AD=M definiert sind, werden als ungeschützte Felder ausgegeben, d.h. der Benutzer hat die Möglichkeit, Daten in diese Felder einzugeben.

Bei TTY-Geräten beansprucht die Ausgabe modifizierbarer Felder die doppelte Feldgröße (einmal für Ausgabe und einmal für Eingabe), damit ein neuer Wert eingegeben werden kann. Bei TTY-Bildschirmen beginnt ein Eingabefeld (AD=A oder AD=M), dessen Wert bei der Eingabe nicht angezeigt wird (Feldattribut N), immer in einer neuen Zeile.

Beispiel:

INPUT #A (AD=A) #B (AD=O) #C (AD=M)

#A ist ein Eingabefeld (ungeschützt), in das ein Wert eingegeben werden kann.

#B ist ein Ausgabefeld (schreibgeschützt), dessen angezeigter Wert nicht überschrieben werden kann.

#C ist ein Feld, dessen ausgegebener Wert verändert werden kann, indem er durch einen neuen Wert überschrieben wird.

*IN, *OUT und *OUTIN
Feldattribute:

Entspricht den Feldattributen, die mit dem Session-Parameter AD gesetzt werden können: AD=A, AD=O bzw. AD=M.

Anmerkung:
Wenn eine nicht änderbare Systemvariable in einem INPUT-Statement benutzt wird, wird der Wert als ein reines Ausgabefeld AD=O oder *OUT-Attribut anzeigt.

operand1
Zu verwendende Felder:

Als operand1 geben Sie das zu verwendende Feld an. Sie können Datenbankfelder oder Benutzervariablen angeben.

Natural überträgt den Inhalt eines Feldes direkt vom Datenbereich an das INPUT-Statement; eine MOVE-Operation ist hierzu nicht erforderlich.

Ändert sich der Wert eines Datenbankfeldes aufgrund einer INPUT-Verarbeitung, so betrifft dies nur den Feldwert im Datenbereich. Um den Wert eines Feldes auf der Datenbank zu ändern, sind entsprechende UPDATE- bzw. STORE-Statements erforderlich.

Wird in einem INPUT-Statement der Name einer Gruppe von Datenbankfeldern referenziert, so werden alle in der Gruppe enthaltenen Felder einzeln als Eingabefelder verwendet.

Wird ein Bereich von Ausprägungen eines Arrays referenziert, so wird jede Ausprägung einzeln als Eingabefeld verarbeitet; allerdings wird nur der ersten Ausprägung ein Text oder der Feldname vorangestellt.

Auf Großrechnern können keine Arrays mit Bereichen angegeben werden, die es ermöglichen, zur Ausführungszeit die Anzahl der Ausprägungen zu variieren.

parameter(s)
Statement-Parameter:

Unmittelbar nach operand1 können Sie in Klammern einen oder mehrere Parameter angeben (siehe Tabelle Statement-Parameter und folgendes Beispiel).

Diese Parameter haben dann für das jeweilige Feld Gültigkeit statt der betreffenden mit einem GLOBALS-Kommando, SET GLOBALS- (im Reporting Mode) oder FORMAT-Statement gesetzten Parameter. Werden mehrere Parameter angegeben, müssen sie jeweils durch ein oder mehrere Leerzeichen voneinander getrennt werden. Die Angabe eines Parameters darf sich nicht über zwei Sourcecode-Zeilen erstrecken.

Die hier gültigen Parameter-Einstellungen kommen nur für Variablenfelder in Betracht, haben aber keine Auswirkung auf Textkonstanten. Wenn Sie Feldattribute für eine Textkonstante setzen möchten, müssen Sie explizit für dieses Element gesetzt werden.

Informationen zu den einzelnen Parametern entnehmen Sie der Tabelle im Abschnitt Statement-Parameter.

Anmerkung:
Ist für ein Datenbankfeld eine Editiermaske definiert, so wird der Editiermasken-Parameter EM dynamisch im entsprechenden DDM referenziert. Editiermasken können für Eingabe- wie für Ausgabefelder angegeben werden. Wird für ein Eingabefeld eine Editiermaske definiert, müssen die Daten in Einklang mit der Editiermasken-Definition eingegeben werden.

Ausgabeattribute

Die folgenden Attribute können verwendet werden:

 

B

 

 

BL

 

T

 

 

  C     GR   B   C
  D     NE   L   D
[AD=] I   [CD=] PI [BX=] R [PM=] I
  N     RE   ON   N
  U     TU   OFF    
  V     YE        
      1             2           3           4    
  1. Anzeigeattribute - siehe Session-Parameter AD in der Parameter-Referenz.

  2. Farbattribute - siehe Session-Parameter CD in der Parameter-Referenz.

  3. Umrandungen (Box Definition) - siehe Session-Parameter BX in der Parameter-Referenz.

  4. Print-Modus - siehe Session-Parameter PM in der Parameter-Referenz.

Beispiele — Verwendung von Syntax 1

Beispiel 1 — INPUT-Statement

** Example 'IPTEX1': INPUT                                              
************************************************************************
DEFINE DATA LOCAL                                                       
1 #FNC  (A1)                                                            
END-DEFINE                                                              
*                                                                       
INPUT 10X 'SELECTION MENU FOR EMPLOYEES SYSTEM' /                       
      10X '-' (35) //                                                   
      10X 'ADD      (A)' /                                              
      10X 'UPDATE   (U)' /                                              
      10X 'DELETE   (D)' /                                              
      10X 'STOP     (.)' //                                             
      10X 'PLEASE ENTER FUNCTION: ' #FNC                              
*                                                                       
DECIDE ON EVERY VALUE OF #FNC                                           
  VALUE 'A'   /* invoke the object containing the add function here     
    WRITE 'Add function selected.'                                      
  VALUE 'U'   /* invoke the object containing the update function here  
    WRITE 'Update function selected.'                                   
  VALUE 'D'   /* invoke the object containing the delete function here
    WRITE 'Delete function selected.'                                 
  VALUE '.'                                                           
    STOP                                                              
  NONE                                                                
    REINPUT 'Please enter a valid function.' MARK *#FNC               
END-DECIDE                                                            
*                                                                     
END                                                                  

Ausgabe des Programms IPTEX1:

SELECTION MENU FOR EMPLOYEES SYSTEM
-----------------------------------
                                   
ADD      (A)                       
UPDATE   (U)                       
DELETE   (D)                       
STOP     (.)                       
                                   
PLEASE ENTER FUNCTION:            

Beispiel 2 — INPUT-Statement mit DEFINE WINDOW-Statement

** Example 'INPEX1': INPUT (with DEFINE WINDOW statement)               
************************************************************************
DEFINE DATA LOCAL                                                       
1 #STRING (A15)                                                         
END-DEFINE                                                              
*                                                                       
DEFINE WINDOW WIND1                                                     
  SIZE 10 * 40                                                          
  BASE 5 / 10                                                           
  FRAMED ON POSITION TEXT                                               
*                                                                       
INPUT WINDOW='WIND1'                                                    
      'PLEASE ENTER HERE:' / #STRING                             
*                                                                       
END                                                                    

Ausgabe des Programms INPEX1:

+----------------------------------Top+
! PLEASE ENTER HERE:                  !
! #STRING                             !
!                                     !
!                                     !
!                                     !
!                                     !
!                                     !
!                                     !
+-------------------------------Bottom+

Beispiel 3 — INPUT-Statement mit MARK POSITION-Option

** Example 'INPEX2': INPUT (with POSITION)                              
************************************************************************
DEFINE DATA LOCAL                                                       
1 #START (A30)                                                          
END-DEFINE                                                              
*                                                                       
ASSIGN #START = 'EXAM_'                                                 
*                                                                       
INPUT (AD=M) MARK POSITION 5 IN *#START                                 
     / 'PLEASE COMPLETE START VALUE FOR SEARCH'                         
     / 5X #START                                                    
END                                                                    

Ausgabe des Programms INPEX2:

PLEASE COMPLETE START VALUE FOR SEARCH
       #START EXAM[]