【问题标题】:symbolic reference in MACRO IN sasMACRO IN sas 中的符号引用
【发布时间】:2015-09-07 13:12:27
【问题描述】:

当我使用以下代码在 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语句时出现错误,请帮我解决问题。尤其是引用部分-"&R&I."

【问题讨论】:

    标签: macros sas


    【解决方案1】:

    您想解析到 R1。

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

    在 R 之前需要第二个 &,因为 2 & 解析为一个。

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

    另外 %do I=1 %to 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”。谢谢!
    • “.”应该是可选的。它在这里没有真正意义,但它也不应该产生错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    相关资源
    最近更新 更多