我的代码曾经有问题(比如一周前) 现在在一台新电脑上,它不是任何人
我使用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个小时了
答案 0 :(得分:1)
语法问题会导致解析器混乱,您需要运行魔术字符串(由Joe作为explained)来重置:
%*;*;*';*";%*%mend;*);
这可能不是您的代码的问题 - 可以通过突出显示并运行“部分”代码块来触发(例如在Base SAS中)。
答案 1 :(得分:0)
我重启了SAS,现在相同的代码正常运行。
我仍然不知道为什么它之前没有用,或者即使这对某些人来说是一个重新解决的问题,但显然SAS的座右铭是“当有疑问时重启!”