DECIDE ON

DECIDE ON

../graphics/cbo2.gif

FIRST
EVERY

../graphics/cbc2.gif

[VALUE] [OF]

../graphics/cbo2.gif

op1
SUBSTR (op3,op5,op6)

../graphics/cbc2.gif

             

../graphics/cbo2.gif

VALUE

../graphics/cbo2.gif

op2
SUBSTR (op4,op7,op8)

../graphics/cbc2.gif

 

../graphics/sbo2.gif

:

../graphics/cbo2.gif

op2
SUBSTR (op4,op7,op8)

../graphics/cbc2.gif

../graphics/sbc2.gif

statement ../graphics/dot3.gif ../graphics/cbc2.gif ../graphics/dot3.gif
, ../graphics/dot3.gif
[ANY [VALUE] statement ]
[ALL [VALUE] statement ]
NONE [VALUE] statement
END-DECIDE

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

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

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

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


関数

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

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

構文説明

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

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
op1   S A   N A U N P I F B D T L   G O ×
op2 C S A     A U N P I F B D T L   G O ×
op3   S A     A U         B             ×
op4 C S A     A U         B             ×
op5 C S           N P I   B *             ×
op6 C S           N P I   B *             ×
op7 C S           N P I   B *             ×
op8 C S           N P I   B *             ×

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

構文要素の説明:

構文要素 説明
FIRST/EVERY
値の処理:

これらのキーワードの 1 つで、見つかった最初の値に対してだけ処理を行うか、または見つかったすべての値に対して処理を行うかを指定します。

op1
選択フィールド:

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

VALUES op2 [[,op2] ... [:op2]statement ...
VALUES 節:

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

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

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

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

SUBSTRING
SUBSTRING オプション:

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

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

SUBSTRING (op4,op7,op8)
SUBSTRING オプション:

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

ANY statement
ANY 節:

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

ALL statement
ALL 節:

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

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

NONE statement
NONE 節:

NONE では、指定した値が 1 つも見つからない場合に実行される statement(s) を指定します。

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

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

例 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