diff --git a/all.sas b/all.sas index 35b79e8..2e580d4 100644 --- a/all.sas +++ b/all.sas @@ -312,13 +312,17 @@ https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md#functionex %local dsid rc; %let dsid=%sysfunc(open(&libds,is)); - %if &dsid=0 or %length(&var)=0 %then %do; + %if &dsid=0 %then %do; %put %sysfunc(sysmsg()); - 0 + 0 + %end; + %else %if %length(&var)=0 %then %do; + 0 + %let rc=%sysfunc(close(&dsid)); %end; %else %do; - %sysfunc(varnum(&dsid,&var)) - %let rc=%sysfunc(close(&dsid)); + %sysfunc(varnum(&dsid,&var)) + %let rc=%sysfunc(close(&dsid)); %end; %mend mf_existvar; diff --git a/base/mf_existvar.sas b/base/mf_existvar.sas index 368cd97..f156940 100755 --- a/base/mf_existvar.sas +++ b/base/mf_existvar.sas @@ -25,13 +25,17 @@ %local dsid rc; %let dsid=%sysfunc(open(&libds,is)); - %if &dsid=0 or %length(&var)=0 %then %do; + %if &dsid=0 %then %do; %put %sysfunc(sysmsg()); - 0 + 0 + %end; + %else %if %length(&var)=0 %then %do; + 0 + %let rc=%sysfunc(close(&dsid)); %end; %else %do; - %sysfunc(varnum(&dsid,&var)) - %let rc=%sysfunc(close(&dsid)); + %sysfunc(varnum(&dsid,&var)) + %let rc=%sysfunc(close(&dsid)); %end; %mend mf_existvar; diff --git a/tests/base/mf_existvar.test.sas b/tests/base/mf_existvar.test.sas index 18e5dff..d71cbcc 100644 --- a/tests/base/mf_existvar.test.sas +++ b/tests/base/mf_existvar.test.sas @@ -17,4 +17,24 @@ %mp_assert( iftrue=(%mf_existvar(sashelp.class,isjustanumber)=0), desc=Checking non existing var does not exist +) + +data work.lockcheck; + a=1; + output; + stop; +run; + +%mp_assert( + iftrue=(%mf_existvar(work.lockcheck,)=0), + desc=Checking non-provided var does not exist +) + +proc sql; +update work.lockcheck set a=2; + +%mp_assert( + iftrue=(&syscc=0), + desc=Checking the lock was released, + outds=work.test_results ) \ No newline at end of file