ejemplos - Cómo descubrir si se establece una opción SAS u opción ODS
ejemplos de macros en sas (2)
A menudo escribo macros de propósito general en SAS. Dentro de mi macro quiero aplicar algunas configuraciones, como
- variables macro
- Opciones de SAS
- Opciones de SAO
Pero después quiero "limpiar mi desastre".
Para una variable macro que sería
%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;
(Por supuesto que resolvería esto usando una variable de macro local en la práctica, pero eso no es relevante).
Pero, ¿cómo hago eso para otros ajustes? es decir, ¿cómo puedo completar este código?
%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);
Las opciones SAS son fáciles de recuperar:
%let sas_mprint = %sysfunc(getoption(mprint)); /* gives, eg, NOMPRINT */
Las opciones de ODS no estoy tan seguro ...
Creo que encontrará información relevante en las secciones RESET = y Push y POP de esta página de ayuda de SAS , que lamentablemente se aplican solo a las opciones de ODS GRAPHICS.
Para restablecer las otras configuraciones de ODS, aquí se expone una especie de truco.