sas宏变量未解决

时间:2016-10-10 16:15:59

标签: macros sas global-variables

我的代码曾经有问题(比如一周前) 现在在一台新电脑上,它不是任何人

我使用SQL

创建宏变量
proc sql noprint;    
select count(distinct(num_nation)) into :nb_country  from AFGp
;
%let nb_country = &nb_country;
select distinct(num_nation) into :pays1 - :pays&nb_country from AFGp;
select count(*) into :nbvar from variables;

%let nbvar=&nbvar;

select variable, var_label, lbl_categ into :var1 - :var&nbvar, :lab1 - :lab&nbvar, :labc1 - :labc&nbvar from variables
;
quit;
run;

并且此宏无法识别以var:

开头的宏变量
%macro testtest();

%do j = 1 %to %eval(&nb_country);

    %do i = 2 %to %eval(&nbvar);
        proc freq data=AFGp noprint;
            tables &&var&i. / nocol nocum nofreq nowarn out=_TFP_&j._&i;
            where num_nation = &j;
        run;
        %end;
    %end;

%mend;

例如: 这个

%let j=4;
%put &j &var4 &&var&j;

返回:

4 Female &&var4

这段代码以前是正常解决的,我不明白为什么它没有任何问题。

如果你能帮助我,或者甚至让我朝着正确的方向前进,这已经阻止了我3个小时了

2 个答案:

答案 0 :(得分:1)

语法问题会导致解析器混乱,您需要运行魔术字符串(由Joe作为explained)来重置:

%*;*;*';*";%*%mend;*);

这可能不是您的代码的问题 - 可以通过突出显示并运行“部分”代码块来触发(例如在Base SAS中)。

答案 1 :(得分:0)

我重启了SAS,现在相同的代码正常运行。

我仍然不知道为什么它之前没有用,或者即使这对某些人来说是一个重新解决的问题,但显然SAS的座右铭是“当有疑问时重启!”