%let ss=sashelp.class;
%macro test1();
%put %superq(&ss.);
%put 这是一个间隔;
%if %sysfunc(exist(%superq(&ss.))) eq 1 %then %do;
%put 已解析;
%end;
%mend;
%test1();
%macro test2(parm);
%put %superq(parm);
%put 这是一个间隔;
%if %sysfunc(exist(%superq(parm))) eq 1 %then %do;
%put 已解析;
%end;
%mend;
%test2(&ss.);
上述两个宏,test2可以解析%ss.宏变量下数据集的存在,且在put过程没有报错;而单纯将&ss.从宏参数的位置转移到宏内,却无法put出正确的宏变量,且可以在有报错的情况下put出“已解析”的语句。
有一种解释说%superq是在执行期起作用,本人实在愚钝,不能理解具体的原因。
请问背后的造成两个宏运行结果不同的具体原因是什么呢?