DECIDE FOR

DECIDE FOR

FIRST

CONDITION
EVERY
  {WHEN logical-condition statement }
  [WHEN ANY statement ]
  [WHEN ALL statement ]
  WHEN NONE statement
END-DECIDE

このドキュメントでは、次のトピックについて説明します。

構文図で使用されている記号については、「構文記号」を参照してください。

関連ステートメント:DECIDE ON | IF | IF SELECTION | ON ERROR

関連機能グループ:論理条件の処理


関数

DECIDE FOR ステートメントは、複数の条件(ケース)に応じて 1 つ以上のアクションを実行するかどうかを判定します。

注意:
ある条件のもとで何も実行しない場合は、DECIDE FOR ステートメントの対応する節にステートメント IGNORE を指定する必要があります。

構文説明

構文要素 説明
FIRST CONDITION
最初の条件のみの処理:

最初に真になった条件のみが処理されます。

例 1」も参照してください。

EVERY CONDITION
各条件の処理:

真になった条件がすべて処理されます。

例 2」も参照してください。

WHEN logical-condition statement
処理する論理条件:

この節では、処理される論理条件(複数可)を指定します。

プログラミングガイド』の「論理条件基準」を参照してください。

WHEN ANY statement
WHEN ANY 節:

WHEN ANY では、任意の論理条件が真になったときに実行されるステートメント(複数可)を指定できます。

WHEN ALL statement
WHEN ALL 節:

WHEN ALL では、すべての論理条件が真になったときに実行されるステートメント(複数可)を指定できます。

この節は、EVERY が指定された場合にのみ適用されます。

WHEN NONE statement
WHEN NONE 節:

WHEN NONE では、真になっている論理条件が 1 つもないときに実行されるステートメント(複数可)を指定します。

END-DECIDE
DECIDE FOR ステートメントの終了:

DECIDE FOR ステートメントを終了するには、Natural の予約語 END-DECIDE を使用する必要があります。

例 1 - FIRST オプションを指定した DECIDE FOR

** Example 'DECEX1': DECIDE FOR (with FIRST option)                     
************************************************************************
DEFINE DATA LOCAL                                                       
1 #FUNCTION (A1)                                                        
1 #PARM     (A1)                                                        
END-DEFINE                                                              
*                                                                       
INPUT #FUNCTION #PARM                                                   
*                                                                       
DECIDE FOR FIRST CONDITION                                              
  WHEN #FUNCTION = 'A' AND #PARM = 'X'                                  
    WRITE 'Function A with parameter X selected.'                       
  WHEN #FUNCTION = 'B' AND #PARM = 'X'                                  
    WRITE 'Function B with parameter X selected.'                       
  WHEN #FUNCTION = 'C' THRU 'D'                                         
    WRITE 'Function C or D selected.'                                   
  WHEN NONE                                                             
    REINPUT 'Please enter a valid function.'                            
            MARK *#FUNCTION 
END-DECIDE
*         
END

プログラム DECEX1 の出力:

#FUNCTION   #PARM

A と Y を入力して Enter キーを押した後:

#FUNCTION A #PARM Y 
 
Please enter a valid function.

例 2 - EVERY オプションを指定した DECIDE FOR

** Example 'DECEX2': DECIDE FOR (with EVERY option)                     
************************************************************************
DEFINE DATA LOCAL                                                       
1 #FIELD1 (N5.4)                                                        
END-DEFINE                                                              
*                                                                       
INPUT #FIELD1                                                           
*                                                                       
DECIDE FOR EVERY CONDITION                                              
  WHEN #FIELD1 >= 0                                                     
    WRITE '#FIELD1 is positive or zero.'                                
  WHEN #FIELD1 <= 0                                                     
    WRITE '#FIELD1 is negative or zero.'                                
  WHEN FRAC(#FIELD1) = 0                                                
    WRITE '#FIELD1 has no decimal digits.'                              
  WHEN ANY                                                              
    WRITE 'Any of the above conditions is true.'                        
  WHEN ALL                                                              
    WRITE '#FIELD1 is zero.'
  WHEN NONE
    IGNORE 
END-DECIDE
*          
END

プログラム DECEX2 の出力:

#FIELD1 42

Enter キーを押した後:

Page      1                                                  05-01-11  14:56:26
                                                                               
#FIELD1 is positive or zero.                                                   
#FIELD1 has no decimal digits.                                                 
Any of the above conditions is true.