From 34b46d1e8534f46f1e33697c819426539bfa1bab Mon Sep 17 00:00:00 2001 From: yabwon Date: Mon, 7 Dec 2020 20:34:03 +0100 Subject: [PATCH 1/3] BasePlus, ver. 0.991 - bug fix --- packages/baseplus.md | 4 ++-- packages/baseplus.zip | Bin 62824 -> 62820 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/baseplus.md b/packages/baseplus.md index c4989e8..afe3ef4 100644 --- a/packages/baseplus.md +++ b/packages/baseplus.md @@ -46,7 +46,7 @@ --- -# The BasePlus package [ver. 0.99] ############################################### +# The BasePlus package [ver. 0.991] ############################################### The **BasePlus** package implements useful functions and functionalities I miss in the BASE SAS. @@ -224,7 +224,7 @@ Package contains: *SAS package generated by generatePackage, version 20201115* The SHA256 hash digest for package BasePlus: -`7933E6BCFDCA7C04EAAC537773574799759007A5D2AED639E86CF4EA631F1351` +`9EA40F72191D1916189F043315CA519F6E42CEB05C186F7653AE464D21D21CFB` --- # Content description ############################################################################################ diff --git a/packages/baseplus.zip b/packages/baseplus.zip index 94c186a35d6b4caa3b0cd6c42a8f98ac723f4858..fa90c5774f8565c2e37fe1f688ac026e2b222137 100644 GIT binary patch delta 12631 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 H`|tk&2S@~; delta 12683 zcmZvCWmsHI)@|eN?(QBmxCeK4f(LgEjZ1JEhv0+&!QF!-!QI{6EjX9JduJvy-}%$) z?AmKfRXw%)RMo~F#LgZBj*=_{Bqjg=fCZoy1t{lTWle=b0RY2sIDEkO#u*4fk>O-` z+&>+WdK)f1QY3VYOr%SW%6wLH+FQ53b^nOsvmL|tWQ=wjUTQmD$RE}3({<cCjS3&`sm-eSORk+!mi!9%ofP z`m}y2!y3mLn_^^$+_@EYqO5FHYzL)}AMaX}6gxqrcTG`zD8hF7G}0w=*tSMa3H4QnPIaof9Wstx{3Bzm%gdb_>YvFiwgT?7&P z5MQC7O&jlfry7hNHa+M{4g?%GF~oKpG5ikReT6zw>1i|p6YcFvtKl1emKR&nS->YG7ahA>CLrVsMGBqcK01^ z394Lmq{mWqH*w%U=?IjpmB+=Jr``n9xsb{XpIzYDp7cS69hJ%sq&PVk%taa-SZP_S zf`F00Q0x@#Y-?8l-V?tq>?L|KLwfw3`q_N_mxa3am@lQy+4sh}4(M50v?2H*AnIs|xkVEd z#|Fo$M-@qkYZsK-rBQqY`Ae@vxP_1X?K(kJdBTH47ii9pf{yeNAInt& z`;eEKWRDz_a!4N~jqQt2c@i0sM!>(tN7TDB6l|&N?sv&pi#h(>sa&V$`Mk%)Xl~0Q zUzI$}RftoU1FSbD{7ooL3E9C!NNCeA1w9{1*KCEJ*UwLiDTV$%;{&vGu* zin8GBfDr79jx7~R3!8`j*Slt=<@0;$gMf!q_ag6R%VUf=k_I-lQI*+1Ga3z9%ykYq zENo_p4R0ItO!V%faXfCrlriMGAoP_0PdGI$A$CbKK|+jHlwTR7dUcgm|pW@gJv4WfAim&$9&fo>!1jmO@m&Dd)e zpXYx;PP9?k`2u&cE*`t4VQwE!X#QChpM5uOaHK!$V{MNLg3QEwqA)Sek6TtQoULLM z({y%Zg04=Btkr`v@un&GD1y``&y^$UsdL%Pw$~vU_ZPdz`z;0&7 zS@EBzR0!1+%yW;9KJubfi8z@$-gdy?CEDGUPtT%z9dh-aj(Ad;jy>9 zB+{lcj?0&o0$~;_LBlp$CM%J|(ke`l+q&2A?Sgiu2K&(cx7 z0r&9QN5!ALLHo}C|YNCTXc!VGEG+ynABad#@H!n?T7`^6@qa}RRisKwTmOu{2w z@igFh6Ats#8@97^K@%Wy%miME#gVUepSQ&fXRv2t%sawe#f2J=Je2}%xbTJbe)6#x zw)lX-h;*->eK2kFSGcM`+QytM10sP{*^O|9#DuMah0mZZtj0D@gaRcWuCJvmwP!4F znTI5adSnTSi90RnL#{%o5xvD=yFG+i!+osbC&1qMtct>;B{!#Z;E|&6C$m`{+(!6| z(y=^3D^$jabyqGzpIX%@4EUCeeyGtMbXym@TWsDu_eRSaQ?iiM)syL=^9~Ri4N}Tl zY{(YM?G?CuYPgD(-2-A@MsBX+^jtPxcQnhooP`2|nSVK~ghqzmcKEaXpv0x@m>M@C zSQ$ZW2+N5|#cJ}8)Ue3=hIs2RamOnYcy;!}e_xlfifw>hIBT#t^lcT|JJ*n)Y26dL zJY~z(DI239DrZx4wux;g4!9zmE?)9=;p$2vs5ih#M!NEjR#{j%)&a`{ zg=pJoE<28;7?Tb!12PmXGDD>_7Nx#lGUsdsJ}3n@#A+w{CcdGap97Qe3^-?PZ$=i2 zqZVy@R~CySmp}w7eBv3OSF6C)$1C3r|J+C$fg^7QXSP-w)Z+5P`k}Zm&)=QAN}V9c z=Roo^Ttk4UMMeU+?p-)zqK7zt({R>YrXC~ZbH8X_!GQ458kEjo^f9G3k!j(`K zv!qz{@7kvuLms0TIXhFAxU=wZ!DOz;V)8RJdP+qZ^S;ibBlbk(vWz~mgb+TH!FQTN zR97*4s)Ik1jMHpuXWwAMi=CQ{^Fx!>ey?l+Sayf=X&2!DPYZ8t#OQuU1t&Z4XJSmS zC++XoaO0*V)9CAmm7gwXWj{o8+|2&!+>^u1(ofR`zdn$+6A|yTbLM92tNYL|{se2T zA<1Sn8@A+^Caegqz?57V)S6E73heuV=lH)B0g1}kh z6DLh>{8)Jaa7JQF@D`1I8o(2h!zL^8Tkhj%8q0l&@?(rlMH8m7|;O%eUzeF9xc z5f2gXI_$k$f(!-8r|L-5&)S%MaA5NLWF|&TO`I_#mz93ie*on~-(ycP-4r)_U82}{ zLEoiM`z68a(@YKenwr#Grs~7yzA#m`f(g@5$#1x+-|V~15r}#|!bU!X#j?2w@4jmQ z>v->((g{2{Cd-l18#$0>g!n0@>>Bu(ta=T#RJ-)_*hU%U;!L#aV(iOD5ba|7LzTTd zcN%hI{_NZMc}dLn{xJIahP@+1MbR4S)7d7t9J!mW=|VTMr%CLlc%(4qpB^ zTcP@gZd;*#$-TO#K}%*5YX&+M-BPO4^l_#V33}%7@}zu2Ty>`^j@KHGS3-Y%QNSx(>QJn@K9|fT z5IP1OP}h2$6*YJn;szzO3T(cnXgVi(hLJ;F&MIed1ou`8)8c(ZUwqsK({6cr0(#St z7>OGcxW2jIRz@ll4yCr3*3j_QIDa%*L*=XkE1}VZ8#YRN#69Hf@-!xbIbNMip4lcs z3GDR1h>FV=E>Mb~jB@SN#p}R`N?NR;o$1X55KkF1=d1pnO`-{>ZjS4Xk(PVax173} zra)I(>V{2I2ZX8Y)t?U9{{6$^@AkSB9mL`}s%xZIH8L2_JkeAAw^09`7lqqYW>EK7H=0``(s?oal4I>{}=En+x(7q|u z1KaxJGZeY_i1Ubp^G%!}FD88?|5;9~*_E9WSIiLP96m$w_K>H~pNWSfdPuOn;S4&g zYFLI4@CeL>odS0zo?0OOJtFvj{>0q%7i-Hw0{|k_002Ay6X0rRV{dEt< z=WLmHDIf@Sdn4y6t(*1djA2c~t0q-)$yKBm4BPVz82Nms5kfY_a>H7@i3Q&g#UwDM zqieduUZl5kE?Zkz2-`C64QB}e-439@%e*NL-LE%PzNFXjfhlsg?PGxB@X~z5KcQd1 z$eJGruAaO5tzN?w)(_`0pLZJ&k?i0F^n&kFHerp|%mEHtK%ek^dII1IjzWRu#L)S- zdj+D@&YK9XYpmcGhck7$h3OP^Ch)iU>Xs}73>DzfB;bM*uJwqh`A4-6vUCqnRK;wv z!^q8}_Ne@};1t8*H3N-28q4^ApUEV)qkC8ADUQF|CNz)w+k-MZ z*@hYE1PcgtSlCjFI_DQ+kev)E2icmzZX@P#f7qI{6? zE&%$oKiGup2s8$y9XKv)p9jNi(!YgpBXQpf>OXkk2Mn0(p1NigT`xwG1 zE<;58L6o^KiEmj*6bR>y5*lGl-;~bVUGcW=4+c%;N1x2LA0RbF#ettnV3f~ICod|W z)fcJNnPbnQP8WDQZRD~|+Y48qJz@(-S=R7 zuW;bPgDk5kl5u7JP-#nL6A#?142!Uu^&(i7??C_7&{3ykCFDv`>)tV*4I zX}D4|rO0+cZXfUic*Gv>y+$R(xd4a1yg9Y1nGCnf2~mkf0yUPl=aUv1U&E4u%sqJ5 zl8_$*ZZ#U|I#301jdJDTWOxCbTRY{0XFm6t$J%XFr6*t{6cPEje`69&;+ZW5xAm0{ zu^n-9-{SpMUMp2-)=Dz>@lqQDxZc_f_IsDw^ecyadIn1wAXMHtFaL0t!C9%4g>(5y zw+%)#e<_1}1yx3{vq-7CHXRs8M>sOxX=Mib-sDkNve1WXod>;5=<}XN^j0YqQK-$? zrAD>#aqF5IjrP&|k%qAl_#yqZv~8)nHZ&UCeyg@zA1s5X0Y(HXwbjAd)X1(@1qi2^ zYz#urloYWfV5_4BjjKmWkNT!mQGgs@#(P1vJk`;}r4+@^Xn5Mu&2d~B9-jL7X{JL- z`LStUO`3PoWh$E%go$||_mSvK*Ru&dQ|z@#Fio~~aPGE&1$Nz+8S9FkMD?C7ZtlSnvnpH%JtQB~Y=!$XoKfDnL zg*GR8oV*f^25vZfQdS3IE~PGIer%SvpvmlwQ{=g}`57oR0H?4TR+{P%@A!@A0G1%AdxOiwkf{K6)<-9R>2=v{(Wfv*Cg z5bKZ~6hi7KeJ@hK0Y_&hIZzOOFNh6VIPbtUG)(ixC0n%=Y4|RoE4M&3 zAQBjav6(NulZ)3QNFT`h4LQBCL0oPqf9>Nv^{VCYV;VcpspGm4E?+1v3C*f;8kJsf zfBW>Z;BRwJN)wV*pn))AHG=FJtH&~X{Z0O&3QB*aNpdUHG>W*NmX2x(r2omoFR?;@ zNQ9k!k9@dgA=o)4ACZMqs)RK{gO0oU!9rAwN+u218U+&^Qh$Q+uZYXu@H>ICrXgh{ zQi=)kZ$G*T#5e`?m-Gg+HK*wre8d}WGW*1ANjxo=?HGk?0i?S$CT+erky1mD4hg8t zZj*gKK`nU0OCB4Na&2_|xJHdja~%|N%*y%>D1{q2L0h5upq zL}wC}?(@nkm7z^od6OtED?|_3HR1j}kDi~tD{s+3Be?oa#$kw%+A50Kb(aRu&;3>+ z*~#K4;mNsAI>5=AGWrjiNEc;&pEQHFCKV=Q48)IYfn;&1l-b(e4A|3!viE#hL$*S} z$$YUnjCNE-J1j-zR!^+DBRmyv$%V9v-xjLvVIj!^6Z?jveFs8?ice$a!H`cWTP;^k z)RuU?R#ou}yT-AjlLd6aJUHY-*SV3gRd_Evl87qsqJe^S@V(I{3(EP@#kRY}IW099 z2MMDJ$nI$?Kk(XZgsBS|Q!7y7R4tt7)uN)-CTI{0s6hg6(=mVNIcJ`|XeOJ}R9S56zKwm#L@z-7oo7HI-xIj}^ZO6B?Ioky?DHJlXm>c$0@mA&BM?`t~U34_*0|V zDy4zWxN+Zm_*;4)RHk|_3+br&9^Pv;Cw{>r*B#9{$C0BIuX;ZdIPZblfPh(FLcMO0SKP2^BBrubW6F`L%{r3l@g8R0?>u&dM3+s&-|}X6o85!ri&I(KoZ%&qpCZoIWk~Ce`oLVC*%iQ;ECAn)}8Ws+|Ih z@m0J#ZloyP(mZT6$su{>(V10ym-I=$644(0>`7&sf1p5cd(kJ3P5}te@ z^Qm&Vx1%GXDc2R9q~Q^9`XyBO359~m7}G^3?8Y6*Tej%eEak<((P8ZyCBco-hRXKTqro* z8UeqgAhewF9igcK3c-h?+^M;=2g*m_}+sMOn)DA<8TJZ)8B9k z0kqn|Tw7m7V?9Xn(vXzpa$-I4zSX08HUrplrA3nw}~DRj?%gWV(YWy1T)!!Ij`BbJW7kcv#!q} z!oLs4o+%dzi4_~^i_t@=mHeGG$ET?jD{^@MR_~u*^(I3+$ws4=y72 zY0|%zKoexZ43WO+f>)ngMxe@)^$^0A#X-x$iD+vAdo=cRmbl7Q!cIbi@m3^G)y^ch zyMo_DC>qSaTUl?Z$<^|Zl!~q~WWFwz$;6bMn;BHj#6}nr0FMqJ_tap7!;ndoZDP2B zvSj=aOg1p42PLQxUXnM>4_u}m=8uxc!f_>SlpZVT6z}eGuHF4uO-x%@Y#0T9eLP12}Y ztw__fEj$@*T;pmqVA;Kx2iF40>^w&DQvF&j7T@Xu!jq3XJHDbMo}rI@O!Gj0(x_c( zXluO%5yrvB$rniP>mu*FFWxZ)rhtdvkNeAuR_JD;c+m?~cC|61;O&0LBh2iw)nt4_ zb)un}L1!k;(ixkBk!g6x^uAP;zyKS2ZEbH^WP#p`0BL7k(ocX zi)OoiNC&`X#6oIcr>6tBQlbkP1JILtG&Y^AT?FJ{1s9|2b;p}e3!8`Yb{&(}a0&aQ ztSKA>)!$ndjKBoWlHEl~P+G8m7!2PQ=7FWx(rQ9xT@#CZc!yJ=Qm$+SB3Z{nCsZKf)jr|Aw@tbUR4Vo zXUx#(GE}>k#eP(QPd+94)yDxaE5^Lc7{C4Y^xZUap}tB?hJn&wi3#Mx4?|u4w0+!OYG9>903B?Z%W6?!>>ycfJ`tIw8{O| zkYVROMI0!ujXa9}Ewpq{!rlEpR&j!~qazIDFk(>hSt2=TAheO=t;CYytO{f*K1>3CoMV&o4VyBk)iO|Zt}>?5O3#R2*}7a&XMLvd5rgtXEPZp9i%2ot z9yiLIT?0JNn4FY*@5UyumXSl#JBQgOx>|_oOBEcp|08l;S`4TCGS=>s3)NU@=zS7- zyYxoAmz0piExPvNkPC^h@B6iHIfc72NiO!njIGjBBjYX~u?@{m*%_-O%vrR%2Mnsd z_ARMQ@{WLqQRp0<4 z`t4A{9l0LBv~uF>`--uGvgTH>Q{4z6cItFOTeR7V3Q6%D^--{C z&bB9@NoVwo3hS~Wy0nLI)!AoeFU0Acu*ANP`PYPQHcY3EFdsx? z*T=qBPxXMuh-|w!wx%H&uww&$5U|;hY`In4&05rIuL{+j)4L(_M@WvlByYI|_`EUM z9v;AldHXwo>=wNm?+yhLXkOm#on5Q1`E3Io*ntyPS5xH1NIqs#iXa^(it=8otUu&P z{2FS$1h&5BcPfsKcSDivuzkbs&NNG-GAYuCIn{05`Qi0w1V=@n#pTG&gHD&L8O)P$ zh;L&V#OK}VNp;_f=Z(W-AhtlV6!%PNYP)0>$qW&=o8!+B1Us~Y#p1zc7#o(W!}Lm5 zpv%KDV~U>OTuqMl;`cKRqMc}QB>h~A8AGvqVqyE#GO>k;uZ8;#G;9)0M%|tpG$c+o z2&%leHo-6uUQ_#NH1n=yoVMO;5Gn3gd2gDWG$I#Z1u4?p2(o^BS&kbBIb?C`?({j@ zz&#ZE`D1r0M9oIbPU3!TjJE#=(-)2B%?t8-eB>*NPuCU~PO|bLw1;J3d9!Hm2vDo&V~>&g&9z$3Ax`{A$8M@Pzyy zd%e%!-POnRQ;-mUKo85@D=6Uj{0b!A@LjZGNFeCq!yAg-CF|q%x%tGvz6Ey` z+NBTRcuYTaXKcIX>-#D&*c0;`z zHJ!3HO0l%T)Yui9X02&wQ(z{Q|IYiaI8fpz2HEG>m>KEXs%Dc^rP)IrCt6$0ewMjA zdi3;)x+38GV$J7)twI(NXbX%zr6nL7RzZr!`wsKRg#>OgWe;j}F7~k_@G&5V2d2li^zqb&`0|p1#p;lMWo_c| zj>@kupHQGOd<(|wM;Rl78+~HI(thxLriv`tt`fErm$0xb(TM{s6^~%D=(G#1_3A#% zE=UzctH)_?ox8H1BR8Ng>ZsIfEWd$ww~w%zEVjnOQNq)1$U>nz9HWf19D&*1-iAa* zj->(GO}2RF#2>1hjTrP5+kkb>z4H}j*oFex?)ocAxa;n;*f24ypY7&Ps&rbNqEUQR zO}*OJ*lxx-WUi^$^P033vT~hYROHK7-bRNL`>IP@zdu%lj$JQ^l_{v|s#LejEa-F7 z@{VXR7NkgPT`;LbgztcI)WvI)a)M0l#|aG-XHATt3RW-htn!rSMdSDM!$;5F_^xCh zbIG=f0~I2Ia=-%CD-f`eC>4X_bO*&Qpxf&C^~(>X$?2)=$~tpVyYf?Y*~8z7?EbJgZH!~T3u5R%oo0)JiV%9LIYb=2Gf+0iaA zYvlmwaHYs|hm!F~r0@i8A=Jh4d^1XjktMZIsB0FudO+fEWzX|KknxB&^a$I2k2T~Q z!vcD+$2htWH79ZO{26{z@21+OHGM8d4Css6W<$`QI=@EBSDC6Vve5^L#0XiZN1!E1 z7zrk|f3cLz7=W*;fbFpi}eBS^R!4*8-f3RwznC6?<|KX@Cj9%6vB&=tL9bUd& zZR-_&`lISl)Wecf)B#hx`WHXV42TfAq&3va$0*Yv7&Qee-ZTp(JT||6g`fe+edXOX zT;GZAS7CW4K5l(M9RzKhB?m#TY>J-C%~C)aiog3nIj1BcHXF~0$uOTVyOlCfK3_v~ z3+#6nc#ja8V+r6COUI*U^EmyQEb<|}^LarPlF}3J{xu!r+bxmrrsaI8u*CrS|`%_}<~z3B*6(CP4dR}^n6haKkLExz#sL}@ch>D^}}+&644 z4%!YNf=O??^zqbPmz*Lj`L*N2oxA^*S#5UEt6`xV?e~`z zm>x>RxM56cG3;Y8twDM;Yj#hT4MjGym>EESIVxmT4DIJ^K|8l6|1L3DYQY|B zK?ajc>M+gdU2m}k8YG`1;6kq8jeMRKDoL`P(HrO-hUjm>IsypP`89B5D#NQ>Oq;!z zSXGYTK&o6%w(nNKiyT0@&lNoQ&|@>0B{!&kdkL4+{!fEO-Fm~Ks8OqzrYyxQ1N&q`Rnt%n$V>b{H25pxOKjQIM2dYz~}Q1*z_%Ul|=a` zyaLLg@K;a~GXDyq!?$07M)P3K1{lwmb^knI08+qr|3Fv(ClVJ#q{Tb@9Xo*n?wWv{+#+UI~zMI$%27nKA!{s|4YFCIJ+y6QUzy|;j{<6&p657Ro>5YHy=$P-)k^J%I z^!v&$8uI!002u(l`-`;>D%+)f$$WN~0KA0-RKAN1Lfk`p5s~f@fTwc2h*bB`NdH(m zUAjFyf4-cShyLG|-oAZNO#6phwnqTw4(i*ZdIohPDHd%?T6=K`Sl#jp8@;xyvBh6vOl1B(V?ue&hmZM*?rc*dR6&HrwdehK>0GE zd@gF#OrLdX{>M(3=ktW}!~!84zD_9oLjtfjAg)8om#p-k-xffghvYABnTG`6LH?l8 zV@yzmKP=;a&!Zl{&>EpQ8@J^o9grgG(3r~Fxm{4c}nppj#?7oC7S8DXL4 zYcPL$o$xOm91!UV!%MOXCj{X6X&|x_JW$XH8p&Vl*0brqXFemS=7jdodIDNLA%Kv` z0)Py%@R|NI{6GB3UMcR!XO}`S|IH7|1%N*1;)4uM5nrs>o)Ul!g2GQ}U;Gk8S)|uK zk6ZWigeUqd+-cCrDdP*{>68Fsz6=2JtH1+souR$RWX=d6EGquUi2v%!Ke6DrBDKdn z$CCb>3+`Vwk3p4ZG%x)5XMRr&0JK{3zqx!=eBfw&&SUd6t<@y~@rna9?D|mjn<6OMhhKAcad* KXwU6G9{(R=FBc>L From b1e61b587a7739202b77c21f7b38bee498705bbf Mon Sep 17 00:00:00 2001 From: yabwon Date: Mon, 7 Dec 2020 20:35:09 +0100 Subject: [PATCH 2/3] macroArray, ver. 0.8 Two new macros added: - `%zipArrays()` - `%QzipArrays()` --- README.md | 8 ++++---- packages/README.md | 8 ++++---- packages/SHA256_for_packages.txt | 4 ++++ packages/macroarray.md | 5 +++-- packages/macroarray.zip | Bin 36580 -> 43689 bytes 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e11f80f..942468e 100644 --- a/README.md +++ b/README.md @@ -116,7 +116,7 @@ SHA256 digest for DFA: 1FC8D030D576C33F1B5DEB27E17534946209BC148D57A1357CA025ED1 [Documentation for DFA](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/dfa.md "Documentation for DFA") -- **macroArray**\[0.7\], implementation of an array concept in a macrolanguage, e.g. +- **macroArray**\[0.8\], implementation of an array concept in a macrolanguage, e.g. ``` %array(ABC[17] (111:127), macarray=Y); @@ -135,12 +135,12 @@ SHA256 digest for DFA: 1FC8D030D576C33F1B5DEB27E17534946209BC148D57A1357CA025ED1 which = 1:H:2 ); ``` -SHA256 digest for macroArray: 0F1B985E2FC34C91D2A3BD237DC294502A76913B71266D76702A5E77A78C9CA7 +SHA256 digest for macroArray: AC3AD58AFBBE459616743DC6346330BD8DD33FBA8CDD595423F181B67D0475BC [Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray") -- **BasePlus**\[0.99\] adds a bunch of functionalities I am missing in BASE SAS, such as: +- **BasePlus**\[0.991\] adds a bunch of functionalities I am missing in BASE SAS, such as: ``` call arrMissToRight(myArray); call arrFillMiss(17, myArray); @@ -154,7 +154,7 @@ format x bool.; %put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_); ``` -SHA256 digest for BasePlus: 7933E6BCFDCA7C04EAAC537773574799759007A5D2AED639E86CF4EA631F1351 +SHA256 digest for BasePlus: 9EA40F72191D1916189F043315CA519F6E42CEB05C186F7653AE464D21D21CFB [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 e2d3a10..68a2181 100644 --- a/packages/README.md +++ b/packages/README.md @@ -65,7 +65,7 @@ SHA256 digest for DFA: 1FC8D030D576C33F1B5DEB27E17534946209BC148D57A1357CA025ED1 --- -- **macroArray**\[0.7\], implementation of an array concept in a macro language, e.g. +- **macroArray**\[0.8\], implementation of an array concept in a macro language, e.g. ``` %array(ABC[17] (111:127), macarray=Y); @@ -84,13 +84,13 @@ SHA256 digest for DFA: 1FC8D030D576C33F1B5DEB27E17534946209BC148D57A1357CA025ED1 which = 1:H:2 ); ``` -SHA256 digest for macroArray: 0F1B985E2FC34C91D2A3BD237DC294502A76913B71266D76702A5E77A78C9CA7 +SHA256 digest for macroArray: AC3AD58AFBBE459616743DC6346330BD8DD33FBA8CDD595423F181B67D0475BC [Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray") --- -- **BasePlus**\[0.99\] adds a bunch of functionalities I am missing in BASE SAS, such as: +- **BasePlus**\[0.991\] adds a bunch of functionalities I am missing in BASE SAS, such as: ``` call arrMissToRight(myArray); call arrFillMiss(17, myArray); @@ -104,7 +104,7 @@ format x bool.; %put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_); ``` -SHA256 digest for BasePlus: 7933E6BCFDCA7C04EAAC537773574799759007A5D2AED639E86CF4EA631F1351 +SHA256 digest for BasePlus: 9EA40F72191D1916189F043315CA519F6E42CEB05C186F7653AE464D21D21CFB [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 1a8208a..da870e5 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,3 +1,7 @@ +/* 20201207 */ +macroArray: AC3AD58AFBBE459616743DC6346330BD8DD33FBA8CDD595423F181B67D0475BC +BasePlus: 9EA40F72191D1916189F043315CA519F6E42CEB05C186F7653AE464D21D21CFB + /* 20201202 */ BasePlus: 7933E6BCFDCA7C04EAAC537773574799759007A5D2AED639E86CF4EA631F1351 diff --git a/packages/macroarray.md b/packages/macroarray.md index 353b258..f319d5b 100644 --- a/packages/macroarray.md +++ b/packages/macroarray.md @@ -14,7 +14,7 @@ --- -# The macroArray package [ver. 0.7] ############################################### +# The macroArray package [ver. 0.8] ############################################### The **macroArray** package implements a macro array facility: - `%array()`, @@ -24,6 +24,7 @@ The **macroArray** package implements a macro array facility: - `%concatarrays()`, - `%appendcell()`, - `%mcHashTable()`, +- `%zipArrays()`, - etc. The set of macros, which emulates classic @@ -66,7 +67,7 @@ Required SAS Components: *SAS package generated by generatePackage, version 20201115.* The SHA256 hash digest for package macroArray: -`0F1B985E2FC34C91D2A3BD237DC294502A76913B71266D76702A5E77A78C9CA7` +`AC3AD58AFBBE459616743DC6346330BD8DD33FBA8CDD595423F181B67D0475BC` --- # Content description ############################################################################################ diff --git a/packages/macroarray.zip b/packages/macroarray.zip index fa3364c253fd5d1b276d31564766b5cdc2dea996..b87a11a548bf423ae99f68506d3fc724f37a1aec 100644 GIT binary patch delta 22625 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 BoMiw2 delta 15377 zcmZ|019T-_^Dlg2n-kl1GI27oZB1-rf)m>(wvCBxV`5BfYhovNp7&kryZ8Bj_jdR0 zwRf$m+O=!<`gQlJs`5qf{cLa?C0PhaOaK4?3#cr1P~O{=0;7Zk04Ni11c1!=3ngju zo|R#|aJIFU_>f5Q*^CmH<%vmzaD9HSu}K79FH|V-Whnf8=ekBbI=%0daSkJX3Imx$ z!e^byov9lGi{oKs?fQeVu9K=A0c(o_)-ACBg~h>5=ac zK}%oy2#447@`d3;uk!3+WuoIm<;qK}2S&e41BlxCqDj85ALp}Hy`hX6$MsA1r+X3{I@!`V z_EMTue5fXD=GVDOp}p}uJ=2;HOX6WO%~Azo&~-Fpz4c+cW^rLTDgo<9%E8TDX#V@?;_?C}g7(+b>2dcE#7}_EWf=`zIQvE(vCePWBIek@T?T zM}QF*vBDA9>$kN0t|g$g1QOG-CG>|+?KT#~5F7uc>0|c1gTYy+pWC3pK-3YV;<;7F z1|e(2s!9|?YFfUtU(VSjV$n}iJ*gd;RWITiAZ%aIz?s22=Ta_*-4C2mt;pQ&$YGjU z(muZg1<*)(<&g=FnO7{`AqlOrwEmU&7CwOCmmNyU#(0dumlU&wP!gvYQ_OuUO#LX_z20?! zdE`R-4o(Bna)b)peu>P5QrlqJZPT}}rrw3bXERwB*j~Mn&F36S*@N|WC!uOuLc0br zx42(REnCQ;vq4^tj6A0>M&?o7l>CG3wPVd(KK%~FZ`temD|9|!D#)LXxP@`_ zJ&9pHq#~^NlBSu;|7M2O_NL1DsROx=^>kKV)& zJ#gasln;a{rw$!I4)LGLxo{&%iFQAv*$Z{*49F}f*l94uP^VHVPo&-#O?6zfe4)8v zTnFEa4ChO{uGoicf@`GhI*5|wCR9_JArJUsYdcO?5*{!~bHEL5uLY0g1%yY?o|})^ zPNpM{XLV-ix^cS8QITC;6PXbku{vq=?k$^(e5Njsi%OCrEw03?#6NU6LG-J5)NqKg zd>gt)`4?z3ctQ4q!~KIE~W8yhD}c)GKw1?M`t5oJxLl~8m|s>-+oZu z(QsAk1P1^Z5gL48Z@`iNaS1XW7(E)yUqGb=`5-U@Q=;VIz!JGsP)o^?Vw|N(z%N(* zM5DSO>6@1~nm~>{ALe$5T%iE22!&D|X@tJl$w_wRuV2kgbrwjuLOSMebuRXIaT!!S z@87%L1!!8kVJ;MU++gpY*4SH(2U)Vc9V0%3FKK^^A61RhU92c9gT zVcORMU)-cjFr&V;CZC1tQ5y|M=!M@VFh$s@k%5CjoFXo!)PDiOkZy>KwTItEk>e7Cn6 zI@K}#mw9epPMs`vrX+MVnY?wHRdm+yK40q0H(ZIVLP4yYXdS^t@E^a3pffMn!uWE4 zG}wdU(LR!z%v#gLn`LOw2m~bY)L~v~lTU$xuHW_7#N%KG(2+9vgYZ8rSc@XK%GjSO zTcD9xVs&zxobNkkN*iQZ z{b}K>uIh{k!+DHwCn-pL{VIO))D?kzw3$ZLy{*DHwpFsL*z4dtY5M9X_C?}A0`fmG zrj1}BJBq}W3GF?lS=`>$B>X?JYu_Dy*~_kM$&!w+m>;4JC=nm;BcjQ&g&#yc_5a2@ z#pN~mI`Z;uqrpHq)=37Dg;3jLe~D#xQUN;=CsHZxdu&zyZDd#qCk@qU=#o5Z(fKDN zu@;-TI+Pq~c|_Xwf_WU~B(3Z%upU#Hqmq}D8duFCkAR4XPFF2Adnt>B(?^p!u%e$> zW>BgPJu7MZHlmsA$Q;*Fu_f9{P!#87fx-u$()u{!!e;7|#=$IW3VbF> zJ`Kis0?K~(IdDAG+3ZxpiEchAPh_KhZw;bqpxJ+`<@UmUSIxX9FuC0qxY*4f{FrGt zF889sz>jl({hP%kWhlqAvSWs0^nHXYq&IG}551~7EI0!~g$i1wkz zOj*}GvK90L!-MY`;Z=T_+%c zKozReBQIZpkv=yNt$*r%Vravru7q83WEEr5rh%>{yv~LY$y(X=JUl0=pJROL-W0<2 z#LFD&Xu?psK}TT`XkA;j=A^I@YbeH@$v-2a(86SLt|zG@{W-Ra)w=Hb*hj|D&Yb4 zu1;kzN}slM;9~;EJnOMbyf#v+wP9m-CAK$wiTy-8%H~=FOxI~&lrkpr+A*!!!Lw12luq4g6j;gAJ@c4NmF9G_&1C z;aVX&u$^vBqoS0iep#+PLDeLF_!+XlPZ!teH(47$$NPAvwHBTqvSqFQ!NTaeQNcGaEtwC# zi`J?SdItZukIg>FsJQU&k`x(`Wl`iuv333whb9ZW9asO7>dlY{L|pY4 zSRE(I%~PZ6GdjKt`(X;$7560Rae0I3mBm#@#3Xcq{&atROrDi&iw9}%YYR@5k(j3F zhtj?}UALLU`O9?4u}$$qks{pFj*|?3b|Ej2nXj5BhNHgqs!AnNMMX+t9qf)(tz@BCVfi5v5tUpsVDDgMANf zt(k3w_k20F^pUdzUuwt<+zC7W#l_ENm#f&#KdZ(`owUiSs>hE;3s1X<-H6#|DIKyD z0A1kh=ya6O0$AMKv4^x^Ur-(G)ei~o^aHkp&K1aJTYGbd_V;FXig+YEp7yi##<1rt z=(?@JB@FG`{-e^+>ai79V9z|3pP;N!=jhG^zJQ``zRs3Kz~$C&cG~EIFGu9_hQ448 zQc&x=Y85igOI)h$Q5983rz^@2u5c;e%`o~P_0t(zW~X9$3y&opg1p#=7)&y}m#pp$ z`8V_^rm?_@1^v~eQFVFY-h+F^DTpc)vgTgwtt@-Tch6^5cG&^^K+%oKqpW*zq(to` zhsbQ^F6$~gyE``QRgR8iQ%{M(7sa`%H2F>zXjawZ)i)oiC;6r&Q1W^AUAwKU4gQTs!SNaMr_YlZxvNse&jo(xaY2<+F+sW`XBetrvkm4$f1+lbr*u` zNTJv(!sJ}z9>$4az-oKljk6_tdJNkRN7p50_tCi49Tj)d*e|N zEE9TqXDN5$lc(achmGONN~PcQE0<6CpDM=NRN; z&&HqqTE{!LV56eie$%rZ%sfB|khs8VExW%s zgZe>4`)Q1+FB`~Xpwdo{cHej*qPT9KuQRjZ7qvc^R3=R@H092F5!d5HAhqo;`h%9a z8FZA6Gt9on6c|5DQSj&KdaC(#fF2fti9mmzvsH=>40PgiN6)i(0w7X-5y-3U#U@F? zB-<@M=aL_TN8jy=w^$9l;s73iMdh!3{1#P+8_wz<@a!H~u;tnj>5m9@(fX-28!+NC ze&7q!?DiZq%t0CW0?}LPA&~xI=5cWeFnm7?*x2&@;KGni$ymqhC6tER`|Qo#r!{2- z!u9GUlxkuFf5b|mHVa^Dcl?1t9|YfO6bxw)NamV8Y%x4)bDLYlAq8TgI%|qYG{V_$ z2i883MG4%d!>7RB6@76=NMF_jli37Nz6!HqH1=LV9XxWkf)8q^{NRwhfGU5rNvbI~ zi#6Z5MQPbmS~Njz&;$6pOaq?^DjbrL5iI7JqqPrq)5B_PJf zI#p;S3cq})>a)iif$3w#F<>0Q1k@OB0p8Av|^q&b-Gl)Ya`{FD)#@9EEZaNe{ zj2ko|FIQs0VF2D)Mb7P)YEfd|pn`}A&QgE&5^OV@8h$t8(}ipT&!Z^oibDWzg0ogV z)@fODxy{(>Q%N3RA~H)z2oPxTe+6iQH3pc|b?EVs4n{Gv{9pr?}5kk!{Gis6R0@!O>vvXbNP{%AVgL zctH1av}IJMM25q$UpYXu_`NSMmZO~E)83lZL}QN@lVkaUG;dyOv#h9Wv&6Z9gzeWS zKftL&XVVhRh0Lm&dy z7_1Yp>FuE~Cql{xZuo2obA$y)_ul{U11mJB9cVIYfWikkqC*p$qEl@?=9LZQQc%?W zidci{M7Ik#{de|sf%)Hyh!98lJ3=4g{fxZ;J^1-}Z^7fB%(&qxcsiB^ zrmSthUvj~(gCb@jZOL9z#|4ozHqvU)0hgYzveG}{Fe?OcFGM36<=0e z4ZVvq(1^uI2Yg+^p->-AXz9V$sRDlIvzfAH70wuTzB@wel$Q5}Dd2Np89N!d3pW(P zQd93SCt55V;#r41`2{=`WqHEgH6|h7yE(#CV#ZSo(NlWBK~n_ArCe_%vnxfJh|(!_ z8%kPX1Eqkvl0Q^P-n)`Ge)gbM%0(!2WNmuYuV9Q|ic#1AX%T0dwM(O2?Z?1 zj4wwY%W*JphH<{P7Kn(8p*tUN<0r6G!TC-(<>~KIfk?jd?M%DNaTNWQk!|Wi4#w2;2E>R=WKX;Fz>jf~o?De+7E5 z0}CKpk|pP8fn8tK=%syr@xE2=GSonzeQ5#YEw*rhfw!{8+??0ufUoxAX&0C)r;JuQ zcQ@x;`~nk1mh|1gixoufL9CJ>DgetE;e`0(qX9XrP3Lty$+R(zL%Q-SPqFOEq(&UA z05$6yWKmRvA)=zoI-o0x-ZUrwJ2rX00uVVK>|FCmo!%PbTzRi$jZhXFg0a)4yhAU7 zs=(N9y@K#SqFq@xjAXo-z#n(&dB}*{0D4hL3e0kH{&{D!dTf?pnxu$PIHn9f- z0(V#1PQQ@4%i0WG9H!*AuUE&4l(yHAQ1n@Cid){{QggkAN1A)r+;`~}Hz0CTiX|}+ z&!-LR7ssrK{i4jOmG`uD8yt14RIL!X9r+osVY?Hd$97=q5UwU?F(4yEcT|O*+)wB9 z3T(e7(JegXz`Y)MnS>S;LUc55apJsdnt+K*)?Wzb`+6j|iMMw5xU6qwxF2&?mQ@8s z?;IEPk-s!@5*{f$aU*p}0K6yTBL<~G-(D^`)eKrOwW?W*S$(@1_|6|k$*7@57FkaI zI$KZ+%NCPUJ6i;^vT9Lp8fPjms<1bY&F)tIb~BiKBhQ$SHbz&sgMV?r4U1u>Ift!o zW~q}ZL;wAqUPCfFf39h4F^0Flf4TGfeR+Mk;0dAR*s87cvslF`fQQ4_Vm;Br5b)WF-Rm%@wXhV-2p*30o;KMG|R~{at z0mg~P>f{oXm36%5O+oMbQ!H;Y*5!;_^8g@`#cQqEv8WMK%^vJpOP>vA&{m$iRoyM9-g!W}xvVku5L)!Zy{Aa+o0{!UJKFo85 zn)A@tfQvTU9d7_w?zOE`V(uIGFmyx2rC+-hhlNj3(iqiLqV;sYLf8hm4NZrJw&8u2?Y>E0nTK@|QYiCL?2#(WI(UpOo>koZ;W zGwt;3_HsyE4A}Vu{x}z;w?5dvUDkkgK8J1V!aurlwMoIv1NMH4V@cUucJi$+0_8jfDd1-X@RM=_=d#`y=*Sh|l&q)gQC?0NV! zB0{Aycno33a*7JFgbr4J{t#unV{78El*MIQlZ0TpV>kfp%fv#OxIOqA=Cp2@q-{j7B>GepzA0gnRf!(Y9sX5p7RIYo-2nrI>TG#Rz2+i0hw^7oA0|jS^;xrq@T5j13Un| zHmJfoY#yDoYJ>@xl+a$bG{{fTCtTI`Gdu5U8inU$MHTEaKk8O3k7FXR(qRdbq>`DN zhF_$Cz6ab4RzZygxgaA&@$p3>$#J__Wg<6l)k#dnlYFa0Bw2SR&q@NIZ??EnNADba6a^t~e zV+2S;-PgH}kVKKklj`Hb(j!*SBECd;PX)<7L_$V8`mYE;GX(*Woe1{x(ojEqgj!gm zsBQtgbu25TbhkDPW$e`^^)kuo)>SIY0ZCrJ9PEz8Y;-_xf>nn%9tPPq-GaZ+&4>|@Oq zA&3j`@bY&YcMk)nFhWKu;vJ>=j}PbJz7)EiX(0+F5?I^*bcyA{u!X((Vh8>OdE49! za#(?83msoVM^f%`E?v!nr-58QwjZf}_^MYPE{Pt%wW7m7p!+02LpTSv8;gt`w$FGA0tj}L`Zk}axHAzlm&>qcK;eenc`%$S18m~uSy zo;b0ENRU>B88RXZ}CBR!6Zm6d1%xRep>HS*ZRrrF|uOh3>QVJK){U+Eo+Vf$JR@A;Ho) zyidRZdX9&K_|IL{5~D>6aXAe0G1`N1XojAh7386EJnlB2se|8+S<#8DubpZX#9GiO zM(>3eu6n^lC~0hMvAsBa$BhHc+h!=z&q<6a%p4U1eltcdplc)$yiDX9mCb=~3rUXi zS3@d|Xwex_uuGtck$9z`T2_H%Ih61ya<(skw8`jW`oe@#%(A>23Fj#*lP&^6Qf1}q zRz}hm-2|j`ftVuviSBnN!B7G5ro-7GU_{=imYeD`>tclTRj?8$_>&nrOX0j?g^^8~ z&hWFgamOjL*aWP7;+YQLjD_l?gEMsewu`Thruy?mCw({%V+AA?_k=w)X!Z}m#4OQ( zFB|JR8$m&x()j9FnAu=(O*>Kfutzu#fi?rvVoKG8#a9r-Sy*WjdL7#0#(okMM$pVS z2rPRv3x7h$r^grz#vu2Kd4Ttz6Bdrx0Y%|7J_qZYTgTCvKb$kLVi81h zn-mlvQHshH!>QG5z?Ea{!dL5TGne4)KtE>a;&p2;dj4 z9l@Ycjy5A9uQ^QpxB$cN?8_aHZEfDXTk8V5m9!-aJVWQi1suVYRu^urI8+;yx_QnC z5)<67R{Oo)=LJBn1Zvm2-CLaiL-golA;d-uT5Y?&f%kCU3kz@he|R${8IsS-1=}2x zR&m>Gtth`MPC!B1>nO*>t!9;+=IShGEn&lUWTRvJuGdIy`q8CvmDqKXon4R3bo97Z zdSRanmm@)>`{P?cT2wcpFT|tG349e8p(`&3)hsi6!(=lF|D52P>i3r(px`Ou2Pf>^ zlF66AJj~1j>+%JqYzakFpF4k|5T9---4EO^Cg?`&zu`5&oQVnAlm?gy20aSWJMN5U z0xE>TileFB-ViZEG&U3EV*Ws3>|~UPX_sl-m)}yXsc~+DJ7%T%J2!AjtYQ$Osbkht z(a${z3fsP-MZi|%yykL10YxlMuxS$I%~f`=Jw|8%>u|w4qd~dLor%_p^`ebLTAR;>Ke{n-uW zD<+Mw>E#HGa2$~#3L5vFhTdTHNKeAAIqkg?yTd z{`h9_x^S))SY-Q@YXZ!!Rshe(07<(|HL22M_+8vF&N>7_s}LYrP-^4}qTCA_Oy~eRhq&KPbRkDZ21<8!xyg z>Z)VhZ@dk4n|`rrXnoaIJB!Vs(z}wu98nq3(tQTmrk!TRsjtq{fQA zJrr)P1263d8d?5;tL}vnCkohtG~c=x&)nO4E`dBT5Y2a?J`j(s} zF@1et#)ZLE)njnI$e->yQ(JS2319G8I)AMOAk_tiRUUWwh+Xqina6BQj}Jzv{)iF8 zDA~_I9x|<8BkRWX{uloFy|jV(BuIw#!t z0sLqpEuJyOW=w(Fegu3SX+&aAL>z=^j1+37MXi5J7U3wNYQYpx`F4{GuPd_#pGn;r zUv0;le%pGM!mc=ltV?}IA$sG0lPz8(c5RC{JLuRu2JR+ekN&mec;HS^P{84l zUB1p4R1;y%m68Bc2nLbAUfkeKl1hV(2mG^|9ojG|%Qaj1IbldfEEE)%9e8m&1KwgE zE3~A41BcCdUD2obC8HQ%d_ZN;#GA7=$=`M8Q-{o+zmmpNCX4>3X8Gjd%WPd+L?Ugm z)~a#l5*m@jtoHym-o-K`t++o-D1}rUyz=37pCt4WP%Z6Rz}53~hI9n&^|A!$0i5sY zH~}VRPEEa9Tyf#ju-VkEQQJA{^z_&GezhPT6utPs1RbIjO-4mh42?Y|l}rXoIinfA?yUDcLV>_%L-OU#5-{S4N9tyNU_C4NiS8IY<>t5!eG~_uE5rQ|03%u$x=o*iH4qY0eE~os?Ski z4&j?LXoJvK64ZYxt{&_gh|8-qEK95_1RI%04$uxt1oH5}iBF=Gp$dFkW*4(nlIF5! zL?FaWfDD0Z(f{@vCjufPd^S3+=0KYyH~Rf|j$G^2co~b|vQ)bR2QF$zN#qSX0mG`q zM?!&19I6(#45Wb%wlSN(XHr1XF)ulvV?yONi=?!<-+LfP78{O1 zu?(uZ6hy@EV5^-G^u}R97h+UjAPSv-Xg!gO7N8F{$PgLJwFq3cy7C5p?_tS{OZ7>cq5h1Pln_Dg;xQZ51jcX z3vsjTl{YpVunKP3D?d$zpw5>itgT* z?0Xj&@{|y2uOUtuwrKlo?KO4nc{g))Zx9WEnBZ=%Yy#u-F`^woZGd1N&0X&J{g>Py zTa@=yzbU_-*?BgO`wG#be-=1TyY4K>Vuc<#4QiY=4?MS zKBaW{k?$+ETN;xqOaK9rCTB=yF^RJ}{K%=1T|osZ)_$}-GM8K=Pv#cDQ2yyK#rFR+ z*#^ceyoz9ldU~qF%R*g?k%L(kExKA7U7D;?E%gt|ABf3qEb!2o@)6SeJZNPvY9*() zqv|L1f|>IVkpD3Jdd^T-IcmA{7~g;)HRo|-80hS>8K}aj7ivPLq8i@Z>_hEmiEMTX zqs$4MB0@hYF@EFYD}m@|D)2#j?2B7)hU7&UKiZj-L?KwsS^BH+U z4sCr#gB9`tN5cn}sXbPb-D+gjMPboEXp;7=nYb{li$XZW?XA_2UW8UP$re-TSGrcu zHrewB7%eEVY?g6&1dfme?DPluLwJRTwSoiX2xz~f$XJzck`_XHjrlW-XBW*0jq(er z=@wb%q2J?K-Q`pm;|@ZVxzie&7c*elC+S6~P)Q((FJe2T4h|0lW6ItOx{(~DIdevw zr^oFveJYh-d^c!ve#6!WVHt&N#X1UsgoB4hL$Ck`3E7~_cZhk#Em6x*m$ z(WWF_TSX6YNSI_un8--U!9`dlhf_3Nr895lWhYSf3)s3+6ZoYrG^-Ada5zn+o5R!V zEd*}&cFn_=T5No<=KNy)>~;lKb{tNx?Xh*Y!*1Gk0Q@GcIdeNCto;-~qttcN1wtFe zmD0;}18M|!8$N+>I*Rg2a)p?~?O&aBubWJqHAJ#CQlcPdWlXMmfbP=Jm%fm;j(5^kY$OffedH|QNi%a0zahjN*;iS=N{mCGV2yp z(zBBsL(HU-ag?7#30vLZR}LKY0i8+bw{RR0?|tjs9zub{^}4HzwEbXS4_ zquq`1mLXA4;&6FMD{w#*);igpYw-@AXC>eC#coadKZhdwHJmd8PfOHFWb#2#7@!(! z>;8?Lr~4b)Q15R80${|8)c8fi^apJ*ykR5#*D)YMePpw_T%K!;E?lfuVU|T>lh<#xq%wueQIn?o(0Lx1d{Z8v1&1VzO@mCZr4B?MP{(~}xx#sVqF((qW*-d6fNSR`&yPo~>9>Q@Tzbd%wu~%t zfh;nC1&n_#-~vWhSL22vr}?U)&=o{9HCW3hI^vjnoizZN-MUo6qXK;Bs(xtPhjYNNkcsRgn6k0`#CgQn~ol$){=4%Ek7@?>Ou zg&-m=dQeY;&EZckA`PJ8o@@5-sPrEDR=E6y@o%ju6Z2vgHV=98OO2gUXrcSY6={<8 zZ}P0VKyz??ZLLL+)I@(qj<`PdQel5rtD}R1;uc5E%fPVP&;T=%tW}9T1cNOpDy|VJ zuc)?8jI5256(dviNb!BED>KuO2sT%Y^ObR7mdTTt@&LUUwr+yz`7D8r&bH&?AG{9H9W*M+Sa#fr zob2x; zS$=yWT~|i(&$&O%BLntRC2eCI7(B!)=gDZcfJQlEgLqaiLx|+bzge!GLmzfGgMsk{ zUYr~Jud&0aAR)hJ%2+uRL(rVEa9Js->DEyzvqvGo5%YlT8@KE}c?`@!{gzIbOP!3O zl}t|vgT2x1yWlEB9@U^8SPEHBO^|74uw5gWK_N+XBPHHs+UlAjmG-c^`Iln*%WsEoZ(CtmtI>tn7DnnZ*@9{K)N-;FGuPdjHQ(Vdyi=}{#on~-H9*cPLd}kB0@!6Fr*YVcm$iC-w*dw1xhF2J zMJ$W}4rPfFTmGXjhdr1s%<1&WU(}d7U zWV>6MiV%V~Tu)nixg@`Av;*P!ExtIjfH8f-Fii^!M(O@UDo^Db;T!P;#ZQ zj6D;4s$`_DJC_+b&}Fi#J*In{vDJAI2DRU%tZ{q3AcTgTY5KfD*cnDJIs`)~@pD6O zuk|%0L@m~NL`lu(eiyzQ_A!lXdznxJn4h<;C29K5aVa>tfHcrjcbF#&`y?92BLVXo zON-S@=se%=4CW)mb|%<_*I$iEmL%p8vC+MRD zkM|$l|2uEze_HKH2mn}`**gATtOhBU;)6+o>`H0>M{9hW02^5H>9PvMNp>li( zQ;UD-xb**XA6m|_s+RxeFQMZ6PlLojdF6EfJUpOZ<@jJ0pp$Z9OsKz{0073{bM9}( K=3B%+qyGg=u>-dN From 36b766da9a214a43539db9a17aa6f8b47dae53cd Mon Sep 17 00:00:00 2001 From: yabwon Date: Mon, 7 Dec 2020 20:43:40 +0100 Subject: [PATCH 3/3] macroArray, ver. 0.8 Two new macros added: - `%zipArrays()` - `%QzipArrays()` Documentation updated. --- packages/macroarray.md | 313 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) diff --git a/packages/macroarray.md b/packages/macroarray.md index f319d5b..c55a304 100644 --- a/packages/macroarray.md +++ b/packages/macroarray.md @@ -10,6 +10,8 @@ * [`%do_over3()` macro](#do-over3-macro) * [`%make_do_over()` macro](#make-do-over-macro) * [`%mcHashTable()` macro](#mchashtable-macro) + * [`%QzipArrays()` macro](#qziparrays-macro) + * [`%zipArrays()` macro](#ziparrays-macro) * [License](#license) --- @@ -1520,6 +1522,317 @@ run; --- +## >>> `%QzipArrays()` macro: <<< ####################### + +The zipArrays() and QzipArrays() macros +allow to use a function on elements of pair of +macro arrays. + +For two macroarrays the corresponding +elements are taken and the macro applies a function, provided by user, +to calculate result of the function on taken elements. + +When one of the arrays is shorter then elements are, by default, +"reused" starting from the beginning. But this behaviour can be altered. +See examples for the details. + +By default newly created macroarray name is concatenation +of first 13 characters of names of arrays used to create the new one, +e.g. if arrays names are `abc` and `def` then the result name is `abcdef`, +if arrays names are `abcd1234567890` and `efgh1234567890` then the result +name is `abcd123456789efgh123456789` + +The `zipArrays()` returns unquoted value [by `%unquote()`]. +The `QzipArrays()` returns quoted value [by `%superq()`]. + +See examples below for the details. + +The `%QzipArrays()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%QzipArrays( + first + ,second + <,function=> + <,operator=> + <,argBf=> + <,argMd=> + <,argAf=> + <,format=> + <,result=> + <,macarray=> + <,reuse=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `first` - *Required*, a space separated list of texts. + +2. `second` - *Required*, a space separated list of texts. + +* `function = cat` - *Optional*, default value is `cat`, + a function which will be applied + to corresponding pairs of elements of + the first and the second list. + +* `operator =` - *Optional*, default value is empty, + arithmetic infix operator used with elements + the first and the second list. The first + list is used on the left side of the operator + the second list is used on the right side + of the operator. + +* `argBf =` - *Optional*, default value is empty, + arguments of the function inserted + *before* elements the first list. + If multiple should be comma separated. + +* `argMd =` - *Optional*, default value is empty, + arguments of the function inserted + *between* elements the first list and + the second list. + If multiple should be comma separated. + +* `argAf =` - *Optional*, default value is empty, + arguments of the function inserted + *after* elements the second list. + If multiple should be comma separated. + +* `format=` - *Optional*, default value is empty, + indicates a format which should be used + to format the result, does not work when + the `operator=` is used. + +* `result=` - *Optional*, default value is empty, + indicates a name of newly created macroarray, + by default created macroarray name is concatenation + of first 13 characters of names of arrays used + to create the new one. + +* `macarray=N` - *Optional*, default value is `N`, + if set to `Y`/`YES` then a macro, named with + the array name, is compiled to create convenient + envelope for multiple ampersands, see the + `%array()` macro for details. + +* `reuse=Y` - *Optional*, default value is `Y`, + when one of the arrays is shorter then elements + are *reused* starting from the beginning. + If `CP` then function is executed on the *Cartesian + product* of arrays elements. Any other value will + cut the process with the end of the shorter array. + See examples for the details. + +### EXAMPLES AND USECASES: #################################################### + +See examples in `%zipArrays()` help for the details. + +--- + +## >>> `%zipArrays()` macro: <<< ####################### + +The zipArrays() and QzipArrays() macros +allow to use a function on elements of pair of +macro arrays. + +For two macroarrays the corresponding +elements are taken and the macro applies a function, provided by user, +to calculate result of the function on taken elements. + +When one of the arrays is shorter then elements are, by default, +"reused" starting from the beginning. But this behaviour can be altered. +See examples for the details. + +By default newly created macroarray name is concatenation +of first 13 characters of names of arrays used to create the new one, +e.g. if arrays names are `abc` and `def` then the result name is `abcdef`, +if arrays names are `abcd1234567890` and `efgh1234567890` then the result +name is `abcd123456789efgh123456789` + +The `zipArrays()` returns unquoted value [by `%unquote()`]. +The `QzipArrays()` returns quoted value [by `%superq()`]. + +See examples below for the details. + +The `%zipArrays()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%zipArrays( + first + ,second + <,function=> + <,operator=> + <,argBf=> + <,argMd=> + <,argAf=> + <,format=> + <,result=> + <,macarray=> + <,reuse=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `first` - *Required*, a space separated list of texts. + +2. `second` - *Required*, a space separated list of texts. + +* `function = cat` - *Optional*, default value is `cat`, + a function which will be applied + to corresponding pairs of elements of + the first and the second list. + +* `operator =` - *Optional*, default value is empty, + arithmetic infix operator used with elements + the first and the second list. The first + list is used on the left side of the operator + the second list is used on the right side + of the operator. + +* `argBf =` - *Optional*, default value is empty, + arguments of the function inserted + *before* elements the first list. + If multiple should be comma separated. + +* `argMd =` - *Optional*, default value is empty, + arguments of the function inserted + *between* elements the first list and + the second list. + If multiple should be comma separated. + +* `argAf =` - *Optional*, default value is empty, + arguments of the function inserted + *after* elements the second list. + If multiple should be comma separated. + +* `format=` - *Optional*, default value is empty, + indicates a format which should be used + to format the result, does not work when + the `operator=` is used. + +* `result=` - *Optional*, default value is empty, + indicates a name of newly created macroarray, + by default created macroarray name is concatenation + of first 13 characters of names of arrays used + to create the new one. + +* `macarray=N` - *Optional*, default value is `N`, + if set to `Y`/`YES` then a macro, named with + the array name, is compiled to create convenient + envelope for multiple ampersands, see the + `%array()` macro for details. + +* `reuse=Y` - *Optional*, default value is `Y`, + when one of the arrays is shorter then elements + are *reused* starting from the beginning. + If `CP` then function is executed on the *Cartesian + product* of arrays elements. Any other value will + cut the process with the end of the shorter array. + See examples for the details. + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Simple concatenation of elements: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%array(a[*] x1-x3 (1:3)) +%array(b[*] x1-x5 (11:15)) + +%put _user_; + +%zipArrays(a, b); +%put _user_; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** Shorter list is "reused": +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%array(a[6] (1:6)) +%array(b[3] (10 20 30)) + +%zipArrays(a, b, result=A_and_B, macarray=Y); +%put %do_over(A_and_B); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Use of the `operator=`: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%array(c[0:4] (000 100 200 300 400)) +%array(d[2:16] (1002:1016)) + +%zipArrays(c, d, operator=+, result=C_plus_D, macarray=Y); +%put (%do_over(C_plus_D)); + +%put %C_plus_D(1); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** If one of array names is empty or an array does not exist: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%array(a[6] (1:6)) +%array(b[3] (10 20 30)) + +%zipArrays(a, ); +%zipArrays(, b); + +%zipArrays(a, z); +%zipArrays(z, b); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 5.** Use of the `function=`: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%array(one[3] A B C, vnames=Y) +%array(two[5] p q r s t, vnames=Y) + +%zipArrays( + one +,two +,function = catx +,argBf = %str( ) +,format = $quote. +,macarray=Y +) +%put %do_over(onetwo); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 6.** To reuse or not to reuse, or maybe Cartesian product: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%array(e[3] (10 20 30)) +%array(f[2] (5:6)) + +%zipArrays(e, f, reuse=n, operator=+, macarray=Y, result=_noReuse); +%zipArrays(e, f, reuse=y, operator=+, macarray=Y, result=_yesReuse); +%zipArrays(e, f, reuse=cp, operator=+, macarray=Y, result=_cartProdReuse); + +%put %do_over(_noReuse); +%put %do_over(_yesReuse); +%put %do_over(_cartProdReuse); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 7.** Use middle argument: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%array(yr[3] (2018:2020)) +%array(mth[12] (1:12)) + +%zipArrays(mth, yr, argMd=5, function=MDY, format=date11., macarray=Y); +%put %do_over(mthyr); + +%zipArrays(mth, yr, argMd=5, function=MDY, format=date11., macarray=Y, reuse=cp); +%put %do_over(mthyr); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + ## License #################################################################### Copyright (c) Bartosz Jablonski, since January 2019