バージョン 4.2.5
 —  ステートメント  —

DECIDE FOR

DECIDEFOR

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 を指定する必要があります。

Top of page

構文説明

FIRST CONDITION 最初に真になった条件のみが処理されます。 「例 1」も参照してください。
EVERY CONDITION 真になった条件がすべて処理されます。 「例 2」も参照してください。
WHEN logical-condition statement この節では、処理される論理条件(複数可)を指定します。 『プログラミングガイド』の「論理条件基準」を参照してください。
WHEN ANYstatement WHEN ANY では、任意の論理条件が真になったときに実行されるステートメント(複数可)を指定できます。
WHEN ALLstatement WHEN ALL では、すべての論理条件が真になったときに実行されるステートメント(複数可)を指定できます。 この節は、EVERY が指定された場合にのみ適用されます。
WHEN NONEstatement WHEN NONE では、真になっている論理条件が 1 つもないときに実行されるステートメント(複数可)を指定できます。
END-DECIDE DECIDE FOR ステートメントを終了するには、Natural 予約語 END-DECIDE を使用する必要があります。

Top of page

例 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 A #PARM Y

Enter キーを押した後:

PLEASE ENTER A VALID FUNCTION  
#FUNCTION A #PARM Y

例 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.                                          

Top of page