WHERE/IF 条件での関数の呼び出し
WHERE 条件または IF 条件で関数を呼び出すことができます。その際、関数の出力値がテスト値と比較されます。
WHERE 条件での関数の呼び出し
WHERE function relation expression
IF 条件での関数の呼び出し
IF function relation value
function
関数です。
relation
EQ や LE など、関数と式との関係を表す演算子です。
value
定数です。DEFINE または COMPUTE コマンドでは、値は一重引用符 (') で囲みます。
WHERE 条件での関数の呼び出し
SUBSTR 関数は、LAST_NAME の先頭の 2 バイトをサブ文字列として抽出します。このリクエストは、このサブ文字列が MC である従業員の名前と給与を表示します。
TABLE FILE EMPLOYEE PRINT FIRST_NAME LAST_NAME CURR_SAL WHERE SUBSTR(15, LAST_NAME, 1, 2, 2, 'A2') IS 'MC'; END
出力結果は次のとおりです。
FIRST_NAME LAST_NAME CURR_SAL ---------- --------- -------- JOHN MCCOY $18,480.00 ROGER MCKNIGHT $16,100.00
複合 IF コマンドまたは演算の使用
演算や複合 IF コマンド内では、出力値のフォーマットを指定する必要があります。これには次の 2 通りの方法があります。
- 別のコマンドでフォーマットを定義しておく。次の例では、AMOUNT フィールドはフォーマット D8.2 として定義済みであり、この関数は AMOUNT 出力フィールドに値を返します。IF コマンドは AMOUNT の値をテストし、結果を一時項目 AMOUNT_FLAG に格納します。
COMPUTE AMOUNT/D8.2 =; AMOUNT_FLAG/A5 = IF function(input1, input2, AMOUNT) GE 500 THEN 'LARGE' ELSE 'SMALL';
- フォーマットは、関数呼び出し内の最後の引数として指定します。次の例では、このコマンドにより直接、戻り値がテストされます。これは、関数が戻り値のフォーマット D8.2 を定義するため可能になります。
DEFINE AMOUNT_FLAG/A5 = IF function(input1, input2, 'D8.2') GE 500 THEN 'LARGE' ELSE 'SMALL';