如题,没有理解retain是非执行语句。求指导~
54.Consider the following data step:
data WORK.TEST;
set SASHELP.CLASS(obs=5);
retain City \’Beverly Hills\';
State=\’California\';
run;
The computed variables City and State have their values assigned using two different methods, a RETAIN statement and an Assignment statement. Which statement regarding this program is true?
A. The RETAIN statement is fine, but the value of City will be truncated to 8
bytes as the LENGTH statement has been omitted.
B. Both the RETAIN and assignment statement are being used to initialize new
variables and are equally efficient. Method used is a matter of programmer preference.
C. The assignment statement is fine, but the value of City will be truncated
to 8 bytes as the LENGTH statement has been omitted.
D. City\’s value will be assigned one time, State\’s value 5 times.
Answer: D
其实这里考察的RETAIN到底是在非执行语句还是执行语句。
RETAIN的作用是初始化变量为“特定的默认值”,是非执行语句,在编译过程中,PDV中用“特定的默认值”替代SAS系统默认值。在DATA步中,加入STATE进入PDV中,STATE=\’California\'; 是赋值语句,也就是执行语句。每一次从SASHELP.CLASS读取数据之后,都要执行一次赋值语句。