| Functions and CALL Routines | 
| Category: | Numeric | 
| Restriction: | I18N Level 2 | 
| Syntax | |
| Arguments | |
| Details | |
| Comparisons | |
| Examples | |
| Example 1: Calculating Sales Commission | |
| See Also | |
Syntax | 
| IFN(logical-expression, value-returned-when-true, value-returned-when-false <,value-returned-when-missing>) | 
specifies a numeric constant, variable, or expression that is returned when the value of logical-expression is true.
specifies a numeric constant, variable, or expression that is returned when the value of logical-expression is false.
specifies a numeric constant, variable or expression that is returned when the value of logical-expression is missing.
| Details | 
The IFN function uses conditional logic that enables you to select among several values based on the value of a logical expression.
IFN evaluates the first argument, then logical-expression. If logical-expression is true (that is, not zero and not missing), then IFN returns the value in the second argument. If logical-expression is a missing value, and you have a fourth argument, then IFN returns the value in the fourth argument. Otherwise, if logical-expression is false, IFN returns the value in the third argument.
The IFN function, an IF/THEN/ELSE construct, or a WHERE statement can produce the same results. (See Examples.) However, the IFN function is useful in DATA step expressions when it is not convenient or possible to use an IF/THEN/ELSE construct or a WHERE statement.
| Comparisons | 
The IFN function is similar to the IFC function, except that IFN returns a numeric value whereas IFC returns a character value.
| Examples | 
The following examples show how to calculate sales commission using the IFN function, an IF/THEN/ELSE construct, and a WHERE statement. In each of the examples, the commission that is calculated is the same.
In the following example, IFN evaluates the expression TotalSales > 10000 . If total sales exceeds $10,000, then the sales commission is 5% of the total sales. If total sales is less than $10,000, then the sales commission is 2% of the total sales.
data _null_; input TotalSales; commission=ifn(TotalSales > 10000, TotalSales*.05, TotalSales*.02); put commission=; datalines; 25000 10000 500 10300 ; run;
SAS writes the following output to the log:
commission=1250 commission=200 commission=10 commission=515
In the following example, an IF/THEN/ELSE construct evaluates the expression TotalSales > 10000 . If total sales exceeds $10,000, then the sales commission is 5% of the total sales. If total sales is less than $10,000, then the sales commission is 2% of the total sales.
data _null_; input TotalSales; if TotalSales > 10000 then commission = .05 * TotalSales; else commission = .02 * TotalSales; put commission=; datalines; 25000 10000 500 10300 ; run;
SAS writes the following output to the log:
commission=1250 commission=200 commission=10 commission=515
In the following example, a WHERE statement evaluates the expression TotalSales > 10000 . If total sales exceeds $10,000, then the sales commission is 5% of the total sales. If total sales is less than $10,000, then the sales commission is 2% of the total sales. The output shows only those salespeople whose total sales exceed $10,000.
options pageno=1 nodate ls=80 ps=64; 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;
                       Commission for Total Sales > 1000                       1
                            Sales       Total
                     Obs    Person      Sales    commission
                      1     Michaels    25000       1250   
                      2     Gupta       10300        515   
| See Also | 
| 
 | 
Copyright © 2011 by SAS Institute Inc., Cary, NC, USA. All rights reserved.