From 942879a5b8c84c8ca7578db535571fa1d5471379 Mon Sep 17 00:00:00 2001 From: yabwon Date: Sat, 13 Nov 2021 22:51:01 +0100 Subject: [PATCH] Package BasePlus, version 1.0 Package BasePlus, version 1.0: -New macro `%zipLibrary()` added. -The doc. updated. --- README.md | 8 +- packages/README.md | 8 +- packages/SHA256_for_packages.txt | 3 + packages/baseplus.md | 182 +++++++++++++++++++++++++------ packages/baseplus.zip | Bin 70737 -> 73546 bytes 5 files changed, 161 insertions(+), 40 deletions(-) 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 f5e8758be6fc67ba27f0aeaa5c168b9284e11bd8..350c6dc6ce767f87e73bb8795087eb1da6426c98 100644 GIT binary patch delta 14676 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 AVE_OC