Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SAS中的编译与执行_Sas - Fatal编程技术网

SAS中的编译与执行

SAS中的编译与执行,sas,Sas,讨论了这个问题,与会者最终同意不同意 问题很简单:SAS在编译时为所有变量分配一个缺失值,除非sum语句中出现一个变量(在这种情况下,SAS在编译时分配一个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.TES

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

问题很简单:SAS在编译时为所有变量分配一个
缺失值
,除非
sum语句中出现一个变量(在这种情况下,SAS在编译时分配一个
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.
var2
被分配了一个
缺失值
,但
var1
被分配了
0
,因为它是
求和语句的一部分
(我相信是这样)



我的问题是为什么?我很确定SAS在编译时会将
缺失的值
分配给所有变量。为什么它会对将在
sum语句中显示的变量产生异常?还有其他例外吗?

我不会称之为sum语句

声明

var1+1;
var1 = var1 + 1;
相当于

retain var1 0;
var1 = var1 + 1;
也不是“长”和语句

var1+1;
var1 = var1 + 1;
也不是

它本身将执行RETAIN行为,也不会初始化为零。 因此,要回答这个问题:

初始化为零是由隐式请求的保留行为的一部分
a+b
变量
a
的语法


我想不出还有什么例外。

很好的解释。还值得注意的是,您实际放置
retain
语句的datastep中的位置并不影响识别该语句的时间。因此,将retain语句作为最后一行代码放置与将其作为第一行代码放置是相同的。