前のページ|次のページ

IFN関数

式の真、偽、欠損に基づいて数値を返します。

カテゴリ: 数値
制限事項: この関数は、I18Nレベル2に準拠しており、SBCS、DBCSおよびMBCS(UTF8)での使用目的で設計されています。

構文

必須引数

logical-expression

数値の定数、変数または式を指定します。

value-returned-when-true

logical-expressionの値がtrueの場合に返される数値定数、変数または式を指定します。

value-returned-when-false

logical-expressionの値がfalseの場合に返される数値定数、変数または式を指定します。

オプション引数

value-returned-when-missing

logical-expressionの値が欠損値の場合に返される数値定数、変数または式を指定します。

詳細

IFN関数は、論理式の値に基づいて複数の値から選択できる条件ロジックを使用します。
IFNは、第1引数logical-expressionを評価します。logical-expressionがtrueの場合(ゼロや欠損値ではない場合)、IFNは第2引数の値を返します。logical-expressionが欠損値の場合、IFNは第4引数の値を返します(第4引数がある場合)。それ以外の場合、logical-expressionがfalseであれば、IFNは第3引数の値を返します。
IFN関数、IF/THEN/ELSE構文またはWHEREステートメントで同じ結果を生成できます。(例を参照)。ただし、IFN関数は、IF/THEN/ELSE構文やWHEREステートメントを使用しづらいまたは使用できない場合にDATAステップの式で役立ちます。

比較

IFN関数はIFC関数と類似していますが、IFCが文字値を返すのに対してIFNは数値を返す点が異なります。

例1: IFN関数を使用した手数料の計算

次の例では、IFNは式TotalSales > 10000を評価します。売り上げ合計が$10,000を超える場合、売り上げ手数料は売り上げ合計の5%になります。売り上げ合計が$10,000未満の場合、売り上げ手数料は売り上げ合計の2%になります。
data _null_;
   input TotalSales;
   commission=ifn(TotalSales > 10000, TotalSales*.05, TotalSales*.02);
   put commission=;
   datalines;
25000
10000
500
10300
;
次の出力がログに書き込まれます。
commission=1250 commission=200 commission=10 commission=515

例2: IF/THEN/ELSE構文を使用した手数料の計算

次の例では、IF/THEN/ELSE構文で式TotalSales > 10000を評価します。売り上げ合計が$10,000を超える場合、売り上げ手数料は売り上げ合計の5%になります。売り上げ合計が$10,000未満の場合、売り上げ手数料は売り上げ合計の2%になります。
data _null_;
   input TotalSales;
   if TotalSales > 10000 then commission = .05 * TotalSales;
      else commission = .02 * TotalSales;
   put commission=;
   datalines;
25000
10000
500
10300
;
次の出力がログに書き込まれます。
commission=1250 commission=200 commission=10 commission=515

例3: WHEREステートメントを使用した手数料の計算

次の例では、WHEREステートメントで式TotalSales > 10000を評価します。売り上げ合計が$10,000を超える場合、売り上げ手数料は売り上げ合計の5%になります。売り上げ合計が$10,000未満の場合、売り上げ手数料は売り上げ合計の2%になります。出力には、売り上げ合計が$10,000を超えている販売員のみが表示されます。
data sales;
   input SalesPerson $ TotalSales;
   datalines;
Michaels 25000
Janowski 10000
Chen 500
Gupta 10300
;
data commission;
   set sales;
   where TotalSales > 10000;
   commission = TotalSales * .05;
run;  
proc print data=commission;
   title 'Commission for Total Sales > 1000';
run;
WHEREステートメントからの出力
WHEREステートメントからの出力

関連項目:

関数:
前のページ|次のページ|ページの先頭へ