DECIDE ON

#### Search Results

Search

# DECIDE ON

`DECIDE ON`
{ | `FIRST` `EVERY` | } [`VALUES`] [`OF`] |  |  |  |  |
|  | { | operand1 `SUBSTRING` (operand3,operand5,operand6) | } |  |  |  |  |
{ | `VALUES` | { | operand2 `SUBSTRING` (operand4,operand7,operand8) | }
|  | [[,{ | operand2 `SUBSTRING` (operand4,operand7,operand8) | }] ...
|  | [: { | operand2 `SUBSTRING` (operand4,operand7,operand8) | } ]] | statement ...} ...
[`ANY` [`VALUES`] statement ]
[`ALL` [`VALUES`] statement ]
`NONE` [`VALUES`] statement
`END-DECIDE`

Dieses Dokument behandelt folgende Themen:

- Funktion

- Syntax-Beschreibung

- Beispiele

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

Verwandte Statements: `DECIDE FOR` | `IF` | `IF SELECTION` | `ON ERROR`

Gehört zur Funktionsgruppe: Logische Bedingungen

## Funktion

Das Statement `DECIDE ON` dient dazu, in Abhängigkeit vom Wert (bzw. von den Werten) einer Variablen eine oder mehrere Handlungen auszuführen.

Anmerkung
Falls unter einer bestimmten Bedingung keine Handlung ausgeführt werden soll, geben Sie das Statement `IGNORE` in der betreffenden Klausel des `DECIDE ON`-Statements an.

## Syntax-Beschreibung

Operanden-Definitionstabelle:

Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition
--- | --- | --- | --- | ---
operand1 |  | S | A |  | N | A | U | N | P | I | F | B | D | T | L |  | G | O | ja | nein
operand2 | C | S | A |  |  | A | U | N | P | I | F | B | D | T | L |  | G | O | ja | nein
operand3 |  | S | A |  |  | A | U |  |  |  |  | B |  |  |  |  |  |  | ja | nein
operand4 | C | S | A |  |  | A | U |  |  |  |  | B |  |  |  |  |  |  | ja | nein
operand5 | C | S |  |  |  |  |  | N | P | I |  | B * |  |  |  |  |  |  | ja | nein
operand6 | C | S |  |  |  |  |  | N | P | I |  | B * |  |  |  |  |  |  | ja | nein
operand7 | C | S |  |  |  |  |  | N | P | I |  | B * |  |  |  |  |  |  | ja | nein
operand8 | C | S |  |  |  |  |  | N | P | I |  | B * |  |  |  |  |  |  | ja | nein

* Format B von operand5, operand6, operand7 und operand8 kann nur mit einer Länge von kleiner oder gleich 4 benutzt werden.

Syntax-Element-Beschreibung:

Syntax-Element | Beschreibung
--- | ---
`FIRST/EVERY` | Zu verarbeitender Wert: Mit einem dieser Schlüsselwörter geben Sie an, ob nur der erste gefundene Wert (`FIRST`) oder alle gefundenen Werte (`EVERY`) der Variablen verarbeitet werden sollen.
`operand1` | Kontrollfeld: Als operand1 oder operand2 geben Sie den Namen des Feldes an, dessen Werte geprüft werden sollen.
`VALUES operand2 [[,operand2] ... [:operand2]statement ...` | Wert des Kontrollfeldes: Mit dieser Klausel geben Sie den Wert (operand2) des Kontrollfeldes an, sowie die statements, die ausgeführt werden sollen, wenn das Kontrollfeld diesen Wert hat. Sie können einen Wert, mehrere Werte oder einen Bereich von Werten angeben, vor denen als Option einer oder mehrere Wert/e stehen können. Werden mehrere Werte angegeben, müssen diese entweder mit dem Input-Delimiterzeichen (wie mit dem Session-Parameter `ID` definiert) oder mit einem Komma voneinander getrennt werden. Ein Komma darf hierzu allerdings nicht verwendet werden, falls das Komma als Dezimalkomma (mit dem Session-Parameter `DC`) definiert ist. Bei einem Bereich von Werten geben Sie, durch einen Doppelpunkt voneinander getrennt, den Anfangs- und den Endwert des Bereiches an.
`SUBSTRING (operand3,operand5`,operand6) | SUBSTRING-Option: Wenn Sie die `SUBSTRING`-Option weglassen, wird der gesamte Inhalt eines Feldes geprüft. Mit der `SUBSTRING`-Option können Sie nur einen bestimmten Teil eines alphanumerischen, Unicode- oder binären Feldes prüfen. Nach dem Feldnamen (operand3) geben Sie zuerst die Startposition (operand5) und danach die Länge (operand6) des zu prüfenden Teils des Feldes an.
`SUBSTRING (operand4,operand7`,operand8) | Nach dem Feldnamen (operand4) geben Sie zuerst die Startposition (operand7) und danach die Länge (operand8) des zu prüfenden Teils des Feldes an.
`ANY statement` | ANY-Klausel: Mit `ANY` geben Sie das (die) Statement(s) an, die ausgeführt werden sollen, wenn irgendeiner der in der `VALUES`-Klausel angegebenen Werte gefunden wird. Diese Statements werden zusätzlich zu den in der `VALUES`-Klausel angegebenen Statements ausgeführt.
`ALL statement` | ALL-Klausel: Mit `ALL` geben Sie das (die) Statement(s) an, die ausgeführt werden sollen, wenn alle in der `VALUES`-Klausel angegebenen Werte gefunden werden. Diese Statements werden zusätzlich zu den in der `VALUES`-Klausel angegebenen Statements ausgeführt. Die `ALL`-Klausel kann nur in Verbindung mit dem Schlüsselwort `EVERY` eingesetzt werden
`NONE statement` | NONE-Klausel: Mit `NONE` geben Sie das (die) Statement(s) an, die ausgeführt werden sollen, wenn keiner der angegebenen Werte gefunden wurde.
`END-DECIDE` | Ende des DECIDE ON-Statements: Das für Natural reservierte Wort `END-DECIDE` muss zum Beenden des `DECIDE ON`-Statements benutzt werden.

## Beispiele

- Beispiel 1 — DECIDE ON-Statement mit FIRST-Option

- Beispiel 2 — DECIDE ON-Statement mit EVERY-Option

### Beispiel 1 — DECIDE ON-Statement mit FIRST-Option

    ** Example 'DECEX3': DECIDE ON (with FIRST option)
    ************************************************************************
    *
    SET KEY ALL
    INPUT 'Enter any PF key' /
          'and check result' /
    *
    DECIDE ON FIRST VALUE OF *PF-KEY
      VALUE 'PF1'
        WRITE 'PF1 key entered.'
      VALUE 'PF2'
        WRITE 'PF2 key entered.'
      ANY VALUE
        WRITE 'PF1 or PF2 key entered.'
      NONE VALUE
        WRITE 'Neither PF1 nor PF2 key entered.'
    END-DECIDE
    *
    END

Ausgabe des Programms `DECEX3`:

     Enter any PF key
     and check result

Ausgabe nach Drücken von PF1:

    Page      1                                                  05-01-11  15:08:50

    PF1 key entered.
    PF1 or PF2 key entered.

### Beispiel 2 — DECIDE ON-Statement mit EVERY-Option

    ** Example 'DECEX4': DECIDE ON (with EVERY option)
    ************************************************************************
    DEFINE DATA LOCAL
    1 #FIELD (N1)
    END-DEFINE
    *
    INPUT 'Enter any value between 1 and 9:' #FIELD (SG=OFF)
    *
    DECIDE ON EVERY VALUE OF #FIELD
      VALUE 1 : 4
        WRITE 'Content of #FIELD is 1-4'
      VALUE 2 : 5
        WRITE 'Content of #FIELD is 2-5'
      ANY VALUE
        WRITE 'Content of #FIELD is 1-5'
      ALL VALUE
        WRITE 'Content of #FIELD is 2-4'
      NONE VALUE
        WRITE 'Content of #FIELD is not 1-5'
        END-DECIDE
    *
    END

Ausgabe des Programms `DECEX4`:

    ENTER ANY VALUE BETWEEN 1 AND 9: 4

Nach Eingabe und Bestätigung des Wertes 4:

    Page      1                                                  05-01-11  15:11:45

    Content of #FIELD is 1-4
    Content of #FIELD is 2-5
    Content of #FIELD is 1-5
    Content of #FIELD is 2-4

### On this page

- Funktion
- Syntax-Beschreibung
- Beispiele