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:

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

** 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