diff --git a/README.md b/README.md
index ee82c81..de0ff7a 100644
--- a/README.md
+++ b/README.md
@@ -146,7 +146,7 @@ SHA256 digest for macroArray: 9FE227EF3144431B51063D599148BDD8873509D1B32F1AC297
[Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray")
-- **BasePlus**\[0.994\] adds a bunch of functionalities I am missing in BASE SAS, such as:
+- **BasePlus**\[1.0\] adds a bunch of functionalities I am missing in BASE SAS, such as:
```sas
call arrMissToRight(myArray);
call arrFillMiss(17, myArray);
@@ -159,8 +159,12 @@ string = catXFn("date9.", "#", myArray);
format x bool.;
%put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_);
+
+%rainCloudPlot(sashelp.cars,DriveTrain,Invoice)
+
+%zipLibrary(sashelp,libOut=work)
```
-SHA256 digest for BasePlus: B34E352EC52E05B8BBE1816E6104F47677CBFDEAF7CD71B8BF04FDBFA01B0EF0
+SHA256 digest for BasePlus: 4EDB786B9D6F6D6C5741B5CAC1CB169DD10D8196600B2CB385DDE479A54F0FA3
[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 e2266ab..da57acd 100644
--- a/packages/README.md
+++ b/packages/README.md
@@ -90,7 +90,7 @@ SHA256 digest for macroArray: 70032D27081A0EE15BC82B8F14D2A61700FA7C1F0D88B4DB51
---
-- **BasePlus**\[0.994\] adds a bunch of functionalities I am missing in BASE SAS, such as:
+- **BasePlus**\[1.0\] adds a bunch of functionalities I am missing in BASE SAS, such as:
```sas
call arrMissToRight(myArray);
call arrFillMiss(17, myArray);
@@ -103,8 +103,12 @@ string = catXFn("date9.", "#", myArray);
format x bool.;
%put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_);
+
+%rainCloudPlot(sashelp.cars,DriveTrain,Invoice)
+
+%zipLibrary(sashelp,libOut=work)
```
-SHA256 digest for BasePlus: B34E352EC52E05B8BBE1816E6104F47677CBFDEAF7CD71B8BF04FDBFA01B0EF0
+SHA256 digest for BasePlus: 4EDB786B9D6F6D6C5741B5CAC1CB169DD10D8196600B2CB385DDE479A54F0FA3
[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 f0299c5..18bebfb 100644
--- a/packages/SHA256_for_packages.txt
+++ b/packages/SHA256_for_packages.txt
@@ -1,3 +1,6 @@
+/* 20211113 */
+BasePlus: 4EDB786B9D6F6D6C5741B5CAC1CB169DD10D8196600B2CB385DDE479A54F0FA3
+
/* 20211112 */
GSM: F6EE77A3C042E1E083E970BE255D126B52A75205DC1FB9A4A7337D0A89EEC7EB
diff --git a/packages/baseplus.md b/packages/baseplus.md
index 46f5610..18a2468 100644
--- a/packages/baseplus.md
+++ b/packages/baseplus.md
@@ -43,13 +43,14 @@
* [`%QzipEvalf()` macro](#qzipevalf-macro)
* [`%functionExists()` macro](#functionexists-macro)
* [`%RainCloudPlot()` macro](#raincloudplot-macro)
-
+ * [`%zipLibrary()` macro](#ziplibrary-macro)
+
* [License](#license)
---
-# The BasePlus package [ver. 0.994] ###############################################
+# The BasePlus package [ver. 1.0] ###############################################
The **BasePlus** package implements useful
functions and functionalities I miss in the BASE SAS.
@@ -65,7 +66,8 @@ Kudos to all who inspired me to generate this package:
*Paul Dorfman*,
*Richard DeVenezia*,
*Christian Graffeuille*,
-*Allan Bowe*.
+*Allan Bowe*,
+*Anamaria Calai*.
---
@@ -168,7 +170,7 @@ Kudos to all who inspired me to generate this package:
run;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**Example 7**: Deduplicate values from a space separated list.
+**Example 7**: De-duplicate values from a space separated list.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%let list = 4 5 6 1 2 3 1 2 3 4 5 6;
%put *%dedupListS(&list.)*;
@@ -187,6 +189,13 @@ Kudos to all who inspired me to generate this package:

+**Example 10**: Zip SAS library.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%zipLibrary(sashelp,libOut=work)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
---
@@ -203,43 +212,45 @@ Package contains:
10. macro raincloudplot
11. macro symdelglobal
12. macro zipevalf
-13. format bool
-14. format boolz
-15. format ceil
-16. format floor
-17. format int
-18. functions arrfill
-19. functions arrfillc
-20. functions arrmissfill
-21. functions arrmissfillc
-22. functions arrmisstoleft
-23. functions arrmisstoleftc
-24. functions arrmisstoright
-25. functions arrmisstorightc
-26. functions bracketsc
-27. functions bracketsn
-28. functions catxfc
-29. functions catxfi
-30. functions catxfj
-31. functions catxfn
-32. functions deldataset
-33. functions semicolonc
-34. functions semicolonn
-35. format brackets
-36. format semicolon
-37. proto qsortincbyprocproto
-38. functions frommissingtonumberbs
-39. functions fromnumbertomissing
-40. functions quicksort4notmiss
-41. functions quicksorthash
-42. functions quicksorthashsddv
-43. functions quicksortlight
+13. macro ziplibrary
+14. format bool
+15. format boolz
+16. format ceil
+17. format floor
+18. format int
+19. functions arrfill
+20. functions arrfillc
+21. functions arrmissfill
+22. functions arrmissfillc
+23. functions arrmisstoleft
+24. functions arrmisstoleftc
+25. functions arrmisstoright
+26. functions arrmisstorightc
+27. functions bracketsc
+28. functions bracketsn
+29. functions catxfc
+30. functions catxfi
+31. functions catxfj
+32. functions catxfn
+33. functions deldataset
+34. functions semicolonc
+35. functions semicolonn
+36. format brackets
+37. format semicolon
+38. proto qsortincbyprocproto
+39. functions frommissingtonumberbs
+40. functions fromnumbertomissing
+41. functions quicksort4notmiss
+42. functions quicksorthash
+43. functions quicksorthashsddv
+44. functions quicksortlight
+
*SAS package generated by generatePackage, version 20211111*
The SHA256 hash digest for package BasePlus:
-`B34E352EC52E05B8BBE1816E6104F47677CBFDEAF7CD71B8BF04FDBFA01B0EF0`
+`4EDB786B9D6F6D6C5741B5CAC1CB169DD10D8196600B2CB385DDE479A54F0FA3`
---
# Content description ############################################################################################
@@ -3254,6 +3265,105 @@ The output:

+---
+
+## >>> `%zipLibrary()` macro: <<< #######################
+
+The zipLibrary() macro allows to zip content of a SAS library.
+
+Files can be zipped into a single file (named as the input library)
+or into multiple files (named as "dataset.sas7bdat.zip").
+If a file is indexed also the index file is zipped.
+
+Source files can be deleted after compression.
+
+Status of compression and processing time is reported.
+
+See examples below for the details.
+
+### SYNTAX: ###################################################################
+
+The basic syntax is the following, the `<...>` means optional parameters:
+~~~~~~~~~~~~~~~~~~~~~~~sas
+%zipLibrary(
+ lib
+ <,mode=>
+ <,clean=>
+ <,libOut=>
+)
+~~~~~~~~~~~~~~~~~~~~~~~
+
+**Arguments description**:
+
+1. `lib` - *Required*, a name of the library to be zipped.
+ Must be a valid SAS V7, V8, or V9 library.
+
+
+* `mode = S` - *Optional*, default value is `S`,
+ indicates mode of compression
+ generates single zip file (`SINGLE/S`)
+ or multiple files (`MULTI/M`)
+
+* `clean = 0` - *Optional*, default value is 0,
+ should datasets be deleted after zipping?
+ `1` means *yes*, `0` means *no*.
+
+* `libOut =` - *Optional*, default value is empty,
+ output library for a single zip file.
+
+### EXAMPLES AND USECASES: ####################################################
+
+**EXAMPLE 1.** Generate data:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+
+options dlcreatedir;
+ libname test1 "%sysfunc(pathname(work))/test1";
+ libname test2 "%sysfunc(pathname(work))/test2";
+ libname test3 (test1 test2);
+ libname test4 "%sysfunc(pathname(work))/test4";
+options nodlcreatedir;
+
+%put %sysfunc(pathname(test3));
+%put %sysfunc(pathname(test4));
+
+data
+ test1.A(index=(model))
+ test1.B
+ test2.C
+ test2.D(index=(model make io=(invoice origin)))
+;
+ set sashelp.cars;
+run;
+
+data test1.B2 / view=test1.B2;
+ set test1.B;
+ output;
+ output;
+run;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 2.** Zip content of test3 library
+ into the same location in one zip file:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%zipLibrary(test3)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 3.** Zip content of test3 library
+ into the same location in multiple zip files:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%zipLibrary(test3, mode=MULTI)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 4.** Zip content of test3 library
+ into different location in one zip file
+ and delete source files:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%zipLibrary(test3, clean=1, libOut=test4)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
---
## License ####################################################################
diff --git a/packages/baseplus.zip b/packages/baseplus.zip
index f5e8758..350c6dc 100644
Binary files a/packages/baseplus.zip and b/packages/baseplus.zip differ