2016-12-20 3 views
0

Мне нужно создать сумму из 4 переменных несколько раз каждый раз с новым набором переменных. Напр. A1 = сумма (a1, a2, a3, a4), B1 = сумма (b1, b2, b3, b4) & и так далее. Итак, я пытаюсь написать макрос, который поможет мне сделать это легко. Ниже приводится код:Операции с макросом SAS

%macro SUM2(VAR1,var2,var3,VAR4); 
data Subs_60_new; 
set Subs_60; 
substr(&var1,1,10)=sum(&var1,&var2,&var3,&var4); 
run; 
%mend sum2; 
options mprint mlogic;sum2(ADDITIONAL_INFO_Q1,ADDITIONAL_INFO_Q2,ADDITIONAL_INFO_Q3,ADDITIONAL_INFO_Q4); 

Я использую SAS EG для той же & при запуске макроса я получаю следующее примечание:

NOTE: Writing TAGSETS.SASREPORT13(EGSR) Body file: EGSR 

& очевидно, когда я пытаюсь выполнить макрос он бросает ошибка.

Может ли кто-нибудь помочь мне?

ответ

0

при вызове макроса, вы должны предшествовать имя макроса с % символа, например, следующим образом:

%macro SUM2(VAR1,var2,var3,VAR4); 
data Subs_60_new; 
set Subs_60; 
substr(&var1,1,10)=sum(&var1,&var2,&var3,&var4); 
run; 
%mend sum2; 
options mprint mlogic; 
%sum2(ADDITIONAL_INFO_Q1,ADDITIONAL_INFO_Q2,ADDITIONAL_INFO_Q3,ADDITIONAL_INFO_Q4); 

NOTE безвреден. Это ERROR s и WARNING s в целом, что вы должны беспокоиться.

Я бы отметить, что это, вероятно, все-таки выдаст ошибку, как вы пытаетесь заменить символы в переменной (&var1), который появляется, как будто она должна содержать числовое поле (будучи частью sum функции). Учитывая ваше описание того, чего вы пытаетесь достичь, я бы предложил добавить новое имя переменной в качестве другого параметра макроса - следующим образом:

%macro SUM2(VAR1,var2,var3,VAR4,varname); 
data Subs_60_new; 
set Subs_60; 
&varname=sum(&var1,&var2,&var3,&var4); 
run; 
%mend sum2; 
options mprint mlogic; 
%sum2(ADDITIONAL_INFO_Q1,ADDITIONAL_INFO_Q2 
    ,ADDITIONAL_INFO_Q3,ADDITIONAL_INFO_Q4 
    ,MyNewVariable); 
Смежные вопросы