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

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

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

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

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

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


機能

DECIDE ON ステートメントでは、変数の値(1 つまたは複数の値)に応じて行う複数の処理を指定します。

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

Top of page

構文説明

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1   S A   N A U N P I F B D T L   G O 不可
operand2 C S A     A U N P I F B D T L   G O 不可
operand3   S A   N A U         B             不可
operand4 C S A     A U         B             不可
operand5 C S           N P I   B *             不可
operand6 C S           N P I   B *             不可
operand7 C S           N P I   B *             不可
operand8 C S           N P I   B *             不可

* operand5 のフォーマット B、operand6operand7、および operand8 は、4 以下の長さでのみ使用できます。

構文要素の説明:

FIRST/EVERY これらのキーワードの 1 つで、見つかった最初の値に対してだけ処理を行うか、または見つかったすべての値に対して処理を行うかを指定します。
operand1
選択フィールド:

operand1 または operand2 では、内容がチェックされるフィールドの名前を指定します。

VALUES operand2 [[,operand2] ... [:operand2]statement ...

この節では、選択フィールドの値(operand2)、およびフィールドがその値になった場合に実行される statement(s) を指定します。

選択フィールドには、1 つの値、複数の値、またはオプションで 1 つ以上の値の範囲を指定できます。

複数の値を指定する場合は、INPUT 区切り文字(ID セッションパラメータで指定した文字)またはコンマ(,)で区切る必要があります。 セッションパラメータ DC でコンマを小数点文字として定義している場合は、この目的でコンマを使用することはできません。

値の範囲を指定する場合、範囲の開始値と終了値をコロン(:)で区切って指定します。

SUBSTRING (operand3,operand5,operand6)

SUBSTRING オプションの指定がないと、フィールドの内容全体がチェックされます。 SUBSTRING オプションを指定すると、英数字フィールド、Unicode フィールド、またはバイナリフィールドの特定の一部分だけをチェックできます。

フィールド名(operand3)の後に、まず開始位置(operand5)を指定してから、チェック対象のフィールドの部分の長さ(operand6)を指定してください。

SUBSTRING (operand4,operand7,operand8) フィールド名(operand4)の後に、まず開始位置(operand7)を指定してから、チェック対象のフィールドの部分の長さ(operand8)を指定してください。
ANY statement ANY では、VALUES 節にある値のいずれかが見つかった場合に実行される statement(s) を指定します。 VALUES 節で指定されたステートメントに加えて、これらのステートメントが実行されます。
ALL statement

ALL では、VALUES 節にある値がすべて見つかった場合に実行される statement(s) を指定します。 VALUES 節で指定されたステートメントに加えて、これらのステートメントが実行されます。

ALL 節は、キーワード EVERY を指定した場合にのみ適用されます。

NONE statement NONE では、指定した値が 1 つも見つからない場合に実行される statement(s) を指定します。
END-DECIDE DECIDE ON ステートメントを終了するには、Natural 予約語 END-DECIDE を使用する必要があります。

Top of page

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

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

プログラム DECEX3 の出力:

 Enter any PF key
 and check result

PF1 を押した後の出力:

Page      1                                                  05-01-11  15:08:50
                                                                               
PF1 key entered.                                                               
PF1 or PF2 key entered.

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

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

プログラム DECEX4 の出力:

ENTER ANY VALUE BETWEEN 1 AND 9: 4

"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

Top of page