mirror of
https://github.com/sasjs/core.git
synced 2026-01-08 18:00:06 +00:00
feat: new mf_existfunction macro
This commit is contained in:
33
base/mf_existfunction.sas
Normal file
33
base/mf_existfunction.sas
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/**
|
||||||
|
@file
|
||||||
|
@brief Checks if a function exists
|
||||||
|
@details Returns 1 if the function exists, else 0
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
%put %mf_existfunction(CAT);
|
||||||
|
%put %mf_existfunction(DOG);
|
||||||
|
|
||||||
|
Full credit to [Bart](https://sasensei.com/user/305) for the vfunc pointer
|
||||||
|
and the tidy approach for pure macro data set filtering.
|
||||||
|
Check out his [SAS Packages](https://github.com/yabwon/SAS_PACKAGES)
|
||||||
|
framework!
|
||||||
|
|
||||||
|
@param [in] name (positional) - function name
|
||||||
|
|
||||||
|
@author Allan Bowe
|
||||||
|
**/
|
||||||
|
/** @cond */
|
||||||
|
|
||||||
|
%macro mf_existfunction(name
|
||||||
|
)/*/STORE SOURCE*/;
|
||||||
|
|
||||||
|
%local dsid rc exist;
|
||||||
|
%let dsid=%sysfunc(open(sashelp.vfunc(where=(fncname="%upcase(&name)"))));
|
||||||
|
%let exist = %sysfunc(fetch(&dsid, NOSET));
|
||||||
|
%let rc = %sysfunc(close(&dsid));
|
||||||
|
|
||||||
|
%sysevalf(0 = &exist)
|
||||||
|
|
||||||
|
%mend mf_existfunction;
|
||||||
|
|
||||||
|
/** @endcond */
|
||||||
22
tests/crossplatform/mf_existfunction.test.sas
Normal file
22
tests/crossplatform/mf_existfunction.test.sas
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
/**
|
||||||
|
@file
|
||||||
|
@brief Testing mf_existfunction macro
|
||||||
|
|
||||||
|
<h4> SAS Macros </h4>
|
||||||
|
@li mf_existfunction.sas
|
||||||
|
@li mp_assert.sas
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
%mp_assert(
|
||||||
|
iftrue=(%mf_existfunction(CAT)=1),
|
||||||
|
desc=Checking if CAT function exists,
|
||||||
|
outds=work.test_results
|
||||||
|
)
|
||||||
|
|
||||||
|
%mp_assert(
|
||||||
|
iftrue=(%mf_existfunction(DOG)=0),
|
||||||
|
desc=Checking DOG function does not exist,
|
||||||
|
outds=work.test_results
|
||||||
|
)
|
||||||
|
|
||||||
Reference in New Issue
Block a user