diff --git a/README.md b/README.md
index 9b95d48..e7a25ab 100644
--- a/README.md
+++ b/README.md
@@ -144,7 +144,7 @@ SHA256 digest for macroArray: 849629D3AF3FE3AB45D86990E303F1D5E4D5F9F31C8ED6864C
[Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray")
-- **BasePlus**\[0.991\] adds a bunch of functionalities I am missing in BASE SAS, such as:
+- **BasePlus**\[0.992\] adds a bunch of functionalities I am missing in BASE SAS, such as:
```sas
call arrMissToRight(myArray);
call arrFillMiss(17, myArray);
@@ -158,7 +158,7 @@ format x bool.;
%put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_);
```
-SHA256 digest for BasePlus: A321A4BC54D444B82575EC5D443553A096557AD69DC171D578A330277E67637A
+SHA256 digest for BasePlus: C9D26CAC2504634EF25F02B5BD04596B2F873E3C25E8CEDDD7F496A78B184E9F
[Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus")
diff --git a/packages/README.md b/packages/README.md
index 76e42cf..8196de5 100644
--- a/packages/README.md
+++ b/packages/README.md
@@ -90,7 +90,7 @@ SHA256 digest for macroArray: 849629D3AF3FE3AB45D86990E303F1D5E4D5F9F31C8ED6864C
---
-- **BasePlus**\[0.991\] adds a bunch of functionalities I am missing in BASE SAS, such as:
+- **BasePlus**\[0.992\] adds a bunch of functionalities I am missing in BASE SAS, such as:
```sas
call arrMissToRight(myArray);
call arrFillMiss(17, myArray);
@@ -104,7 +104,7 @@ format x bool.;
%put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_);
```
-SHA256 digest for BasePlus: A321A4BC54D444B82575EC5D443553A096557AD69DC171D578A330277E67637A
+SHA256 digest for BasePlus: C9D26CAC2504634EF25F02B5BD04596B2F873E3C25E8CEDDD7F496A78B184E9F
[Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus")
diff --git a/packages/SHA256_for_packages.txt b/packages/SHA256_for_packages.txt
index df9eefb..0ca9136 100644
--- a/packages/SHA256_for_packages.txt
+++ b/packages/SHA256_for_packages.txt
@@ -1,8 +1,11 @@
+/* 20210818 */
+BasePlus: C9D26CAC2504634EF25F02B5BD04596B2F873E3C25E8CEDDD7F496A78B184E9F
+
/* 20210726 */
-2FC239B5A2216D073826125999BFD64FBA32BFEA3EE6EA2B22EC64E8C1B04144
+GSM: 2FC239B5A2216D073826125999BFD64FBA32BFEA3EE6EA2B22EC64E8C1B04144
/* 20210722 */
-311BCF510B7B189AE9A75C56C4D2F99F844114CC5AD32329FAD690BA1F10422A
+GSM: 311BCF510B7B189AE9A75C56C4D2F99F844114CC5AD32329FAD690BA1F10422A
/* 20210719 */
GSM: 4322D79C382B9D58EF5E51AFD0856331F8B38B1B35AC21295DADFC43F81B2AF8
diff --git a/packages/baseplus.md b/packages/baseplus.md
index 5c758c6..c1ec220 100644
--- a/packages/baseplus.md
+++ b/packages/baseplus.md
@@ -41,12 +41,13 @@
* [`semicolonN()` function](#semicolonn-function)
* [`%zipEvalf()` macro](#zipevalf-macro)
* [`%QzipEvalf()` macro](#qzipevalf-macro)
+ * [`%functionExists()` macro](#functionexists-macro)
* [License](#license)
---
-# The BasePlus package [ver. 0.991] ###############################################
+# The BasePlus package [ver. 0.992] ###############################################
The **BasePlus** package implements useful
functions and functionalities I miss in the BASE SAS.
@@ -61,7 +62,8 @@ Kudos to all who inspired me to generate this package:
*Mark Keintz*,
*Paul Dorfman*,
*Richard DeVenezia*,
-*Christian Graffeuille*.
+*Christian Graffeuille*,
+*Allan Bowe*.
---
@@ -179,52 +181,54 @@ Kudos to all who inspired me to generate this package:
---
Package contains:
-1. macro deduplistc
-2. macro deduplistp
-3. macro deduplists
-4. macro deduplistx
-5. macro getvars
-6. macro qdeduplistx
-7. macro qgetvars
-8. macro qzipevalf
-9. macro symdelglobal
-10. macro zipevalf
-11. format bool
-12. format boolz
-13. format ceil
-14. format floor
-15. format int
-16. functions arrfill
-17. functions arrfillc
-18. functions arrmissfill
-19. functions arrmissfillc
-20. functions arrmisstoleft
-21. functions arrmisstoleftc
-22. functions arrmisstoright
-23. functions arrmisstorightc
-24. functions bracketsc
-25. functions bracketsn
-26. functions catxfc
-27. functions catxfi
-28. functions catxfj
-29. functions catxfn
-30. functions deldataset
-31. functions semicolonc
-32. functions semicolonn
-33. format brackets
-34. format semicolon
-35. proto qsortincbyprocproto
-36. functions frommissingtonumberbs
-37. functions fromnumbertomissing
-38. functions quicksort4notmiss
-39. functions quicksorthash
-40. functions quicksorthashsddv
-41. functions quicksortlight
+1. macro deduplistc
+2. macro deduplistp
+3. macro deduplists
+4. macro deduplistx
+5. macro functionexists
+6. macro getvars
+7. macro qdeduplistx
+8. macro qgetvars
+9. macro qzipevalf
+10. macro symdelglobal
+11. macro zipevalf
+12. format bool
+13. format boolz
+14. format ceil
+15. format floor
+16. format int
+17. functions arrfill
+18. functions arrfillc
+19. functions arrmissfill
+20. functions arrmissfillc
+21. functions arrmisstoleft
+22. functions arrmisstoleftc
+23. functions arrmisstoright
+24. functions arrmisstorightc
+25. functions bracketsc
+26. functions bracketsn
+27. functions catxfc
+28. functions catxfi
+29. functions catxfj
+30. functions catxfn
+31. functions deldataset
+32. functions semicolonc
+33. functions semicolonn
+34. format brackets
+35. format semicolon
+36. proto qsortincbyprocproto
+37. functions frommissingtonumberbs
+38. functions fromnumbertomissing
+39. functions quicksort4notmiss
+40. functions quicksorthash
+41. functions quicksorthashsddv
+42. functions quicksortlight
+
*SAS package generated by generatePackage, version 20210109*
The SHA256 hash digest for package BasePlus:
-`A321A4BC54D444B82575EC5D443553A096557AD69DC171D578A330277E67637A`
+`C9D26CAC2504634EF25F02B5BD04596B2F873E3C25E8CEDDD7F496A78B184E9F`
---
# Content description ############################################################################################
@@ -2929,7 +2933,42 @@ run;
---
+## >>> `%functionExists()` macro: <<< #######################
+The functionExists() macro function tests
+if given funcion exists in the SAS session.
+The `sashelp.vfunc` view is used.
+
+See examples below for the details.
+
+The `%functionExists()` macro executes like a pure macro code.
+
+The function is a result of cooperation with [Allan Bowe](https://www.linkedin.com/in/allanbowe/)
+
+### SYNTAX: ###################################################################
+
+The basic syntax is the following, the `<...>` means optional parameters:
+~~~~~~~~~~~~~~~~~~~~~~~sas
+%functionExists(
+ funName
+)
+~~~~~~~~~~~~~~~~~~~~~~~
+
+**Arguments description**:
+
+1. `funName` - *Required*, the name of the function
+ existence of which you are testing.
+
+### EXAMPLES AND USECASES: ####################################################
+
+**EXAMPLE 1.** Test if function exists:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+ %put %functionExists(HASHING);
+
+ %put %functionExists(COSsinLOG);
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+---
## License ####################################################################
diff --git a/packages/baseplus.zip b/packages/baseplus.zip
index 159c594..cf927c8 100644
Binary files a/packages/baseplus.zip and b/packages/baseplus.zip differ