DECIDE ON
|
||||||||||
{ | } [VALUES ] [OF ]
|
|||||||||
{ | } | |||||||||
{ | VALUES |
{ | } | |||||||
[[,{ | }] ... | |||||||||
[: { | } ]] | 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
を指定する必要があります。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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、operand6、operand7、および operand8 は、4 以下の長さでのみ使用できます。
構文要素の説明:
FIRST/EVERY | これらのキーワードの 1 つで、見つかった最初の値に対してだけ処理を行うか、または見つかったすべての値に対して処理を行うかを指定します。 | |
---|---|---|
operand1 |
選択フィールド:
operand1 または operand2 では、内容がチェックされるフィールドの名前を指定します。 |
|
VALUES operand2 [[,operand2] ... [:operand2]statement ... |
この節では、選択フィールドの値(operand2)、およびフィールドがその値になった場合に実行される statement(s) を指定します。 選択フィールドには、1 つの値、複数の値、またはオプションで 1 つ以上の値の範囲を指定できます。 複数の値を指定する場合は、INPUT 区切り文字( 値の範囲を指定する場合、範囲の開始値と終了値をコロン(:)で区切って指定します。 |
|
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 |
|
|
NONE statement | NONE では、指定した値が 1 つも見つからない場合に実行される statement(s) を指定します。
|
|
END-DECIDE | DECIDE ON ステートメントを終了するには、Natural 予約語 END-DECIDE を使用する必要があります。
|
** 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
Enter any PF key and check result
Page 1 05-01-11 15:08:50 PF1 key entered. PF1 or PF2 key entered.
** 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
ENTER ANY VALUE BETWEEN 1 AND 9: 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