Мне нужно хранить в макропеременной количество строк в наборе данных. Поэтому я использовал это:
%macro get_table_size(inset,macvar);
data _null_;
set &inset NOBS=size;
call symput("&macvar",size);
stop;
run;
%mend;
%get_table_size(LOANTAPE.INSTRUMENT_VU21,NUM_REG_INS);
%put &NUM_REG_INS;
До того, как мой компьютер вышел из строя (вынужден перезагрузить его с открытым SAS), это работало (клянусь, xd). Но теперь макрос NUM_REG_INS не создан. В журнале написано: Кажущаяся символика c ссылка на MACVAR не разрешена .
Итак, я проверил код как шаг данных, а не как макрос, например:
data _null_;
set LOANTAPE.INSTRUMENT_VU21 NOBS=size;
call symput("macvar",size);
stop;
run;
%put &macvar
И это работает. Таким образом, проблема заключается в использовании этого кода внутри макроса. Кто-нибудь знает, что здесь может происходить и как это исправить? И, ради любопытства, почему это работало раньше?
Спасибо, правда !!