Functions and CALL Routines 
Category:  Numeric 
Restriction:  I18N Level 2 
Syntax  
Arguments  
Details  
Comparisons  
Examples  
Example 1: Calculating Sales Commission  
See Also 
Syntax 
IFN(logicalexpression, valuereturnedwhentrue, valuereturnedwhenfalse <,valuereturnedwhenmissing>) 
specifies a numeric constant, variable, or expression that is returned when the value of logicalexpression is true.
specifies a numeric constant, variable, or expression that is returned when the value of logicalexpression is false.
specifies a numeric constant, variable or expression that is returned when the value of logicalexpression 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 logicalexpression. If logicalexpression is true (that is, not zero and not missing), then IFN returns the value in the second argument. If logicalexpression is a missing value, and you have a fourth argument, then IFN returns the value in the fourth argument. Otherwise, if logicalexpression 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.