SAS的IF结构允许嵌套,但SAS不提供IF-ELSEIF-ELSE的多分支结构。但是SAS提供类似其它语言中的SWITCH结构的SELECT结构。
以下是SELECT结构的两种基本用法:
基本用法一:
SELECT (选择表达式);
WHEN(值列表)
语句;
WHEN(值列表)
语句;
……
OTHERWISE
语句;
END;
其中“选择表达式”是一个取数值、字符型值的变量或表达式,“值列表”为一项或多项(逗号相隔),每项可以是一个与选择表达式相同取值类型的表达式。“语句”可以是单个语句或复合语句。
执行SELECT结构时,先计算出选择表达式和值列表中的所有值,然后把选择表达式值由前向后与值列表中的值相比,发现相等值则执行对应的语句,然后退出SELECT结构(不再查看后面的值列表)。如果选择表达式的值不等于任何值列表中的值则执行OTHERWISE对应的语句,这种情况下没有OTHERWISE语句会出错。如:
SELECT(month); WHEN('Feb', 'Mar', 'Apr') PUT '春天'; WHEN('May', 'Jun', 'Jul') PUT '夏天'; OTHERWISE PUT '不是秋天就是冬天'; END;
基本用法二:
SELECT;
WHEN(条件)
语句;
WHEN(条件)
语句;
……
OTHERWISE
语句;
END;
这种SELECT语句没有选择表达式,而是在每个WHEN语句指定一个条件(逻辑表达式),执行第一个满足条件的WHEN后的语句。如果所有条件都不满足,则执行OTHERWISE后的语句。如:
SELECT; WHEN(age <= 12) PUT '少年'; WHEN(age < 35) PUT '青年'; OTHERWISE PUT '中老年'; END;

