WHERE/IF 条件での関数の呼び出し

WHERE 条件または IF 条件で関数を呼び出すことができます。その際、関数の出力値がテスト値と比較されます。

WHERE 条件での関数の呼び出し

WHERE function relation expression 

説明

function

関数です。

relation

EQ や LE など、関数と式との関係を表す演算子です。

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';