在MACRO IN sas中的象征性参考

时间:2015-09-07 13:12:28

标签: macros sas

当我使用以下代码在sas中运行宏时,我一直在收到错误 - 符号引用未解析: 最初,我使用SQL将一组角色编号选择为以下列表:

PROC SQL NOPRINT; SELECT ROLENO INTO:R1-:R81 FROM ROLLNOS; QUIT;

然后使用宏来选择每个单独的标记,并将它们拼凑为:

options Mprint; 
%MACRO Marks; 

%DO I=1 %TO 1;
proc sql noprint;
create table Marks as select name, rollno, marks, grade from  masterdata
where rollno= "&R&I."; 
quit;

PROC APPEND DATA=Marks BASE=MarksSheet FORCE;RUN;

%END;
%MEND;
RUN;
%Marks;

执行sql语句时出错,请帮我解决问题。特别是引用part "&R&I."

1 个答案:

答案 0 :(得分:2)

您想要解析为R1。

&安培;的R&我。解析为macarovariable R(不可用)和宏变量I.

你需要第二个&在R之前,因为2&决心一个。

如果你使用&& R& I,在第一步&& R解析为& R和& I解析为1,所以你得到& R1。然后,这将在第二步中解析为宏变量R1。

同样%I = 1%到1只有一次迭代,这意味着什么?

options Mprint; 
%MACRO Marks; 

 %DO I=1 %TO 1;
proc sql noprint;
create table Marks as select name, rollno, marks, grade from  masterdata
where rollno= "&&R&I."; 
quit;

PROC APPEND DATA=Marks BASE=MarksSheet FORCE;RUN;

%END;
%MEND;
%Marks;