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: ![Rain Cloud Plot](./baseplus_RainCloudPlot_Ex0_9.png) +**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: ![Example 2b](./baseplus_RainCloudPlot_Ex2b.png) +--- + +## >>> `%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