SAS中的编译与执行

时间:2014-06-20 00:57:21

标签: sas

SAS forum讨论了这个问题,与会者最终同意不同意。

问题很简单:SAS在编译时为所有变量分配missing value UNLESS变量显示在sum statement中(在这种情况下,SAS指定的值为{{1}在编译时)。这是我的简单证据

0

记录屏幕

  data test;
  put _all_;
  var1+1;
  var2=5;
  put _all_;
  run;

var1=0 var2=. _ERROR_=0 _N_=1 var1=1 var2=5 _ERROR_=0 _N_=1 NOTE: The data set WORK.TEST has 1 observations and 2 variables. 被分配了var2missing value被分配了var1,因为它是0的一部分(我相信如此)


我的问题是为什么?我很确定SAS在编译时为所有变量分配sum statement。为什么它会在missing values中显示的变量例外?还有其他例外吗?

1 个答案:

答案 0 :(得分:6)

我不会称之为总结陈述。

声明

var1+1;

相当于

retain var1 0;
var1 = var1 + 1;

也不是'长'总结陈述

var1 = var1 + 1;

也不是

var1 = sum(var1, 1);

本身会执行RETAIN行为,也不会初始化为零。 所以回答这个问题:

初始化为零是隐式请求的RETAIN行为的一部分 a + b; 变量a的语法。

我无法想到其他例外情况。