1
0
mirror of https://github.com/sasjs/core.git synced 2026-01-14 12:00:05 +00:00

fix: avoid open file handle when the variable to find is not provided (in mf_existvar)

Includes a test that was failing and is now passing
This commit is contained in:
allan
2023-04-05 15:29:53 +01:00
parent 7471bd42a4
commit 32dd057e83
3 changed files with 36 additions and 8 deletions

12
all.sas
View File

@@ -312,13 +312,17 @@ https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md#functionex
%local dsid rc; %local dsid rc;
%let dsid=%sysfunc(open(&libds,is)); %let dsid=%sysfunc(open(&libds,is));
%if &dsid=0 or %length(&var)=0 %then %do; %if &dsid=0 %then %do;
%put %sysfunc(sysmsg()); %put %sysfunc(sysmsg());
0 0
%end;
%else %if %length(&var)=0 %then %do;
0
%let rc=%sysfunc(close(&dsid));
%end; %end;
%else %do; %else %do;
%sysfunc(varnum(&dsid,&var)) %sysfunc(varnum(&dsid,&var))
%let rc=%sysfunc(close(&dsid)); %let rc=%sysfunc(close(&dsid));
%end; %end;
%mend mf_existvar; %mend mf_existvar;

View File

@@ -25,13 +25,17 @@
%local dsid rc; %local dsid rc;
%let dsid=%sysfunc(open(&libds,is)); %let dsid=%sysfunc(open(&libds,is));
%if &dsid=0 or %length(&var)=0 %then %do; %if &dsid=0 %then %do;
%put %sysfunc(sysmsg()); %put %sysfunc(sysmsg());
0 0
%end;
%else %if %length(&var)=0 %then %do;
0
%let rc=%sysfunc(close(&dsid));
%end; %end;
%else %do; %else %do;
%sysfunc(varnum(&dsid,&var)) %sysfunc(varnum(&dsid,&var))
%let rc=%sysfunc(close(&dsid)); %let rc=%sysfunc(close(&dsid));
%end; %end;
%mend mf_existvar; %mend mf_existvar;

View File

@@ -18,3 +18,23 @@
iftrue=(%mf_existvar(sashelp.class,isjustanumber)=0), iftrue=(%mf_existvar(sashelp.class,isjustanumber)=0),
desc=Checking non existing var does not exist 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
)