From 5824423c13a3c8fcb350f144a2341c2740dbf009 Mon Sep 17 00:00:00 2001 From: Allan Bowe Date: Tue, 3 Aug 2021 14:16:52 +0300 Subject: [PATCH] fix: showing filerefs that exist (even when underlying does not) in mf_existfileref, along with 3 tests --- all.sas | 8 ++++++- base/mf_existfileref.sas | 8 ++++++- tests/base/mf_existfileref.test.sas | 35 +++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 tests/base/mf_existfileref.test.sas diff --git a/all.sas b/all.sas index 360f97b..c720190 100644 --- a/all.sas +++ b/all.sas @@ -133,7 +133,13 @@ options noquotelenmax; %macro mf_existfileref(fref )/*/STORE SOURCE*/; - %if %sysfunc(fileref(&fref))=0 %then %do; + %local rc; + %let rc=%sysfunc(fileref(&fref)); + %if &rc=0 %then %do; + 1 + %end; + %else %if &rc<0 %then %do; + %put &sysmacroname: Fileref &fref exists but the underlying file does not; 1 %end; %else %do; diff --git a/base/mf_existfileref.sas b/base/mf_existfileref.sas index bbec773..0423696 100644 --- a/base/mf_existfileref.sas +++ b/base/mf_existfileref.sas @@ -17,7 +17,13 @@ %macro mf_existfileref(fref )/*/STORE SOURCE*/; - %if %sysfunc(fileref(&fref))=0 %then %do; + %local rc; + %let rc=%sysfunc(fileref(&fref)); + %if &rc=0 %then %do; + 1 + %end; + %else %if &rc<0 %then %do; + %put &sysmacroname: Fileref &fref exists but the underlying file does not; 1 %end; %else %do; diff --git a/tests/base/mf_existfileref.test.sas b/tests/base/mf_existfileref.test.sas new file mode 100644 index 0000000..d5327d4 --- /dev/null +++ b/tests/base/mf_existfileref.test.sas @@ -0,0 +1,35 @@ +/** + @file + @brief Testing mf_existfileref macro + +

SAS Macros

+ @li mf_existfileref.sas + @li mp_assert.sas + +**/ + +filename ref1 temp; +filename ref2 temp; + +data _null_; + file ref1; + put 'exists'; +run; + +%mp_assert( + iftrue=(%mf_existfileref(ref1)=1), + desc=Checking fileref WITH target file exists, + outds=work.test_results +) + +%mp_assert( + iftrue=(%mf_existfileref(ref2)=1), + desc=Checking fileref WITHOUT target file exists, + outds=work.test_results +) + +%mp_assert( + iftrue=(%mf_existfileref(ref3)=0), + desc=Checking non-existant fref does not exist, + outds=work.test_results +)