Я часто пишу макросы общего назначения в SAS. В моем макросе я хочу применить некоторые настройки, напримерКак узнать, установлена ли опция SAS или опция ODS
- макропеременными опции
- SAS
- ODS варианты
Но после этого я хочу, чтобы «очистить свой беспорядок».
Для макропеременной, которая была бы
%macro myMac();
%let old_mac_var = &mac_var;
%let mac_var = my_variable;
%put Doing my stuf with &mac_var.;
%let mac_var = &old_mac_var;
%mend;
%let mac_var = value before;
%myMac;
%put mac_var is &mac_var;
(Конечно, я бы решить эту проблему, используя локальную макропеременную на практике, но это не имеет значения.)
Но как мне делать что для других настроек? например, как мне заполнить этот код?
%macro test_mprint(should_shouldNot);
data _null_;
put "NOTE: 'data _null_;' &should_shouldNot. be readable here above in the log";
run;
%mend;
%macro myMac();
%let sas_mprint = ...;
%let ods_exclude = ...;
options nomprint;
ods exclude none;
title 'CARS should be printed because of ods option exclude none';
proc print data=sashelp.class;
run;
%test_mprint(should not);
options &sas_mprint.;
ods exclude &ods_exclude.;
%mend;
options mprint;
ods exclude all;
%myMac;
title 'printing CLASS should be avoided by ods option exclude all';
proc print data=sashelp.class;
run;
%test_mprint(should);
Это только четверть ответа. Получить параметры легко, но их настройка так, как они были, намного сложнее, так как существуют разные «параметры» параметров. –