这里一个有意思的地方是,我想自己造几个数据测一下,如果我这么写把所有逻辑放在一个数据步里:
data d1;
input addr $ @@;
datalines;
s1 sb34 abc567
;
i = anydigit(addr);
if i >1 then
c = substr(addr,1,i-1);
else
c = '';
putlog c;
run;
SAS直接在i = anydigit(addr);那行报错,著名的180-322错误代码:
32 i = anydigit(addr);
-
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
假如我在头一个数据步里只读dataline的数据进来,然后把其他逻辑分拆到另一个数据步里,比如这样:
data _null_;
set d1;
i = anydigit(addr);
if i >1 then
c = substr(addr,1,i-1);
else
c = '';
putlog c;
run;
SAS就能运行正常得出结果。
哪位大神说说怎么回事?
|