我正在尝试创建macrovariable
,使用两个字符串的名称连接,其中一个是%SCAN()
函数的结果。所有这些都发生在一个宏内。但是macrovariable
未创建,并且日志表示对此macrovariable
的引用未解析,但生成的开放代码看起来没问题。
以下是一个例子:
%macro test;
proc sql;
select max(height) into :height%scan(999 3,1)
from sashelp.class;
quit;
%mend test;
%test
%put &height999;
日志:
MACROGEN(TEST): proc sql;
MACROGEN(TEST): select max(height) into :height999 from sashelp.class;
MACROGEN(TEST): quit;
NOTE: PROCEDURE SQL used (Total process time):
real time 0.05 seconds
cpu time 0.01 seconds
%put &height999;
WARNING: Apparent symbolic reference HEIGHT999 not resolved.
&height999
但如果我在开放代码中做同样的事情一切正常:
proc sql;
select max(height) into :height%scan(999 3,1)
from sashelp.class;
quit;
%put &height999;
日志:
SYMBOLGEN: Macro variable HEIGHT999 resolves to 72
我怀疑我仍然不了解SAS的宏观机制。或者它是否具体为SELECT INTO?
答案 0 :(得分:3)
我认为这是因为在%test
内创建的宏变量是%test
的本地变量,所以你不能在外面调用它。
您可以使用%global hight999;