diff --git a/base/mp_resetoption.sas b/base/mp_resetoption.sas index 796dc65..ac6ea7b 100644 --- a/base/mp_resetoption.sas +++ b/base/mp_resetoption.sas @@ -21,15 +21,19 @@ https://blogs.sas.com/content/sastraining/2012/08/14/jedi-sas-tricks-reset-sas-s %macro mp_resetoption(option /* the option to reset */ )/*/STORE SOURCE*/; -data _null_; - length code $1500; - startup=getoption("&option",'startupvalue'); - current=getoption("&option"); - if startup ne current then do; - code =cat('OPTIONS ',getoption("&option",'keyword','startupvalue'),';'); - putlog "NOTE: Resetting system option: " code ; - call execute(code ); - end; -run; - +%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do; + data _null_; + length code $1500; + startup=getoption("&option",'startupvalue'); + current=getoption("&option"); + if startup ne current then do; + code =cat('OPTIONS ',getoption("&option",'keyword','startupvalue'),';'); + putlog "NOTE: Resetting system option: " code ; + call execute(code ); + end; + run; +%end; +%else %do; + %put &sysmacroname: reset option feature unavailable on &sysvlong; +%end; %mend mp_resetoption; \ No newline at end of file diff --git a/tests/crossplatform/mp_resetoption.test.sas b/tests/crossplatform/mp_resetoption.test.sas new file mode 100644 index 0000000..3413fb7 --- /dev/null +++ b/tests/crossplatform/mp_resetoption.test.sas @@ -0,0 +1,31 @@ +/** + @file + @brief Testing mp_resetoption macro + +

SAS Macros

+ @li mp_assert.sas + @li mp_assertscope.sas + @li mp_resetoption.sas + +**/ + + +%let orig=%sysfunc(getoption(obs)); + +options obs=30; + +%mp_assertscope(SNAPSHOT) +%mp_resetoption(OBS) +%mp_assertscope(COMPARE) + +%let new=%sysfunc(ifc( + "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5", + %sysfunc(getoption(obs)), /* test it worked */ + &orig /* cannot test as option unavailable */ +)); + +%mp_assert( + iftrue=(&new=&orig), + desc=Checking option was reset (if reset option available), + outds=work.test_results +)