From dbe8dbc9385330323c3809a835da4dea8870b3d6 Mon Sep 17 00:00:00 2001 From: Bart Jablonski Date: Wed, 19 Apr 2023 16:38:57 +0200 Subject: [PATCH] The BasePlus package [ver. 1.23.0] The BasePlus package [ver. 1.23.0] Three new utility macros for the BasePlus: - `%intsList()` - prints a space separated list of integers, - `%splitDSIntoBlocks()` - splits dataset into block of given size (and one[the last] possibly smaller) - `%splitDSIntoParts()` - splits dataset into given number of parts (of approximately same size) Macros `splitDSIntoBlocks` and `splitDSIntoParts` supports *BASE* and *SPDE* engines. Documentation updated. --- README.md | 4 +- packages/README.md | 4 +- packages/SHA256_for_packages.txt | 3 + packages/baseplus.md | 313 ++++++++++++++++++++++++++----- packages/baseplus.zip | Bin 255097 -> 260659 bytes 5 files changed, 275 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index a431823..b5e1506 100644 --- a/README.md +++ b/README.md @@ -224,7 +224,7 @@ SHA256 digest for macroArray: F*85E3BE4D163AC5223B6EC9D3C25C46564A656E3830998B45 [MacroArray in SASPAC](https://github.com/SASPAC/macroarray "MacroArray in SASPAC") -- **BasePlus**\[1.20.0\] adds a bunch of functionalities I am missing in BASE SAS, such as: +- **BasePlus**\[1.23.0\] adds a bunch of functionalities I am missing in BASE SAS, such as: ```sas call arrMissToRight(myArray); call arrFillMiss(17, myArray); @@ -248,7 +248,7 @@ format x bool.; %put %repeatTxt(#,15,s=$) HELLO SAS! %repeatTxt(#,15,s=$); ``` -SHA256 digest for BasePlus: F*F39F38CE80A5D8EED3BC9F2413CD6DEF38E8657E5DCF427CBA8938EB8C4350B6 +SHA256 digest for BasePlus: F*625E56B017C4AA8D436959C0A03C8503773A9A3823D43FA9E0326276E52DA6F2 [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 9a328e9..fad63a6 100644 --- a/packages/README.md +++ b/packages/README.md @@ -86,7 +86,7 @@ SHA256 digest for macroArray: F*85E3BE4D163AC5223B6EC9D3C25C46564A656E3830998B45 --- -- **BasePlus**\[1.20.0\] adds a bunch of functionalities I am missing in BASE SAS, such as: +- **BasePlus**\[1.23.0\] adds a bunch of functionalities I am missing in BASE SAS, such as: ```sas call arrMissToRight(myArray); call arrFillMiss(17, myArray); @@ -110,7 +110,7 @@ format x bool.; %put %repeatTxt(#,15,s=$) HELLO SAS! %repeatTxt(#,15,s=$); ``` -SHA256 digest for BasePlus: F*F39F38CE80A5D8EED3BC9F2413CD6DEF38E8657E5DCF427CBA8938EB8C4350B6 +SHA256 digest for BasePlus: F*625E56B017C4AA8D436959C0A03C8503773A9A3823D43FA9E0326276E52DA6F2 [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 3f567b5..ebd3b1f 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,3 +1,6 @@ +/* 20230419 */ +BasePlus: F*625E56B017C4AA8D436959C0A03C8503773A9A3823D43FA9E0326276E52DA6F2 + /* 20230417 */ BasePlus: F*F39F38CE80A5D8EED3BC9F2413CD6DEF38E8657E5DCF427CBA8938EB8C4350B6 diff --git a/packages/baseplus.md b/packages/baseplus.md index 55c4433..c660ca3 100644 --- a/packages/baseplus.md +++ b/packages/baseplus.md @@ -52,6 +52,9 @@ * [`%bpPIPE()` macro](#bppipe-macro) * [`%dirsAndFiles()` macro](#dirsandfiles-macro) * [`%repeatTxt()` macro](#repeattxt-macro) + * [`%intsList()` macro](#intslist-macro) + * [`%splitDSIntoBlocks()` macro](#splitdsintoblocks-macro) + * [`%splitDSIntoParts()` macro](#splitdsintoparts-macro) * [License](#license) @@ -248,50 +251,54 @@ Package contains: 6. macro dirsandfiles 7. macro functionexists 8. macro getvars -9. macro ldsn -10. macro ldsnm -11. macro lvarnm -12. macro lvarnmlab -13. macro qdeduplistx -14. macro qgetvars -15. macro qzipevalf -16. macro raincloudplot -17. macro repeattxt -18. macro symdelglobal -19. macro unziplibrary -20. macro zipevalf -21. macro ziplibrary -22. format bool -23. format boolz -24. format ceil -25. format floor -26. format int -27. functions arrfill -28. functions arrfillc -29. functions arrmissfill -30. functions arrmissfillc -31. functions arrmisstoleft -32. functions arrmisstoleftc -33. functions arrmisstoright -34. functions arrmisstorightc -35. functions bracketsc -36. functions bracketsn -37. functions catxfc -38. functions catxfi -39. functions catxfj -40. functions catxfn -41. functions deldataset -42. functions semicolonc -43. functions semicolonn -44. format brackets -45. format semicolon -46. proto qsortincbyprocproto -47. functions frommissingtonumberbs -48. functions fromnumbertomissing -49. functions quicksort4notmiss -50. functions quicksorthash -51. functions quicksorthashsddv -52. functions quicksortlight +9. macro intslist +10. macro ldsn +11. macro ldsnm +12. macro lvarnm +13. macro lvarnmlab +14. macro qdeduplistx +15. macro qgetvars +16. macro qzipevalf +17. macro raincloudplot +18. macro repeattxt +19. macro splitdsintoblocks +20. macro splitdsintoparts +21. macro symdelglobal +22. macro unziplibrary +23. macro zipevalf +24. macro ziplibrary +25. format bool +26. format boolz +27. format ceil +28. format floor +29. format int +30. functions arrfill +31. functions arrfillc +32. functions arrmissfill +33. functions arrmissfillc +34. functions arrmisstoleft +35. functions arrmisstoleftc +36. functions arrmisstoright +37. functions arrmisstorightc +38. functions bracketsc +39. functions bracketsn +40. functions catxfc +41. functions catxfi +42. functions catxfj +43. functions catxfn +44. functions deldataset +45. functions semicolonc +46. functions semicolonn +47. format brackets +48. format semicolon +49. proto qsortincbyprocproto +50. functions frommissingtonumberbs +51. functions fromnumbertomissing +52. functions quicksort4notmiss +53. functions quicksorthash +54. functions quicksorthashsddv +55. functions quicksortlight + Package contains additional content, run: %loadPackageAddCnt(BasePlus) to load it @@ -301,7 +308,7 @@ localization (only if additional content was deployed during the installation pr * SAS package generated by generatePackage, version 20230411 * The SHA256 hash digest for package BasePlus: -`F*F39F38CE80A5D8EED3BC9F2413CD6DEF38E8657E5DCF427CBA8938EB8C4350B6` +`F*625E56B017C4AA8D436959C0A03C8503773A9A3823D43FA9E0326276E52DA6F2` --- # Content description ############################################################################################ @@ -4224,6 +4231,222 @@ run; --- +## >>> `%intsList()` macro: <<< ####################### + +The intsList() macro function allows to print a list of +integers starting from `start` up to `end` incremented by `by` +and separated by `sep=`. + +If `start`, `end` or `by` are non-integers the are converted to integers. + +See examples below for the details. + +The `%intsList()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%intsList( + start + <,end> + <,by> + <,sep=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `start` - *Required*, the first value of the list. + If `end` is missing then the list is generated + from 1 to `start` by 1. + +2. `end` - *Required/Optional*, the last value of the list. + +3. `by` - *Required/Optional*, the increment of the list. + If missing then set to `1`. + *Cannot* be equal to `0`. + +* `s = %str( )` - *Optional*, it is a separator between + elements of the list. Default value is space. + +--- + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Simple list of integers from 1 to 10 by 1: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %intsList(10); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** Ten copies of `sashelp.class` in `test11` to `test20`: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + data + %zipEvalf(test, %intsList(11,20)) + ; + set sashelp.class; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Non-integers are converted to integers, the list is `1 3 5`: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %intsList(1.1,5.2,2.3); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** A list with a separator: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %intsList(1,5,2,sep=+); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + +## >>> `%splitDSIntoBlocks()` macro: <<< ####################### + +The splitDSIntoBlocks() macro allows to split the `set` dataset into blocks +of size `blockSize` in datasets: `prefix1` to `prefixN`. + +The last dataset may have less observations then the `blockSize`. + +Macro covers `BASE` engine (`v9`, `v8`, `v7`, `v6`) and `SPDE` engine datasets. + +See examples below for the details. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%splitDSIntoBlocks( + blockSize + <,set> + <,prefix> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `blockSize` - *Required*, the size of the block of data, + in other words number of observations in + one block of split data. + Block size must be positive integer. + +2. `set` - *Required/Optional*, the name of the dataset to split. + If empty then `&syslast.` is used. + +3. `prefix` - *Required/Optional*, the name-prefix for new datasets. + If missing then set to `part`. + +--- + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Split `sashelp.class` into 5 elements datasets ABC1 to ABC4: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %splitDSIntoBlocks(5,sashelp.class,ABC) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** By default splits the `_last_` dataset into `part1` to `partN` datasets: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + data lastData; + set sashelp.cars; + run; + + %splitDSIntoBlocks(123) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Works with `SPDE` engine too: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + options dlcreatedir; + libname test "%sysfunc(pathname(work))/testSPDE"; + libname test; + libname test SPDE "%sysfunc(pathname(work))/testSPDE"; + + data test.test; + set sashelp.cars; + run; + + %splitDSIntoBlocks(100,test.test,work.spde) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + +## >>> `%splitDSIntoParts()` macro: <<< ####################### + +The splitDSIntoParts() macro allows to split the `set` dataset into `parts` parts +of approximately `NOBS/parts` size in datasets: `prefix1` to `prefixN`. + +The splitDSIntoParts() macro internally runs the splitDSIntoBlocks() macro. + +Macro covers `BASE` engine (`v9`, `v8`, `v7`, `v6`) and `SPDE` engine datasets. + +See examples below for the details. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%splitDSIntoParts( + parts + <,set> + <,prefix> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `parts` - *Required*, the number of parts to split data into. + Number of parts must be positive integer. + +2. `set` - *Required/Optional*, the name of the dataset to split. + If empty then `&syslast.` is used. + +3. `prefix` - *Required/Optional*, the name-prefix for new datasets. + If missing then set to `part`. + +--- + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Split `sashelp.cars` into 7 parts: datasets carsInParts1 to carsInParts7: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %splitDSIntoParts(7,sashelp.cars, carsInParts) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** By default splits the `_last_` dataset into `part1` to `part3` datasets: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + data lastData; + set sashelp.cars; + run; + + %splitDSIntoBlocks(3) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Works with `SPDE` engine too: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + options dlcreatedir; + libname test "%sysfunc(pathname(work))/testSPDE"; + libname test; + libname test SPDE "%sysfunc(pathname(work))/testSPDE"; + + data test.test; + set sashelp.cars; + run; + + %splitDSIntoParts(3,test.test,work.spde) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + +--- + +--- + ## License #################################################################### Copyright (c) since 2020 Bartosz Jablonski diff --git a/packages/baseplus.zip b/packages/baseplus.zip index 4eec6fa2f2f0237eb5372a270ae243d08a4c26ac..7e4a67ad69501994951ad2541d725790f015a237 100644 GIT binary patch delta 20519 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 delta 15004 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 jp+6{js2_E(#C@;9vm&%9GH23Gn{_Y(Vyi