无法解析宏

时间:2013-12-14 15:49:10

标签: sas sas-macro proc-sql

proc sql noprint;  
    select count(distinct USUBJID) into : N1 - : N4 from DM where upcase(ARM) ^= "SCREEN FAILURE"`   
    group by ARMN;  
quit; 

%macro TOTAL(name=,num=);   
    %do i=1 %to #`    
    %if ARMN=&i %then TOTAL= put(COUNT,3.)||" (" ||right(put(COUNT*100/&&name&num,5.1))||"%) ";  
%end;    
%mend TOTAL;    

data TOTAL;    
    set DS;     
    %TOTAL(name=T,num=4);   
   /*if ARMN=1 then TOTAL= put(COUNT,3.)||" (" ||right(put(COUNT*100/&N1,5.1))||"%) ";*/    
run;

上述代码是将治疗组中的受试者数量分配给宏变量,并使用相同的方法计算百分比,如上面的代码所示。写入的宏块未在datastep TOTAL中解析,并且没有发出警告或错误。

1 个答案:

答案 0 :(得分:2)

我认为你最高级别的问题是@DmitryShopin在评论中提到的问题。但是,我的答案可能是阻止宏解决的问题。

你的%If%Total语句在%Total宏中需要另一个分号。变量赋值语句的一个分号和%If%Then语句的一个分号。如果要生成多个变量赋值语句,则每个变量赋值语句都需要一个结束的分号。

如果没有样本数据进行测试,不确定这是否是唯一的问题。