From b76b1ed9ebea6a3d95bb9ae970b24816c4665897 Mon Sep 17 00:00:00 2001 From: yabwon Date: Sun, 14 Nov 2021 16:12:04 +0100 Subject: [PATCH] Package BasePlus, version 1.1 Package BasePlus, version 1.1: -New macro `%unzipLibrary()` added. -Macro `%zipLibrary()` updated. -The doc. updated. --- README.md | 4 +- packages/README.md | 4 +- packages/SHA256_for_packages.txt | 3 + packages/baseplus.md | 208 +++++++++++++++++++++++++------ packages/baseplus.zip | Bin 73546 -> 76697 bytes 5 files changed, 176 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index de0ff7a..d303532 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**\[1.0\] adds a bunch of functionalities I am missing in BASE SAS, such as: +- **BasePlus**\[1.1\] adds a bunch of functionalities I am missing in BASE SAS, such as: ```sas call arrMissToRight(myArray); call arrFillMiss(17, myArray); @@ -164,7 +164,7 @@ format x bool.; %zipLibrary(sashelp,libOut=work) ``` -SHA256 digest for BasePlus: 4EDB786B9D6F6D6C5741B5CAC1CB169DD10D8196600B2CB385DDE479A54F0FA3 +SHA256 digest for BasePlus: 319109732B5CBD99ADDA6D48EA26DA5236622F9C5D332F94EF282F1C9DCE73F9 [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 da57acd..d55f96b 100644 --- a/packages/README.md +++ b/packages/README.md @@ -90,7 +90,7 @@ SHA256 digest for macroArray: 70032D27081A0EE15BC82B8F14D2A61700FA7C1F0D88B4DB51 --- -- **BasePlus**\[1.0\] adds a bunch of functionalities I am missing in BASE SAS, such as: +- **BasePlus**\[1.1\] adds a bunch of functionalities I am missing in BASE SAS, such as: ```sas call arrMissToRight(myArray); call arrFillMiss(17, myArray); @@ -108,7 +108,7 @@ format x bool.; %zipLibrary(sashelp,libOut=work) ``` -SHA256 digest for BasePlus: 4EDB786B9D6F6D6C5741B5CAC1CB169DD10D8196600B2CB385DDE479A54F0FA3 +SHA256 digest for BasePlus: 319109732B5CBD99ADDA6D48EA26DA5236622F9C5D332F94EF282F1C9DCE73F9 [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 18bebfb..0921aa9 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,3 +1,6 @@ +/* 20211114 */ +BasePlus: 319109732B5CBD99ADDA6D48EA26DA5236622F9C5D332F94EF282F1C9DCE73F9 + /* 20211113 */ BasePlus: 4EDB786B9D6F6D6C5741B5CAC1CB169DD10D8196600B2CB385DDE479A54F0FA3 diff --git a/packages/baseplus.md b/packages/baseplus.md index 18a2468..24804d6 100644 --- a/packages/baseplus.md +++ b/packages/baseplus.md @@ -44,13 +44,13 @@ * [`%functionExists()` macro](#functionexists-macro) * [`%RainCloudPlot()` macro](#raincloudplot-macro) * [`%zipLibrary()` macro](#ziplibrary-macro) + * [`%unzipLibrary()` macro](#unziplibrary-macro) - * [License](#license) --- -# The BasePlus package [ver. 1.0] ############################################### +# The BasePlus package [ver. 1.1] ############################################### The **BasePlus** package implements useful functions and functionalities I miss in the BASE SAS. @@ -191,7 +191,9 @@ Kudos to all who inspired me to generate this package: **Example 10**: Zip SAS library. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%zipLibrary(sashelp,libOut=work) +%zipLibrary(sashelp, libOut=work) + +%unzipLibrary(%sysfunc(pathname(work)), zip=sashelp, mode=S, clean=1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -211,46 +213,46 @@ Package contains: 9. macro qzipevalf 10. macro raincloudplot 11. macro symdelglobal -12. macro zipevalf -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 +12. macro unziplibrary +13. macro zipevalf +14. macro ziplibrary +15. format bool +16. format boolz +17. format ceil +18. format floor +19. format int +20. functions arrfill +21. functions arrfillc +22. functions arrmissfill +23. functions arrmissfillc +24. functions arrmisstoleft +25. functions arrmisstoleftc +26. functions arrmisstoright +27. functions arrmisstorightc +28. functions bracketsc +29. functions bracketsn +30. functions catxfc +31. functions catxfi +32. functions catxfj +33. functions catxfn +34. functions deldataset +35. functions semicolonc +36. functions semicolonn +37. format brackets +38. format semicolon +39. proto qsortincbyprocproto +40. functions frommissingtonumberbs +41. functions fromnumbertomissing +42. functions quicksort4notmiss +43. functions quicksorthash + *SAS package generated by generatePackage, version 20211111* The SHA256 hash digest for package BasePlus: -`4EDB786B9D6F6D6C5741B5CAC1CB169DD10D8196600B2CB385DDE479A54F0FA3` +`319109732B5CBD99ADDA6D48EA26DA5236622F9C5D332F94EF282F1C9DCE73F9` --- # Content description ############################################################################################ @@ -3290,6 +3292,7 @@ The basic syntax is the following, the `<...>` means optional parameters: <,mode=> <,clean=> <,libOut=> + <,compression=> ) ~~~~~~~~~~~~~~~~~~~~~~~ @@ -3304,13 +3307,18 @@ The basic syntax is the following, the `<...>` means optional parameters: generates single zip file (`SINGLE/S`) or multiple files (`MULTI/M`) -* `clean = 0` - *Optional*, default value is 0, +* `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. +* `compression =` - *Optional*, default value is `6`, + specifies the compression level + `0` to `9`, where `0` is no compression + and `9` is maximum compression. + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Generate data: @@ -3357,11 +3365,133 @@ run; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -**EXAMPLE 4.** Zip content of test3 library +**EXAMPLE 4.** Zip content of test3 library + with maximum compression level into different location in one zip file and delete source files: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%zipLibrary(test3, clean=1, libOut=test4, compression=9) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + +## >>> `%unzipLibrary()` macro: <<< ####################### + +The unzipLibrary() macro allows to unzip content of a SAS library. +It is a *counterpart* to the `%zipLibrary()` macro and is *not* intended to work +with zip files generated by other software (though it may in some cases). + +Files can be unzipped from a single file +or from multiple files (named e.g. "dataset.sas7bdat.zip"). +If a file is indexed also the index file is unzipped. + +Source files can be deleted after decompression. + +Status of decompression and processing time is reported. + +See examples below for the details. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%unzipLibrary( + path + <,zip=> + <,mode=> + <,clean=> + <,libOut=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `path` - *Required*, a path pointing to zipped file(s) location. + +* `zip =` - *Optional*, When `mode=S` a name of the + zip file containing SAS files to be unzipped. + +* `mode = S` - *Optional*, default value is `S`, + indicates mode of decompression + read from a single zip file (`SINGLE/S`) + or from multiple files (`MULTI/M`) + +* `clean = 0` - *Optional*, default value is `0`, + should zip files be deleted after unzipping? + `1` means *yes*, `0` means *no*. + +* `libOut =` - *Optional*, default value is empty, + output library for a single zip file + decompression. + +### 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.** Use data from Example 1. + First zip content of the `test3` library + to `test4` location into one zip file + and delete source files. + Next unzip `test3.zip` library into the + `test4` location and delete the zip file. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %zipLibrary(test3, clean=1, libOut=test4) + + +%unzipLibrary(%sysfunc(pathname(test4)), zip=test3, clean=1) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Use data from Example 1. + First zip content of the `test1` library + into multiple zip files and delete source files. + Next unzip `*.zip` files in `test1` + location and delete zipped files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%zipLibrary(test1, mode=M, clean=1) + + +%unzipLibrary(%sysfunc(pathname(test1)), mode=M, clean=1) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** First zip content of the `sashelp` library + into `work` library. + Next unzip `sashelp.zip` file in `work` + location and delete zip file. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%zipLibrary(sashelp, mode=S, clean=0, libOut=work) + + +%unzipLibrary(%sysfunc(pathname(work)), zip=sashelp, mode=S, clean=1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- diff --git a/packages/baseplus.zip b/packages/baseplus.zip index 350c6dc6ce767f87e73bb8795087eb1da6426c98..264627322ea71dce706caf1cbe02c9eab7d35ec9 100644 GIT binary patch delta 17761 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 delta 14456 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