Compare commits

...

3 Commits

Author SHA1 Message Date
Bart Jablonski (yabwon)
9bccc4329a Package BasePlus, version 1.11
Package BasePlus, version 1.11:

-Macro `%unzipLibrary()` updated.
2021-11-19 17:07:47 +01:00
yabwon
b76b1ed9eb Package BasePlus, version 1.1
Package BasePlus, version 1.1:

-New macro `%unzipLibrary()` added.
-Macro `%zipLibrary()` updated.
-The doc. updated.
2021-11-14 16:12:04 +01:00
yabwon
942879a5b8 Package BasePlus, version 1.0
Package BasePlus, version 1.0:

-New macro `%zipLibrary()` added.
-The doc. updated.
2021-11-13 22:51:01 +01:00
5 changed files with 311 additions and 53 deletions

View File

@@ -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") [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.11\] adds a bunch of functionalities I am missing in BASE SAS, such as:
```sas ```sas
call arrMissToRight(myArray); call arrMissToRight(myArray);
call arrFillMiss(17, myArray); call arrFillMiss(17, myArray);
@@ -159,8 +159,12 @@ string = catXFn("date9.", "#", myArray);
format x bool.; format x bool.;
%put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_); %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: 55AC07F7322F504EF22C5D00D46587744CD373E70A83932F837EA8C6ECB6D987
[Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus") [Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus")

View File

@@ -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.11\] adds a bunch of functionalities I am missing in BASE SAS, such as:
```sas ```sas
call arrMissToRight(myArray); call arrMissToRight(myArray);
call arrFillMiss(17, myArray); call arrFillMiss(17, myArray);
@@ -103,8 +103,12 @@ string = catXFn("date9.", "#", myArray);
format x bool.; format x bool.;
%put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_); %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: 55AC07F7322F504EF22C5D00D46587744CD373E70A83932F837EA8C6ECB6D987
[Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus") [Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus")

View File

@@ -1,3 +1,12 @@
/* 20211119 */
BasePlus: 55AC07F7322F504EF22C5D00D46587744CD373E70A83932F837EA8C6ECB6D987
/* 20211114 */
BasePlus: 319109732B5CBD99ADDA6D48EA26DA5236622F9C5D332F94EF282F1C9DCE73F9
/* 20211113 */
BasePlus: 4EDB786B9D6F6D6C5741B5CAC1CB169DD10D8196600B2CB385DDE479A54F0FA3
/* 20211112 */ /* 20211112 */
GSM: F6EE77A3C042E1E083E970BE255D126B52A75205DC1FB9A4A7337D0A89EEC7EB GSM: F6EE77A3C042E1E083E970BE255D126B52A75205DC1FB9A4A7337D0A89EEC7EB

View File

@@ -43,13 +43,14 @@
* [`%QzipEvalf()` macro](#qzipevalf-macro) * [`%QzipEvalf()` macro](#qzipevalf-macro)
* [`%functionExists()` macro](#functionexists-macro) * [`%functionExists()` macro](#functionexists-macro)
* [`%RainCloudPlot()` macro](#raincloudplot-macro) * [`%RainCloudPlot()` macro](#raincloudplot-macro)
* [`%zipLibrary()` macro](#ziplibrary-macro)
* [`%unzipLibrary()` macro](#unziplibrary-macro)
* [License](#license) * [License](#license)
--- ---
# The BasePlus package [ver. 0.994] <a name="baseplus-package"></a> ############################################### # The BasePlus package [ver. 1.11] <a name="baseplus-package"></a> ###############################################
The **BasePlus** package implements useful The **BasePlus** package implements useful
functions and functionalities I miss in the BASE SAS. 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*, *Paul Dorfman*,
*Richard DeVenezia*, *Richard DeVenezia*,
*Christian Graffeuille*, *Christian Graffeuille*,
*Allan Bowe*. *Allan Bowe*,
*Anamaria Calai*.
--- ---
@@ -168,7 +170,7 @@ Kudos to all who inspired me to generate this package:
run; run;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Example 7**: Deduplicate values from a space separated list. **Example 7**: De-duplicate values from a space separated list.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%let list = 4 5 6 1 2 3 1 2 3 4 5 6; %let list = 4 5 6 1 2 3 1 2 3 4 5 6;
%put *%dedupListS(&list.)*; %put *%dedupListS(&list.)*;
@@ -187,59 +189,71 @@ Kudos to all who inspired me to generate this package:
![Rain Cloud Plot](./baseplus_RainCloudPlot_Ex0_9.png) ![Rain Cloud Plot](./baseplus_RainCloudPlot_Ex0_9.png)
**Example 10**: Zip SAS library.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%zipLibrary(sashelp, libOut=work)
%unzipLibrary(%sysfunc(pathname(work)), zip=sashelp, mode=S, clean=1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- ---
Package contains: Package contains:
1. macro deduplistc 1. macro deduplistc
2. macro deduplistp 2. macro deduplistp
3. macro deduplists 3. macro deduplists
4. macro deduplistx 4. macro deduplistx
5. macro functionexists 5. macro functionexists
6. macro getvars 6. macro getvars
7. macro qdeduplistx 7. macro qdeduplistx
8. macro qgetvars 8. macro qgetvars
9. macro qzipevalf 9. macro qzipevalf
10. macro raincloudplot 10. macro raincloudplot
11. macro symdelglobal 11. macro symdelglobal
12. macro zipevalf 12. macro unziplibrary
13. format bool 13. macro zipevalf
14. format boolz 14. macro ziplibrary
15. format ceil 15. format bool
16. format floor 16. format boolz
17. format int 17. format ceil
18. functions arrfill 18. format floor
19. functions arrfillc 19. format int
20. functions arrmissfill 20. function arrfill
21. functions arrmissfillc 21. function arrfillc
22. functions arrmisstoleft 22. function arrmissfill
23. functions arrmisstoleftc 23. function arrmissfillc
24. functions arrmisstoright 24. function arrmisstoleft
25. functions arrmisstorightc 25. function arrmisstoleftc
26. functions bracketsc 26. function arrmisstoright
27. functions bracketsn 27. function arrmisstorightc
28. functions catxfc 28. function bracketsc
29. functions catxfi 29. function bracketsn
30. functions catxfj 30. function catxfc
31. functions catxfn 31. function catxfi
32. functions deldataset 32. function catxfj
33. functions semicolonc 33. function catxfn
34. functions semicolonn 34. function deldataset
35. format brackets 35. function semicolonc
36. format semicolon 36. function semicolonn
37. proto qsortincbyprocproto 37. format brackets
38. functions frommissingtonumberbs 38. format semicolon
39. functions fromnumbertomissing 39. proto qsortincbyprocproto
40. functions quicksort4notmiss 40. function frommissingtonumberbs
41. functions quicksorthash 41. function fromnumbertomissing
42. functions quicksorthashsddv 42. function quicksort4notmiss
43. functions quicksortlight 43. function quicksorthash
44. function quicksorthashsddv
45. function quicksortlight
*SAS package generated by generatePackage, version 20211111* *SAS package generated by generatePackage, version 20211111*
The SHA256 hash digest for package BasePlus: The SHA256 hash digest for package BasePlus:
`B34E352EC52E05B8BBE1816E6104F47677CBFDEAF7CD71B8BF04FDBFA01B0EF0` `55AC07F7322F504EF22C5D00D46587744CD373E70A83932F837EA8C6ECB6D987`
--- ---
# Content description ############################################################################################ # Content description ############################################################################################
@@ -3254,6 +3268,233 @@ The output:
![Example 2b](./baseplus_RainCloudPlot_Ex2b.png) ![Example 2b](./baseplus_RainCloudPlot_Ex2b.png)
---
## >>> `%zipLibrary()` macro: <<< <a name="ziplibrary-macro"></a> #######################
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=>
<,compression=>
)
~~~~~~~~~~~~~~~~~~~~~~~
**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.
* `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:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~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
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: <<< <a name="unziplibrary-macro"></a> #######################
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)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- ---
## License #################################################################### ## License ####################################################################

Binary file not shown.