Macros sas宏中的符号引用

Macros sas宏中的符号引用,macros,sas,Macros,Sas,使用以下代码在sas中运行宏时,我收到一个错误-符号引用未解决: 最初,我使用SQL在列表中选择一组角色号,如下所示: procsqlnoprint;从ROLLNOS中将ROLENO选择为:R1-:R81;退出 然后使用宏选择每个单独的标记,并将其命名为: options Mprint; %MACRO Marks; %DO I=1 %TO 1; proc sql noprint; create table Marks as select name, rollno, marks, grade

使用以下代码在sas中运行宏时,我收到一个错误-符号引用未解决: 最初,我使用SQL在列表中选择一组角色号,如下所示:

procsqlnoprint;从ROLLNOS中将ROLENO选择为:R1-:R81;退出

然后使用宏选择每个单独的标记,并将其命名为:

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语句时出错,请帮助我解决此问题。尤其是引用部分-
“&R&I.”

您要解析为R1

&R&I.解析为MACAROR变量(不可用)和宏变量I

在R之前需要一秒钟,因为2将解析为1

如果使用&&R&I,在第一步中,&&R解析为&R,而&I解析为1,因此得到了&R1。这将在第二步中解析为宏变量R1

另外%Doi=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;

是的,它是有效的,没有“它只是”和“R&I”。谢谢“.”应该是可选的。这在这里没有真正意义,但也不应该产生错误。