SB - Auswahlfeld

#### Search Results

Search

# SB - Auswahlfeld

Auswahlfelder stehen in einem `INPUT`-Statement ausschließlich auf Großrechnern zur Verfügung. Für andere Plattformen können Auswahlfelder nur im Masken-Editor (Map-Editor) definiert werden.

Auswahlfelder können an Eingabefelder angehängt werden. Sie bilden eine komfortable Alternative zu an Feldern angehängte Helproutinen, da Sie ein Auswahlfeld unmittelbar in Ihrem Programm kodieren können. Sie brauchen kein zusätzliches Programm wie bei Helproutinen.

Sie können eine Auswahlfeld-Klausel für jede `INPUT`-Variable vom Typ Alpha definieren, ungeachtet der Tatsache, ob dieses Feld ein Eingabe- oder Ausgabefeld oder beides ist.

Hierzu sieht die Syntax wie folgt aus:

`SB=`operand1 [,operand1]...

wobei `operand1` einen Wert-Operanden darstellt, der zum Auffüllen des Auswahlfeldes mit Elementen benutzt wird.

Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition
--- | --- | --- | --- | ---
operand1 | C | S | A |  |  |  | A |  |  |  |  |  |  |  |  |  |  |  |  | ja | nein

Bei SB geben Sie die anzuzeigenden Werte innerhalb des Auswahlfeldes ein.

Um ein Auswahlfeld einem Feld zuzuweisen, geben Sie das Attribut `SB` für ein `INPUT`-Alphafeld in Ihrem Natural-Programm mittels der folgenden Beispiel-Syntax ein:

    INPUT #FLD (SB='value1', #ITEM1, #ITEM2(1:3), #ITEM3(*))

Folgende Themen werden behandelt:

- Anmerkungen zur Syntax

- Anmerkungen zur Laufzeitumgebung

- Funktionen

- Beschränkungen

## Anmerkungen zur Syntax

Es ist möglich, einem Feld sowohl ein Auswahlfeld als auch eine Helproutine zuzuweisen.

Auswahlfelder können für jedes Variablenfeld in einem `INPUT`-Statement definiert werden. Dazu gibt es folgende Ausnahmen:

Systemvariablen | Zum Beispiel: `*PROGRAM`, `*COM`
Benannte Konstanten (nur auf Großrechnern) | Definiert mit einer `CONST`-Klausel in `DEFINE DATA`-Statement.

Außer dem `SB`-Attribut können auch andere Attribute definiert werden, z.B.`AD` oder `CD`.

Das Auswahlfeld muss nicht änderbar sein, wie dies bei `AD=A` oder `AD=M` der Fall ist. Mit anderen Worten ist es möglich, auch für ein schreibgeschütztes Ausgabefeld wie `AD=O` ein Auswahlfeld zur Verfügung zu stellen (und Werte auszuwählen). Wenn Sie `AD=O` benutzen, ist der Benutzer dazu gezwungen, aus einer Reihe von vordefinierten Werten zu wählen, die ihrerseits in einem Auswahlfeld erscheinen.

## Anmerkungen zur Laufzeitumgebung

### Auswahlfeld-Position

Wenn ein ein Auswahlfeld enthaltendes Programm ausgeführt wird, wird das Auswahlfeld nach demselben Positionierungsalgorithmus auf dem Bildschirm positioniert, der für Hilfefenster verwendet wird, d.h. die Länge und Position des Auswahlfeldes wird automatisch festgelegt, in der Nähe des Feldes.

### Auswahlfeld-Attribute

Die Farbe und die intensivierten Attribute, die dem Feld zugewiesen sind, werden auch für die in dem entsprechenden Auswahlfeld angezeigten Werte benutzt.

### Editiermasken in Auswahlfeldern

Wenn für das Feld eine Editiermaske definiert worden ist, wird die Editiermaske für alle Auswahlfeld-Werte verwendet.

Um eine Editiermaske für ein Feld zu definieren, benutzen Sie das `INPUT`-Statement, damit Sie eine Editiermaske für ein Feld definieren können. Dies ist in dem folgenden Code-Beispiel veranschaulicht.

    DEFINE DATA
    LOCAL
    1 A(A4)
    END-DEFINE
    MOVE 'ABCD' TO A
    *
    SET KEY PF1 = HELP
    FORMAT KD=ON
    *
    INPUT A (AD=M EM=X.X.X.X SB='1234','WXYZ')
    WRITE A
    END

### Zeilenlänge für Auswahlfelder

Die Zeilenlänge des Auswahlfeldes stimmt mit der Feldlänge überein, der das Auswahlfeld entspricht.

Wenn ein für das Auswahlfeld vorgesehener Wert die Zeilenlänge des Auswahlfeldes überschreitet, wird der Wert abgeschnitten.

### Reihenfolge der Auswahlfeld-Werte

Auswahlfeld-Werte werden in der Reihenfolge angezeigt, in der sie im `SB`-Attribut erscheinen.

## Funktionen

### Kennzeichnung eines Auswahlfeldes bei der Anzeige

Für ein Feld mit angehängtem Auswahlfeld wird neben dem Feld ein "V"-Indikator angezeigt.

### Auswahlfelder aufrufen

#### Um ein Auswahlfeld zu öffnen, gibt es zwei Möglichkeiten:

- Geben Sie ein Fragezeichen (?) in das V-Feld ein, und drücken Sie FREIG.

- Oder positionieren Sie den Cursor auf dem V-Feld, drücken Sie die entsprechend zugewiesene Hilfetaste (z.B. PF1). Weitere Einzelheiten siehe den nächsten Abschnitt.

#### Um eine Hilfetaste (z.B. PF1) für einen komfortableren Aufruf des Auswahlfeldes zu definieren:

Fügen Sie in Ihrem Programm die folgende Codezeile hinzu:

    SET KEY PF1=HELP

### Auswahlfeld durchblättern

Es gibt zwei Möglichkeiten, in einem Auswahlfeld zu blättern:

- Indem Sie den Cursor auf der "Mehr"-Zeile positionieren und FREIG drücken.

- Oder mit den Terminalkommandos `%W-` und `%W+`, die mit PF-Tasten belegt sind (z.B. PF7/PF8).

### Wert in einem Auswahlfeld auswählen

Ein Wert wird vom Auswahlfeld ausgewählt und durch Positionieren des Cursors auf dem Wert und Drücken von FREIG in das Feld kopiert.

### Doppelte Zeilen in einem Auswahlfeld

Zeilen mit demselben Inhalt, die direkt aufeinander folgen, werden unterdrückt.

Beispielsweise erzeugt der folgende Code

    INPUT #FLD (SB='123', '456', 'XYZ', 'XYZ', 'XYZ', 'ABC', 'DEF')

die folgende Ausgabe im Auswahlfeld:

    123
    456
    XYZ
    ABC
    DEF

In dem vorigen Beispiel wird `XYZ` nur einmal angezeigt. Die anderen Ausprägungen werden als redundant angesehen, da sie direkt aufeinander folgen.

Allerdings erzeugt diese Codezeile jetzt

    INPUT #FLD (SB='123', 'XYZ', '456', 'XYZ', 'ABC', 'XYZ', 'DEF')

die folgende Ausgabe im Auswahlfeld:

    123
    XYZ
    456
    XYZ
    ABC
    XYZ
    DEF

In diesem Fall werden alle drei Ausprägungen von `XYZ` angezeigt, da sie nicht direkt aufeinander folgen.

### Leerzeilen in Auswahlfeldern

Eine Leerzeile wird nur angezeigt, wenn sie zum ersten Mal erscheint; alle nachfolgenden Leerzeilen werden unterdrückt.

## Beschränkungen

Die Anzahl der Operanden in der `SB`-Klausel ist auf 20 beschränkt.

Die maximale Anzahl der Werte in einem Auswahlfeld ist 248. Wenn diese Grenze erreicht ist, werden weitere Werte nicht angezeigt. Es wird keine Fehlermeldung ausgegeben, wenn die Grenze überschritten wurde.

### On this page

- Anmerkungen zur Syntax
- Anmerkungen zur Laufzeitumgebung
- Funktionen
- Beschränkungen