From 5c640cba21c782c06c09e8614998a460ce097b24 Mon Sep 17 00:00:00 2001 From: yabwon Date: Tue, 15 Sep 2020 11:28:54 +0200 Subject: [PATCH] macroArray, version 0.5 macroArray, version 0.5 - documentation updated - the do_overs automatically unquote `betwee=` parameter --- README.md | 4 +- packages/README.md | 5 +- packages/SHA256_for_packages.txt | 3 + packages/macroarray.md | 173 ++++++++++++++++++------------- packages/macroarray.zip | Bin 28425 -> 28600 bytes 5 files changed, 110 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index 6400cf1..b4f90a9 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,9 @@ SHA256 digest for DFA: BB8768E977D62429368CFF2E5338A6553C35C998AEC09AF24088BA713 which = 1:H:2 ); ``` -SHA256 digest for macroArray: 69F6CF496F921D0E21F3524FC7FD130B4B8290C1E0B9BB3ABEA212B734EBE8A1 +SHA256 digest for macroArray: ACE3E9374256826AB1E25C2BBDA6CA4CCFB50137B8ACE6E1F11BCDBE7AE24B09 + +[Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/master/packages/macroarray.md "Documentation for macroArray") - **BasePlus**\[0.62\] adds a bunch of functionalities I am missing in BASE SAS, such as: diff --git a/packages/README.md b/packages/README.md index e6818ba..6a81362 100644 --- a/packages/README.md +++ b/packages/README.md @@ -49,7 +49,7 @@ run; SHA256 digest for DFA: BB8768E977D62429368CFF2E5338A6553C35C998AEC09AF24088BA713BB54DDA -- **macroArray**\[0.5\], implementation of an array concept in a macrolanguage, e.g. +- **macroArray**\[0.5\], implementation of an array concept in a macro language, e.g. ``` %array(ABC[17] (111:127), macarray=Y); @@ -68,8 +68,9 @@ SHA256 digest for DFA: BB8768E977D62429368CFF2E5338A6553C35C998AEC09AF24088BA713 which = 1:H:2 ); ``` -SHA256 digest for macroArray: 69F6CF496F921D0E21F3524FC7FD130B4B8290C1E0B9BB3ABEA212B734EBE8A1 +SHA256 digest for macroArray: ACE3E9374256826AB1E25C2BBDA6CA4CCFB50137B8ACE6E1F11BCDBE7AE24B09 +[Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/master/packages/macroarray.md "Documentation for macroArray") - **BasePlus**\[0.62\] adds a bunch of functionalities I am missing in BASE SAS, such as: ``` diff --git a/packages/SHA256_for_packages.txt b/packages/SHA256_for_packages.txt index cf1646e..e72b413 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,3 +1,6 @@ +/* 20200914 */ +macroArray: ACE3E9374256826AB1E25C2BBDA6CA4CCFB50137B8ACE6E1F11BCDBE7AE24B09 + /* 20200914 */ SQLinDS: DD5E319EB5AA29C7054EC428072F987E77C29D36874DED1AE5C62E4B300845EB macroArray: 69F6CF496F921D0E21F3524FC7FD130B4B8290C1E0B9BB3ABEA212B734EBE8A1 diff --git a/packages/macroarray.md b/packages/macroarray.md index 282db9a..4256f40 100644 --- a/packages/macroarray.md +++ b/packages/macroarray.md @@ -1,4 +1,19 @@ -# The macroArray package [ver. 0.5] ############################################### +- [The macroArray package [ver. 0.5]](#macroarray) +- [Content description](#content-description) + * [`%appendArray()` macro](#appendarray-macro) + * [`%appendCell()` macro](#appendcell-macro) + * [`%array()` macro](#array-macro) + * [`%concatArrays()` macro](#concatarrays-macro) + * [`%deleteMacArray()` macro](#deletemacarray-macro) + * [`%do_over()` macro](#do-over-macro) + * [`%do_over2()` macro](#do-over2-macro) + * [`%do_over3()` macro](#do-over3-macro) + * [`%make_do_over()` macro](#make-do-over-macro) + * [License](#license) + +--- + +# The macroArray package [ver. 0.5] ############################################### The **macroArray** package implements a macro array facility: - `%array()`, @@ -17,7 +32,7 @@ programming level, is provided. If you are working with BIG macroarrays do not forget to verify your session setting for macro memory limits. Run: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas proc options group = macro; run; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -29,29 +44,31 @@ to verify the following options: |`MSYMTABMAX=` | specifies the maximum amount of memory available to the macro variable symbol table or tables. | |`MVARSIZE=` | specifies the maximum size for a macro variable that is stored in memory. | +--- Package contains: -1. macro appendarray, -2. macro appendcell, -3. macro array, -4. macro concatarrays, -5. macro deletemacarray, -6. macro do_over, -7. macro do_over2, -8. macro do_over3, -9. macro make_do_over, +1. macro appendarray +2. macro appendcell +3. macro array +4. macro concatarrays +5. macro deletemacarray +6. macro do_over +7. macro do_over2 +8. macro do_over3 +9. macro make_do_over Required SAS Components: *Base SAS Software* *SAS package generated by generatePackage, version 20200911* -The SHA256 hash digest for package macroArray -`69F6CF496F921D0E21F3524FC7FD130B4B8290C1E0B9BB3ABEA212B734EBE8A1` +The SHA256 hash digest for package macroArray: +`ACE3E9374256826AB1E25C2BBDA6CA4CCFB50137B8ACE6E1F11BCDBE7AE24B09` -### Content description ####################################################### -## >>> `%appendArray()` macro: <<< ############################################## +# Content description ############################################################################################ + +## >>> `%appendArray()` macro: <<< ############################################## The `%appendArray()` macro is a macrowrapper which allows to concatenate two macroarrays @@ -66,7 +83,7 @@ The `%appendArray()` macro executes like a pure macro code. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~sas %appendArray( first ,second @@ -80,11 +97,12 @@ The basic syntax is the following, the `<...>` means optional parameters: 2. second - *Required*, a name of a macroarray created by the `%array()` macro. + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Append macroarrays LL and MM. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(ll[2:4] $ 12, function = quote(put(today() + 10*_I_, yymmdd10.)), macarray=Y @@ -104,15 +122,16 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 2.** Error handling. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %appendArray(ll, ) %appendArray(, mm) %appendArray(noExistA, noExistB) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--- - -## >>> `%appendCell()` macro: <<< ############################################### + +## >>> `%appendCell()` macro: <<< ############################################### The `%appendCell()` macro allows to append a macrovariable to a macroarray created by the `%array()` macro. @@ -124,7 +143,7 @@ The `%appendCell()` macro executes like a pure macro code. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~sas %appendCell( first ,second @@ -147,7 +166,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 1.** Create two macro wrappers. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %* Macro wrapper to append a macrovariable to the end of a macroarray; %macro appendHC(array,cell); %appendCell(&array.,&cell.,H) @@ -180,7 +199,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 2.** Error handling -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %appendCell(X,Y,blahblah) %appendCell(X,,H) @@ -188,7 +207,7 @@ The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **EXAMPLE 3.** Adding variable below lower bound. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(zero[0:2] $ ("AAA", "BBB", "CCC"), macarray=Y) %let belowzero=zzz; @@ -196,9 +215,10 @@ The basic syntax is the following, the `<...>` means optional parameters: %appendCell(zero,belowzero,L) %put AFTER *%do_over(zero)**&=zeroLBOUND*&=zeroHBOUND*&=zeroN*; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--- -## >>> `%array()` macro: <<< #################################################### +## >>> `%array()` macro: <<< #################################################### The code of a macro was inspired by *Ted Clay's* and *David Katz's* macro `%array()`. @@ -229,7 +249,7 @@ The `%array()` macro executes like a pure macro code. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~sas %array( array <,function=> @@ -302,7 +322,7 @@ The basic syntax is the following, the `<...>` means optional parameters: 4) macroarray "AGE" with UNIQUE(|) values of variable "age", - + ### EXAMPLES AND USECASES: #################################################### @@ -311,7 +331,7 @@ The basic syntax is the following, the `<...>` means optional parameters: values are used by default; different types of brackets are allowed; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(a[*] x1-x5 (1:5)) %array(b{5} (5*17)) @@ -332,7 +352,7 @@ The basic syntax is the following, the `<...>` means optional parameters: the `N` returns number of elements in the array `(Hbound - Lbound + 1)`. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(d[-2:2] $ ("a" "b" "c" "d" "e")) %put &=dLBOUND. &=dHBOUND. &=dN.; %put &=d0. &=d1. &=d2. &=d3. &=d4.; @@ -346,7 +366,7 @@ The basic syntax is the following, the `<...>` means optional parameters: You can use an iterator in a function. As in case of usual arrays it is `_I_`. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(e[-3:3] $, function = "A" ) %put &=eLBOUND. &=eHBOUND. &=eN.; %put &=e0. &=e1. &=e2. &=e3. &=e4. &=e5. &=e6.; @@ -369,7 +389,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 4.** Functions cont. If there is need for set-up something *before* or *after*: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(h[10:12] ,function = rand('Uniform') ,before = call streaminit(123) @@ -381,7 +401,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 5.** Fibonacci series. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(i[1:10] (10*0) ,function = ifn(_I_ < 2, 1, sum(i[max(_I_-2,1)], i[max(_I_-1,2)]) ) ) %put &=i1 &=i2 &=i3 &=i4 &=i5 &=i6 &=i7 &=i8 &=i9 &=i10; @@ -390,7 +410,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 6a.** "Uppercas Letters" -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(UL[26] $, function = byte(rank("A")+_I_-1) ) %put &=UL1 &=UL2 ... &=UL25 &=UL26; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -400,7 +420,7 @@ The basic syntax is the following, the `<...>` means optional parameters: Extended by `macarray=Y` option and the input mode support (with `I`). -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(ll[26] $, function = byte(rank("a")+_I_-1), macarray=Y) %put *%ll(&llLBOUND.)*%ll(3)*%ll(4)*%ll(5)*...*%ll(25)*%ll(&llHBOUND.)*; @@ -419,7 +439,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 7.** The use of `vnames=Y` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(R R1978-R1982) %put &=R1 &=R2 &=R3 &=R4 &=R5; @@ -436,7 +456,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 8.** A "no name" array i.e. the `_[*]` array -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(_[*] x1-x5 (1:5)) %put _user_; @@ -451,7 +471,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 9.** Pure macro code can be used in a data step. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas data test1; set sashelp.class; %array(ds[*] d1-d4 (4*17)) @@ -515,7 +535,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 10.** Creating an array from a dataset, basic case. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(ds = sashelp.class, vars = height weight age) %put _user_; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -530,7 +550,7 @@ The basic syntax is the following, the `<...>` means optional parameters: 4. macroarray "age" with UNIQUE(|) values of variable "age" Currently the only separator in VARS is a space. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(ds = sashelp.class, vars = height#h weight weight|w age|) %put _user_; @@ -541,13 +561,14 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 12.** Creating an array from a dataset with dataset options -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(ds = sashelp.cars(obs=100 where=(Cylinders=6)), vars = Make| Type| Model, macarray=Y) %put *%make(&makeLBOUND.)*%Model(2)*%Model(3)*%Model(4)*%type(&typeHBOUND.)*; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--- -## >>> `%concatArrays()` macro: <<< ############################################# +## >>> `%concatArrays()` macro: <<< ############################################# The `%concatArrays()` macro allows to concatenate two macroarrays created by the `%array()` macro. @@ -561,7 +582,7 @@ The `%concatArrays()` macro executes like a pure macro code. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~sas %concatArrays( first ,second @@ -579,11 +600,12 @@ The basic syntax is the following, the `<...>` means optional parameters: the second array is removed. + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Concatenate macroarrays LL and MM. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(ll[2:4] $ 12, function = quote(put(today() + 10*_I_, yymmdd10.)), macarray=Y @@ -603,15 +625,16 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 2.** Error handling. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %concatArrays(ll, ) %concatArrays(, mm) %concatArrays(noExistA, noExistB) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--- -## >>> `%deleteMacArray()` macro: <<< ########################################### +## >>> `%deleteMacArray()` macro: <<< ########################################### The `%deleteMacArray()` macro allows to delete macroarrays created by the `%array()` macro. @@ -621,7 +644,7 @@ The `%deleteMacArray()` macro executes like a pure macro code. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~sas %deleteMacArray( arrs <,macarray=N> @@ -639,7 +662,7 @@ The basic syntax is the following, the `<...>` means optional parameters: -## >>> `%do_over()` macro: <<< ################################################ +## >>> `%do_over()` macro: <<< ################################################ The code of the macro was inspired by *Ted Clay's* and *David Katz's* macro `%do_over()`. @@ -652,7 +675,7 @@ The `%do_over()` macro executes like a pure macro code. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~sas %do_over( array <,phrase=%nrstr(%&array(&_I_.))> @@ -692,7 +715,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 1.** Simple looping. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(beta[*] j k l m (101 102 103 104), vnames=Y, macarray=Y) %put #%do_over(beta)#; @@ -709,7 +732,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 2.** Multiple arrays looping. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(alpha[*] j k l m n, vnames=Y, macarray=Y) %array( beta[5] $ , function = "a", macarray=Y) %array(gamma[4] (101 102 103 104), macarray=Y) @@ -728,7 +751,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 3.** Multiple arrays looping, cont. Create multiple datasets. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %do_over(beta , phrase = %nrstr( data %alpha(&_I_.)2; @@ -744,7 +767,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 4.** Multiple arrays looping, cont. Create multiple datasets using a macro. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %macro doit(ds, var=a, val=1); data &ds.; call streaminit(123); @@ -763,7 +786,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 5.** `%do_over()` inside `%array()` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(test[*] x1-x12 (1:12), macarray=Y) %put **%test(1)**%test(12)**; @@ -780,7 +803,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 6.** Looping over array with *macroquoted* separator. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(alpha[11] (5:15), macarray=Y) %let x = %do_over(alpha @@ -794,7 +817,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 7.** Working with the `WHICH=` optional parameter -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(test[*] x01-x12, vnames= Y, macarray=Y) %put #%do_over(test)#; @@ -815,9 +838,10 @@ The basic syntax is the following, the `<...>` means optional parameters: %put #%do_over(test, which= L:H h:l:-1 13 14, between=%str(,))#; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--- -## >>> `%do_over2()` macro: <<< ################################################ +## >>> `%do_over2()` macro: <<< ################################################ The code of the macro was inspired by *Ted Clay's* and *David Katz's* macro `%do_over()`. @@ -830,7 +854,7 @@ The `%do_over2()` macro executes like a pure macro code. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~sas %do_over2( arrayI ,arrayJ @@ -862,11 +886,12 @@ The basic syntax is the following, the `<...>` means optional parameters: function is automatically applied. + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Looping over two arrays. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(alpha[*] j k l m n, vnames=Y, macarray=Y) %array( beta[4] (101 102 103 104), macarray=Y) @@ -878,7 +903,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 2.** Looping over two arrays with a separator. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(alpha[11] (5:15), macarray=Y) %array( beta[ 4] (101 102 103 104), macarray=Y) @@ -893,7 +918,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 3.** Looping over two arrays with *macroquoted* separator. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(alpha[11] (5:15), macarray=Y) %array( beta[ 4] (101 102 103 104), macarray=Y) @@ -904,9 +929,10 @@ The basic syntax is the following, the `<...>` means optional parameters: %put &=x.; %put %sysevalf(&x.); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--- -## >>> `%do_over3()` macro: <<< ################################################ +## >>> `%do_over3()` macro: <<< ################################################ The code of the macro was inspired by *Ted Clay's* and *David Katz's* macro `%do_over()`. @@ -919,7 +945,7 @@ The `%do_over3()` macro executes like a pure macro code. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~sas %do_over2( arrayI ,arrayJ @@ -960,7 +986,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 1.** Looping over 3 macroarrays. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(a1_[2] (0 1), macarray=Y) %array(a2_[2] (2 3), macarray=Y) %array(a3_[2] (4 5), macarray=Y) @@ -972,16 +998,17 @@ The basic syntax is the following, the `<...>` means optional parameters: **EXAMPLE 2.** Looping 3 times over a macroarray. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(a[0:2] (0 1 2), macarray=Y) %do_over3(a, a, a , phrase = %NRSTR(%put (%a(&_I_.), %a(&_J_), %a(&_K_));) ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--- - -## >>> `%make_do_over()` macro: <<< ########################################### + +## >>> `%make_do_over()` macro: <<< ########################################### The code of the macro was inspired by *Ted Clay's* and *David Katz's* macro `%do_over()`. @@ -994,7 +1021,7 @@ The `%make_do_over()` macro does *not* executes like a pure macro code. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~sas %make_do_over( size ) @@ -1011,7 +1038,7 @@ size - Required, indicates the number of dimensions **EXAMPLE 1.** Code of created "4-loop" %DO_OVER4() macro -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %macro do_over4( arrayI1, arrayI2, @@ -1047,7 +1074,7 @@ size - Required, indicates the number of dimensions **EXAMPLE 3.** Create a 4-loop `%DO_OVER4()` macro -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %make_do_over(4); %array(a1_[2] (0 1), macarray=Y) @@ -1063,7 +1090,7 @@ size - Required, indicates the number of dimensions **EXAMPLE 3.** Create a 5-loop `%DO_OVER5()` macro -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %make_do_over(5); %array(a1_[2] (0 1), macarray=Y) @@ -1090,7 +1117,7 @@ size - Required, indicates the number of dimensions **EXAMPLE 4.** Create all from 6 to 10 "do_overs" -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sas} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(loop[6:10] (6:10), macarray=Y) %do_over(loop , phrase = %nrstr( @@ -1098,8 +1125,10 @@ size - Required, indicates the number of dimensions ) ); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--- ## License #################################################################### + Copyright (c) Bartosz Jablonski, since January 2019 Permission is hereby granted, free of charge, to any person obtaining a copy @@ -1118,4 +1147,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +SOFTWARE. \ No newline at end of file diff --git a/packages/macroarray.zip b/packages/macroarray.zip index 50d13c50a8f0fee68f5d01309c60727961b6bf69..a473d94a625b084658cee2742a3118568695dba1 100644 GIT binary patch delta 24950 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 C+32_c delta 24785 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