2016-04-06 24 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

これは答えの1/4です。オプションを取得するのは簡単ですが、オプション設定の種類が異なるため、元の状態に戻すことははるかに難しくなります。 –

2

私はあなたがRESETで関連情報を見つけることだと思う=プッシュとPOPのセクションはthis SAS help pageですが、残念なことにODSグラフィックスオプションにのみ適用されます。

他のODS設定をリセットするには、一種のハックがhereに公開されています。

+0

リリース9.4現在利用可能:( –

+0

ああ、それは残念です –

関連する問題