Production Ready Macros for SAS Application Developers
https://github.com/sasjs/core
mf_existfunction.sas
Go to the documentation of this file.
1/**
2 @file
3 @brief Checks if a function exists
4 @details Returns 1 if the function exists, else 0. Note that this function
5 can be slow as it needs to open the sashelp.vfuncs table.
6
7 Usage:
8
9 %put %mf_existfunction(CAT);
10 %put %mf_existfunction(DOG);
11
12 Full credit to [Bart](https://sasensei.com/user/305) for the vfunc pointer
13 and the tidy approach for pure macro data set filtering.
14 Check out his [SAS Packages](https://github.com/yabwon/SAS_PACKAGES)
15 framework! Where you can find the same [function](
16https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md#functionexists-macro
17 ).
18
19 @param [in] name (positional) - function name
20
21 @author Allan Bowe
22**/
23/** @cond */
24%macro mf_existfunction(name
25)/*/STORE SOURCE*/;
26
27 %local dsid rc exist;
28 %let dsid=%sysfunc(open(sashelp.vfunc(where=(fncname="%upcase(&name)"))));
29 %let exist=1;
30 %let exist=%sysfunc(fetch(&dsid, NOSET));
31 %let rc=%sysfunc(close(&dsid));
32
33 %sysevalf(0 = &exist)
34
35%mend mf_existfunction;
36
37/** @endcond */