diff --git a/README.md b/README.md index 1a836c3..3ef178a 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ SHA256 digest for DFA: C32A81304A411C1EB6BA7B76EDB8D70550F3935F35A1506E2B8019A20 [Documentation for DFA](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/dfa.md "Documentation for DFA") -- **macroArray**\[0.8\], implementation of an array concept in a macrolanguage, e.g. +- **macroArray**\[0.9\], implementation of an array concept in a macrolanguage, e.g. ```sas %array(ABC[17] (111:127), macarray=Y); @@ -141,7 +141,7 @@ SHA256 digest for DFA: C32A81304A411C1EB6BA7B76EDB8D70550F3935F35A1506E2B8019A20 which = 1:H:2 ); ``` -SHA256 digest for macroArray: 9FE227EF3144431B51063D599148BDD8873509D1B32F1AC2979EC566E1BB1487 +SHA256 digest for macroArray: 95164E71AF0B86AC816F13821F6468F611C6E5BB9036AC10459CDEB10487B08E [Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray") diff --git a/packages/README.md b/packages/README.md index 31b8aa2..923afb3 100644 --- a/packages/README.md +++ b/packages/README.md @@ -65,7 +65,7 @@ SHA256 digest for DFA: C32A81304A411C1EB6BA7B76EDB8D70550F3935F35A1506E2B8019A20 --- -- **macroArray**\[0.8\], implementation of an array concept in a macro language, e.g. +- **macroArray**\[0.9\], implementation of an array concept in a macro language, e.g. ```sas %array(ABC[17] (111:127), macarray=Y); @@ -84,7 +84,7 @@ SHA256 digest for DFA: C32A81304A411C1EB6BA7B76EDB8D70550F3935F35A1506E2B8019A20 which = 1:H:2 ); ``` -SHA256 digest for macroArray: 70032D27081A0EE15BC82B8F14D2A61700FA7C1F0D88B4DB516AB433CD06C4D3 +SHA256 digest for macroArray: 95164E71AF0B86AC816F13821F6468F611C6E5BB9036AC10459CDEB10487B08E [Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray") diff --git a/packages/SHA256_for_packages.txt b/packages/SHA256_for_packages.txt index 4085966..242ebbe 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,3 +1,6 @@ +/* 20211228 */ +macroArray: 95164E71AF0B86AC816F13821F6468F611C6E5BB9036AC10459CDEB10487B08E + /* 20211123 */ BasePlus: 105F0CEB95C49102BDB085DF67C785301F623CB337D466F07B5E051626E4AE61 diff --git a/packages/macroarray.md b/packages/macroarray.md index bcb15c4..f35e5da 100644 --- a/packages/macroarray.md +++ b/packages/macroarray.md @@ -12,11 +12,13 @@ * [`%mcHashTable()` macro](#mchashtable-macro) * [`%QzipArrays()` macro](#qziparrays-macro) * [`%zipArrays()` macro](#ziparrays-macro) + * [`%sortMacroArray()` macro](#sortmacroarray-macro) + * [License](#license) --- -# The macroArray package [ver. 0.8] ############################################### +# The macroArray package [ver. 0.9] ############################################### The **macroArray** package implements a macro array facility: - `%array()`, @@ -27,6 +29,7 @@ The **macroArray** package implements a macro array facility: - `%appendcell()`, - `%mcHashTable()`, - `%zipArrays()`, +- `%sortMacroArray()`, - etc. The set of macros, which emulates classic @@ -62,14 +65,17 @@ Package contains: 8. macro do_over3 9. macro make_do_over 10. macro mchashtable + 11. macro sortmacroarray + 12. macro qziparrays + 13. macro ziparrays Required SAS Components: *Base SAS Software* -*SAS package generated by generatePackage, version 20211111.* +*SAS package generated by generatePackage, version 20211216.* The SHA256 hash digest for package macroArray: -`70032D27081A0EE15BC82B8F14D2A61700FA7C1F0D88B4DB516AB433CD06C4D3` +`95164E71AF0B86AC816F13821F6468F611C6E5BB9036AC10459CDEB10487B08E` --- # Content description ############################################################################################ @@ -1833,6 +1839,92 @@ The basic syntax is the following, the `<...>` means optional parameters: --- +## >>> `%sortMacroArray()` macro: <<< ####################### + +The sortMacroArray() macro +allow to sort elements of a macro array. + +The **limitation** is that sorted values are limited to 32767 bytes of length. + +See examples below for the details. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%sortMacroArray( + array + <,valLength=> + <,outSet=> + <,sortseq=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `array` - *Required*, name of an array generated by the `%array()` macro. + +* `valLength = 32767` - *Optional*, default value is `32767`, + maximum length of a variable storing macrovariable data. + (the reason of 32767 limitation) + +* `outSet = _NULL_` - *Optional*, default value is `_NULL_`, + an optional output dataset name. + +* `sortseq =` - *Optional*, default value is `LINGUISTIC(NUMERIC_COLLATION = ON)`, + sorting options for use in an internal `Proc SORT`. + +### EXAMPLES AND USECASES: #################################################### + + +**EXAMPLE 1.** Basic use-case. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + +options mprint; +ods html; +ods listing close; + + +%array(hij [4:9] $ 512 ("C33" "B22" "A11" "A01" "A02" "X42"), macarray=Y) + +%put NOTE: %do_over(hij); + +%sortMacroArray(hij, valLength=3, outSet = A_NULL_(compress=char)) + +%put NOTE: %do_over(hij); + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** Basic use-case. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + +options mprint; +ods html; +ods listing close; + + +%array(ds = sashelp.class, vars = name|NNN height|h, macarray=Y) +%array(ds = sashelp.cars, vars = model|, macarray=Y) + +%put NOTE: %do_over(NNN); +%put NOTE: %do_over(H); +%put NOTE: %do_over(model); + +%sortMacroArray(NNN, valLength=30, outSet = A_NULL_(compress=char)) +%sortMacroArray(H, valLength=32) +%sortMacroArray(model, valLength=120) + +%put NOTE: %do_over(NNN); +%put NOTE: %do_over(H); +%put NOTE: %do_over(model); + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + ## License #################################################################### Copyright (c) Bartosz Jablonski, since January 2019 diff --git a/packages/macroarray.zip b/packages/macroarray.zip index 16023e0..71f81d0 100644 Binary files a/packages/macroarray.zip and b/packages/macroarray.zip differ