SELECT 文

SELECT 文は一連の式をテストし、真と評価された最初のテストで指定されているアクションを実行します。いずれのテストも真と評価されない場合、OTHERWISE 句が指定されていれば、その句に関連付けられているアクションを実行します。一般的な形式は次のとおりです。

SELECT[select-expression];
    WHEN (e1[,e2[,e3[...]]])    action_1;
    WHEN (e4[,e5[,e6[...]]])    action_2;
       .
       .
       .
    [OTHERWISE action_m;] 
END;

select-expression および e1, e2... は有効な式で、各アクションは単一の文、複合文、または BEGIN ブロックです。次に例を示します。

SELECT;
    WHEN (F=40) G=G+1;
    WHEN (F=50) IF G > 0 THEN G=G+2;
       .
       .
       .
    OTHERWISE DO;
              .
              .
              .
              END;
END;

この例は、式を省略した SELECT 文を示しています。SELECT 文で式が省略されている場合は、それぞれの WHEN 句の式が評価され、必要に応じてビット文字列に変換されます。結果のビット文字列がゼロ以外の場合、WHEN 句の後のアクションが実行されます。上記の例では、F=40 が真であれば、アクション G=G+1 が実行されて SELECT グループが終了します。F=50 が真であれば、IF 文が実行されて SELECT グループが終了します。真となる WHEN 文が複数ある場合は、真となる最初の WHEN 句に関連付けられているアクションが実行されます。真となる WHEN 句がない場合は、OTHERWISE 句に関連付けられている DO グループが実行されます。

SELECT 文で select–expression が指定されている場合は、制御がその文に達すると select-expression が評価され、その値が保存されます。次に、WHEN 句の式が記述されている順に評価され、各値が select–expression の値と比較されます。select-expression の値と等しい値が見つかると、対応する WHEN 句に続く action が実行され、以降の WHEN 句の式は評価されません。WHEN 句の式に select–expression と等しい式がない場合は、OTHERWISE 句の後に指定されている action が無条件に実行されます。詳細については、「」の章の「SELECT」のセクションを参照してください。