我经常在SAS中编写通用宏。在我的宏中,我想应用一些设置,比如
但事后我想要清理我的混乱"。
对于一个
的宏变量%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);
答案 0 :(得分:3)
SAS选项易于检索:
%let sas_mprint = %sysfunc(getoption(mprint)); /* gives, eg, NOMPRINT */
ODS选项不太确定..
答案 1 :(得分:2)
我认为您可以在this SAS help page的 RESET = 和 Push和POP 部分找到相关信息,遗憾的是,这些部分仅适用于ODS GRAPHICS选项。
为了重置其他ODS设置,会出现一种黑客攻击here。