如何发现是否设置了SAS选项或ODS选项

时间:2016-04-06 13:07:06

标签: sas sas-macro

我经常在SAS中编写通用宏。在我的宏中,我想应用一些设置,比如

  • 宏变量
  • 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);

2 个答案:

答案 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