EVALUATE 指令は、コンパイル グループに含めるソース行の評価方法を提供します。
注: このセクションでは、コンパイラ指令文 DEFINE、EVALUATE、および IF は、ISO2002用語の指令を使用して言及されます。DEFINE コンパイラ オプションに言及する際は、そのように明示的に言及されます。
一般形式 1
一般形式 2
一般形式 3
すべての書き方に関する構文規則
- 規則の説明全体にわたる事項:
- operand-1 は、形式 1 では literal-1 または arithmetic-expression-1 を、形式 2 および形式 3 では TRUE または FALSE キーワードを参照します。
- operand-2 は、形式 1 では literal-2 または arithmetic-expression-2 を、形式 2 および形式 3 では constant-conditional-expression-1 を参照します。
- operand-3 は、形式 1 で literal-3 または arithmetic-expression-3 を参照します。
- キーワード >>EVALUATE、>>WHEN、>>WHEN OTHER、および >>END-EVALUATE は、領域 A または領域 B のいずれかの新しい行で開始する必要があり、また、その行にすべて収まるように指定する必要があります。
- 識別子 text-1 および text-2:
- 新しい行で開始する必要があり、複数行の構成が可能です。
- コンパイラ指令を含むあらゆる種類のソース行が対象となりえます。
- COPY 文も含まれる場合があります。
- 特定の EVALUATE 指令の指定は、すべてを同じライブラリ テキストで、またはすべてをソース テキストで指定する必要があります。この規則の目的上、text-1 および text-2 は EVALUATE 指令の指定とは見なされません。
- text-1 または text-2 で指定された入れ子の EVALUATE 指令は、新しい EVALUATE 指令と見なされます。
書き方 1 の構文規則
- EVALUATE 指令のすべての作用対象が同じ項類であることが必要です(算術式の項類は数値であると見なされます)。
- THROUGH と THRU は同等です。
- THROUGH または THRU が指定されている場合、選択された項目のすべてが数値の項類であることが必要です。
- arithmetic-expression-1、arithmetic-expression-2、および arithmetic-expression-3 は、「付録 E - コンパイル時算術式」に記載されている規則に従って構成される必要があります。
書き方 2 および 3 の構文規則
- constant-conditional-expression-1 は、「付録 B - 定数条件式」に記載されている規則に従って構成される必要があります。
すべての書き方に関する一般規則
- text-1 および text-2 は、EVALUATE 指令行の一部ではありません。
- EVALUATE 文の最初の真の分岐にある text-1 および text-2 は、COPY 文および REPLACE 文のように、照合規則および置換規則の対象となります。
- 文が、真 (EVALUATE FALSE 構文の場合は偽) を評価する一切の WHEN 指定なしに END-EVALUATE キーワードに達する場合、または WHEN OTHER が指定されていない場合、WHEN 指定に関連付けられた text-1
のすべての行が結果から除外されます。
書き方 1 の一般規則
- 各 WHEN で指定された値に従った選択を比較すると、次のようになります。
- THROUGH が指定されていない場合、選択対象が operand-2 と等しい場合に TRUE の結果が返されます。
- THROUGH を指定した場合、選択対象が operand-2 以上かつ operand-3 以下である場合に TRUE の結果が返されます。
- WHEN 指定が TRUE と評価された場合、その WHEN 指定に関連付けられた text-1 の行が結果のテキストに含まれます。EVALUATE 指令内の他の text-1 の行および text-2 の行はすべて除外されます。
- TRUE と評価される WHEN 指定がない場合、WHEN OTHER 指定に関連付けられた text-2 のすべての行 (指定されている場合) が結果のテキストに含まれます。EVALUATE 指令内の text-1 の行はすべて除外されます。
- literal-1 が英数字の場合、各文字のエンコードの 2 進表記に基づいて、等しいかどうかが文字ごとに比較されます。リテラルの長さが異なる場合、それらは等しくありません。
書き方 2 の一般規則
- 各 WHEN 指定に対して、constant-conditional-expression-1 が「付録 B - 定数条件式」に記載されている規則に従って評価されます。
- WHEN 指定が TRUE と評価される場合、その WHEN 指定に関連付けられた text-1 の行が結果のテキストに含まれます。EVALUATE 指令内の他の text-1 の行および text-2 の行はすべて除外されます。
- TRUE と評価される WHEN 指定がない場合、WHEN OTHER 指定に関連付けられた text-2 のすべての行 (指定されている場合) が結果のテキストに含まれます。EVALUATE 指令内の text-1 の行はすべて除外されます。
書き方 3 の一般規則
- 各 WHEN 指定に対して、constant-conditional-expression-1 が「付録 B - 定数条件式」に記載されている規則に従って評価されます。
- WHEN 指定が FALSE と評価される場合、その WHEN 指定に関連付けられた text-1 の行が結果のテキストに含まれます。EVALUATE 指令内の他の text-1 の行および text-2 の行はすべて除外されます。
- FALSE と評価される WHEN 指定がない場合、WHEN OTHER 指定に関連付けられた text-2 のすべての行 (指定されている場合) が結果のテキストに含まれます。EVALUATE 指令内の text-1 の行はすべて除外されます。