2015-04-03 3 views
0

Ошибка при попытке получить макропеременные в определении макроса при использовании символов подчеркивания. Я хотел бы сохранить соглашение об именах, которое у меня есть, но для этого нужно, чтобы макропеременные были решены. Что мне не хватает?Макро переменная wont разрешает с подчеркиванием

%macro mymacro(dd=,mm=,yy=,dnr=,dma=); 
. 
. 
. 

%if dnr = 1 %then %let dnrname=est; 
%if dnr = 2 %then %let dnrname=cen; 
%if dnr = 3 %then %let dnrname=mtec; 
%if dnr = 4 %then %let dnrname=pac; 
%if dnr = 5 %then %let dnrname=mtwp; 

data setoff_&dnrname._&dma._&mm.&dd.&yy.; 
    set restart_no retimed one_min_durations; 
run; 
. 
. 
. 
%mend mymacro; 

ошибка выглядит следующим образом:

NOTE: Line generated by the invoked macro "SETOFF". 
89  data setoff_&dnrname._&dma._&mm.&dd.&yy.;  set restart_no retimed one_min_durations; 
        - 
        22 
        200 
89 ! run; proc sort data = setoff_&dnrname._&dma._&mm.&dd.&yy.;  by &dims_list. sid; run; 

ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, (, /, ;, 
       _DATA_, _LAST_, _NULL_. 

ответ

4

%if dnr = 1 %then %let dnrname=est;

Это проблема. dnr никогда не равен 1. Вам не хватает амперсанда.

Смежные вопросы