2016-04-06 5 views
3

Я часто пишу макросы общего назначения в 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); 

ответ

3

опции SAS легко получить:

%let sas_mprint = %sysfunc(getoption(mprint)); /* gives, eg, NOMPRINT */ 

ODS варианты не уверен ..

+0

Это только четверть ответа. Получить параметры легко, но их настройка так, как они были, намного сложнее, так как существуют разные «параметры» параметров. –

2

Я думаю, вы найдете соответствующую информацию в СБРОСА = и Push и POP от this SAS help page, которые, к сожалению, применимы только к параметрам GRAPHICS ODS.

Для сброса других настроек ODS выдается вид хакера here.

+0

Доступно начиная с версии 9.4 :( –

+0

А это позор –

Смежные вопросы