From c1f60d112ee5ef33b95225421de2796e919c305b Mon Sep 17 00:00:00 2001 From: yabwon Date: Tue, 3 Nov 2020 20:40:11 +0100 Subject: [PATCH] SAS Packages Framework, version 20201103 **SAS Packages Framework**, version 20201103 Bugfix for `SAS 9.4M5` related to the following Problem Note: `https://support.sas.com/kb/62/037.html` All macros using MD%() function should now run on M5. Packages recompiled with the new version of the SAS Packages Framework: - SQLinDS (version 2.2) - macroArray (version 0.7) - The `%mcHashTable()` macro was added in the package. - DFA (version 0.2) - BasePlus (version 0.9) - New parameter `mcArray=` added to the `%getVars()` macro. - New macros added:`%dedupListS()`, `%dedupListC()`, `%dedupListP()`, `%dedupListX()`, and `%QdedupListX()` - dynMacroArray (version 0.2) --- README.md | 10 ++-- SPF/SPFinit.md | 18 +++---- SPF/SPFinit.sas | 81 +++++++++++++++++++------------ packages/README.md | 10 ++-- packages/SHA256_for_packages.txt | 6 ++- packages/baseplus.md | 4 +- packages/baseplus.zip | Bin 52337 -> 52400 bytes packages/dfa.zip | Bin 28823 -> 28894 bytes packages/dynmacroarray.zip | Bin 11780 -> 11848 bytes packages/macroarray.md | 4 +- packages/macroarray.zip | Bin 35232 -> 35298 bytes packages/sqlinds.md | 4 +- packages/sqlinds.zip | Bin 11670 -> 11741 bytes 13 files changed, 80 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index c96ed22..5d763f3 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ Currently the following packages are available (see the `./packages` directory): set %SQL(select * from sashelp.class order by age); run; ``` -SHA256 digest for SQLinDS: 135DC50C0412B8CEAF6D5349B8A203C0ADB23D4F5C2680B6A35FD2E5482B6C49 +SHA256 digest for SQLinDS: 9788D7ED2863B2B0A575EB9AB07B5F88AE79A56D9ED9B3B4F15A02E34DF7AA64 [Documentation for SQLinDS](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/sqlinds.md "Documentation for SQLinDS") @@ -92,7 +92,7 @@ SHA256 digest for MacroCore: A23C29529F3CE7D0C8BEE9545C5D22D5B5594907547374A5135 - **DFA** (Dynamic Function Arrays)\[0.2\], contains set of macros and FCMP functions which implement: a dynamically allocated array, a stack, a fifo queue, an ordered stack, and a priority queue, run `%helpPackage(DFA,createDFArray)` to find examples. -SHA256 digest for DFA: E67A0863992722A5F535F56E14EF8D19A55F74FB374447BF11B5ED74029C29CB +SHA256 digest for DFA: 069BD1BD482634F2D6EB3EFF68E7F8569D2F2C232BFF5D7D44BBD839D8F224A4 - **macroArray**\[0.7\], implementation of an array concept in a macrolanguage, e.g. @@ -114,7 +114,7 @@ SHA256 digest for DFA: E67A0863992722A5F535F56E14EF8D19A55F74FB374447BF11B5ED740 which = 1:H:2 ); ``` -SHA256 digest for macroArray: 75056F508E96296DC50096BBB054C58334DB913AD37885958099EDCE0C330CB2 +SHA256 digest for macroArray: 0DB634148FA104F4AD9D6A522466D605118EE8696774DC1BB7C4145ED3BB9B9B [Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray") @@ -133,12 +133,12 @@ format x bool.; %put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_); ``` -SHA256 digest for BasePlus: 9AC9F71DBC890068BBD972311BEF3F0D1CA100C3F80A5C34C56B9646D04BFEFB +SHA256 digest for BasePlus: 612095260F73D00A08D64C49FC57F4D5BEE0AFBA9D8194AE63EA5BCF7A15E068 [Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus") - **dynMacroArray**\[0.2\], set of macros (wrappers for a hash table) emulating dynamic array in the data step (macro predecessor of DFA) -SHA256 digest for dynMacroArray: 694AACE925B7F4E149C3B90383F56370ED76233D8F5040713D66C1F3A4E414FE +SHA256 digest for dynMacroArray: CA9BFF0747019BA6FDB2107C60F58D2D6C5E686EADFA4E1C6A81BC469CBC9F4A ### ====== diff --git a/SPF/SPFinit.md b/SPF/SPFinit.md index 29bfbcf..b7e9d97 100644 --- a/SPF/SPFinit.md +++ b/SPF/SPFinit.md @@ -19,7 +19,7 @@ A **SAS package** is an automatically generated, single, stand alone *zip* file The *purpose of a package* is to be a simple, and easy to access, code sharing medium, which will allow: on the one hand, to separate the code complex dependencies created by the developer from the user experience with the final product and, on the other hand, reduce developer's and user's unnecessary frustration related to a remote deployment process. -In this repository we are presenting the **SAS Packages Framework** which allows to develop and use SAS packages. The latest version of SPF is **`20201101`**. +In this repository we are presenting the **SAS Packages Framework** which allows to develop and use SAS packages. The latest version of SPF is **`20201103`**. **To get started with SAS Packages** try this [**`Getting Started with SAS Packages`**](https://github.com/yabwon/SAS_PACKAGES/blob/main/SPF/Documentation/Getting_Started_with_SAS_Packages.pdf "Getting Started with SAS Packages") presentation (see the `./SPF/Documentation` directory). @@ -37,7 +37,7 @@ After assigning the directory do not change them when using the SPF since it may ## This is short help information for the `installPackage` macro -------------------------------------------------------------------------------------------- - Macro to install SAS packages, version `20201101` + Macro to install SAS packages, version `20201103` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -94,7 +94,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `helpPackage` macro ------------------------------------------------------------------------------- - Macro to get help about SAS packages, version `20201101` + Macro to get help about SAS packages, version `20201103` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -164,7 +164,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `loadPackage` macro ------------------------------------------------------------------------------- - Macro to *load* SAS packages, version `20201101` + Macro to *load* SAS packages, version `20201103` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -237,7 +237,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `loadPackageS` macro ------------------------------------------------------------------------------- - Macro wrapper for the loadPackage macro, version `20201101` + Macro wrapper for the loadPackage macro, version `20201103` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -286,7 +286,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `unloadPackage` macro ------------------------------------------------------------------------------- - Macro to unload SAS packages, version `20201101` + Macro to unload SAS packages, version `20201103` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -351,7 +351,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `listPackages` macro ----------------------------------------------------------------------------------------- - Macro to list available SAS packages, version `20201101` + Macro to list available SAS packages, version `20201103` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -392,7 +392,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `verifyPackage` macro ------------------------------------------------------------------------------- - Macro to verify SAS package with it hash digest, version `20201101` + Macro to verify SAS package with it hash digest, version `20201103` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -445,7 +445,7 @@ filename packages "C:/SAS_PACKAGES"; %* set-up a directory for packages; ## This is short help information for the `generatePackage` macro ------------------------------------------------------------------------------- - Macro to generate SAS packages, version `20201101` + Macro to generate SAS packages, version `20201103` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating diff --git a/SPF/SPFinit.sas b/SPF/SPFinit.sas index c751aac..851070d 100644 --- a/SPF/SPFinit.sas +++ b/SPF/SPFinit.sas @@ -42,7 +42,7 @@ - to unload, or - to generate SAS packages. - Version 20201101. + Version 20201103. See examples below. A SAS package is a zip file containing a group of files @@ -81,7 +81,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to load SAS package, version 20201101. Run %loadPackage() for help info.' +des = 'Macro to load SAS package, version 20201103. Run %loadPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -96,7 +96,7 @@ des = 'Macro to load SAS package, version 20201101. Run %loadPackage() for help %put ### This is short help information for the `loadPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to *load* SAS packages, version `20201101` #; + %put # Macro to *load* SAS packages, version `20201103` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -179,7 +179,8 @@ des = 'Macro to load SAS package, version 20201101. Run %loadPackage() for help %let msglevel_tmp = %sysfunc(getoption(msglevel)); options NOnotes NOsource ls=MAX ps=MAX NOfullstimer NOstimer msglevel=N; %local _PackageFileref_; - %let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); + /* %let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); */ + data _null_; call symputX("_PackageFileref_", "P" !! put(MD5("%lowcase(&packageName.)"), hex7. -L), "L"); run; filename &_PackageFileref_. &ZIP. /* put location of package myPackageFile.zip here */ @@ -250,7 +251,7 @@ des = 'Macro to load SAS package, version 20201101. Run %loadPackage() for help */ )/secure /*** HELP END ***/ -des = 'Macro to unload SAS package, version 20201101. Run %unloadPackage() for help info.' +des = 'Macro to unload SAS package, version 20201103. Run %unloadPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -265,7 +266,7 @@ des = 'Macro to unload SAS package, version 20201101. Run %unloadPackage() for h %put ### This is short help information for the `unloadPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to unload SAS packages, version `20201101` #; + %put # Macro to unload SAS packages, version `20201103` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -338,8 +339,9 @@ des = 'Macro to unload SAS package, version 20201101. Run %unloadPackage() for h %let msglevel_tmp = %sysfunc(getoption(msglevel)); options NOnotes NOsource ls=MAX ps=MAX msglevel=N; %local _PackageFileref_; - %let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); - + /* %let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); */ + data _null_; call symputX("_PackageFileref_", "P" !! put(MD5("%lowcase(&packageName.)"), hex7. -L), "L"); run; + filename &_PackageFileref_. &ZIP. /* put location of package myPackageFile.zip here */ "&path./%lowcase(&packageName.).&zip." %unquote(&options.) @@ -388,7 +390,7 @@ des = 'Macro to unload SAS package, version 20201101. Run %unloadPackage() for h */ )/secure /*** HELP END ***/ -des = 'Macro to get help about SAS package, version 20201101. Run %helpPackage() for help info.' +des = 'Macro to get help about SAS package, version 20201103. Run %helpPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -403,7 +405,7 @@ des = 'Macro to get help about SAS package, version 20201101. Run %helpPackage() %put ### This is short help information for the `helpPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to get help about SAS packages, version `20201101` #; + %put # Macro to get help about SAS packages, version `20201103` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -481,7 +483,8 @@ des = 'Macro to get help about SAS package, version 20201101. Run %helpPackage() %let msglevel_tmp = %sysfunc(getoption(msglevel)); options NOnotes NOsource ls=MAX ps=MAX msglevel=N; %local _PackageFileref_; - %let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); + /* %let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); */ + data _null_; call symputX("_PackageFileref_", "P" !! put(MD5("%lowcase(&packageName.)"), hex7. -L), "L"); run; filename &_PackageFileref_. &ZIP. /* put location of package myPackageFile.zip here */ @@ -512,7 +515,7 @@ TODO: - add MD5(&packageName.) value hash instead "package" word in filenames [DONE] */ -/* Macros to install SAS packages, version 20201101 */ +/* Macros to install SAS packages, version 20201103 */ /* A SAS package is a zip file containing a group of files with SAS code (macros, functions, data steps generating data, etc.) wrapped up together and %INCLUDEed by @@ -528,7 +531,7 @@ TODO: /secure minoperator /*** HELP END ***/ -des = 'Macro to install SAS package, version 20201101. Run %%installPackage() for help info.' +des = 'Macro to install SAS package, version 20201103. Run %%installPackage() for help info.' ; %if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then %do; @@ -543,7 +546,7 @@ des = 'Macro to install SAS package, version 20201101. Run %%installPackage() fo %put ### This is short help information for the `installPackage` macro #; %put #--------------------------------------------------------------------------------------------#;; %put # #; - %put # Macro to install SAS packages, version `20201101` #; + %put # Macro to install SAS packages, version `20201103` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -632,9 +635,12 @@ des = 'Macro to install SAS package, version 20201101. Run %%installPackage() fo %put ; %put *** %lowcase(&packageName.) start *****************************************; - %local in out; - %let in = i%sysfunc(md5(&packageName.),hex7.); - %let out = o%sysfunc(md5(&packageName.),hex7.); + %local in out _IOFileref_; + data _null_; call symputX("_IOFileref_", put(MD5("%lowcase(&packageName.)"), hex7. -L), "L"); run; + %let in = i&_IOFileref_.; + %let out = o&_IOFileref_.; + /* %let in = i%sysfunc(md5(&packageName.),hex7.); */ + /* %let out = o%sysfunc(md5(&packageName.),hex7.); */ /*options MSGLEVEL=i;*/ %if %upcase(&packageName.) in (SPFINIT SASPACKAGEFRAMEWORK SASPACKAGESFRAMEWORK) %then @@ -836,7 +842,7 @@ des = 'Macro to install SAS package, version 20201101. Run %%installPackage() fo /* Macro to list SAS packages in packages folder. - Version 20201101 + Version 20201103 A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -856,7 +862,7 @@ des = 'Macro to install SAS package, version 20201101. Run %%installPackage() fo %macro listPackages()/PARMBUFF -des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20201101.' +des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20201103.' ; %if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then %do; @@ -871,7 +877,7 @@ des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HE %put ### This is short help information for the `listPackages` macro #; %put #-----------------------------------------------------------------------------------------#;; %put # #; - %put # Macro to list available SAS packages, version `20201101` #; + %put # Macro to list available SAS packages, version `20201103` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -1002,7 +1008,7 @@ options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; /* Macro to generate SAS packages. - Version 20201101 + Version 20201103 A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -1034,7 +1040,7 @@ options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; if set to DEF then the !SASROOT/sasv9.cfg is used */ )/secure minoperator /*** HELP END ***/ -des = 'Macro to generate SAS packages, version 20201101. Run %generatePackage() for help info.' +des = 'Macro to generate SAS packages, version 20201103. Run %generatePackage() for help info.' ; %if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then %do; @@ -1049,7 +1055,7 @@ des = 'Macro to generate SAS packages, version 20201101. Run %generatePackage() %put ### This is short help information for the `generatePackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to generate SAS packages, version `20201101` #; + %put # Macro to generate SAS packages, version `20201103` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -1219,7 +1225,8 @@ filename &_LIC_. "&filesLocation./license.sas" lrecl = 1024; different file reference for each package while loading package with %loadPackage() macro */ -%let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); +/* %let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); */ +data _null_; call symputX("_PackageFileref_", "P" !! put(MD5("%lowcase(&packageName.)"), hex7. -L), "L"); run; /* test if version is a number */ data _null_; @@ -1571,7 +1578,11 @@ data _null_; put ' )/secure; '; put ' %PUT ** NOTE: Package ' "&packageName." ' loaded in ICE mode **; '; put ' %local _PackageFileref_; '; - put ' %let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); '; + put ' /* %let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); */ '; + put ' data _null_; '; + put ' call symputX("_PackageFileref_", "P" !! put(MD5("%lowcase(&packageName.)"), hex7. -L), "L"); '; + put ' run; '; + put ' filename &_PackageFileref_. &ZIP. '; put ' "&path./%lowcase(&packageName.).&zip." %unquote(&options.) '; put ' ; '; @@ -2317,7 +2328,7 @@ data _null_; put ' end ; '; %end; - put 'put "***"; put "* SAS package generated by generatePackage, version 20201101 *"; put "***";'; + put 'put "***"; put "* SAS package generated by generatePackage, version 20201103 *"; put "***";'; put 'run; ' /; @@ -2755,6 +2766,9 @@ run; /* each test is executed with autoexec loading the package */ data _null_; + /* break if no data */ + if NOBS = 0 then stop; + file "./autoexec.sas"; put "filename packages '&packages.';" /; @@ -2768,6 +2782,9 @@ data _null_; put " path=&filesLocation.)" /; put '%loadpackage'"(&packageName.,"; put " path=&filesLocation., lazyData=*)" /; + + stop; + set &filesWithCodes. nobs = NOBS; run; %local t; @@ -2939,7 +2956,7 @@ TODO: (in Polish) */ )/secure /*** HELP END ***/ -des = 'Macro to load multiple SAS packages at one run, version 20201101. Run %loadPackages() for help info.' +des = 'Macro to load multiple SAS packages at one run, version 20201103. Run %loadPackages() for help info.' parmbuff ; %if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then @@ -2955,7 +2972,7 @@ parmbuff %put ### This is short help information for the `loadPackageS` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro wrapper for the loadPackage macro, version `20201101` #; + %put # Macro wrapper for the loadPackage macro, version `20201103` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -3039,7 +3056,7 @@ parmbuff hashing_file() function, SAS 9.4M6 */ )/secure /*** HELP END ***/ -des = 'Macro to verify SAS package with the hash digest, version 20201101. Run %verifyPackage() for help info.' +des = 'Macro to verify SAS package with the hash digest, version 20201103. Run %verifyPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -3054,7 +3071,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20201101. Run % %put ### This is short help information for the `verifyPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to verify SAS package with it hash digest, version `20201101` #; + %put # Macro to verify SAS package with it hash digest, version `20201103` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -3118,7 +3135,9 @@ des = 'Macro to verify SAS package with the hash digest, version 20201101. Run % %let msglevel_tmp = %sysfunc(getoption(msglevel)); options NOnotes NOsource ls=MAX ps=MAX NOfullstimer NOstimer msglevel=N; %local _PackageFileref_; - %let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); + /* %let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); */ + data _null_; call symputX("_PackageFileref_", "P" !! put(MD5("%lowcase(&packageName.)"), hex7. -L), "L"); run; + filename &_PackageFileref_. /* put location of package myPackageFile.zip here */ diff --git a/packages/README.md b/packages/README.md index 76433c1..d1a4880 100644 --- a/packages/README.md +++ b/packages/README.md @@ -18,7 +18,7 @@ data class; WH = weight + height; run; ``` -SHA256 digest for SQLinDS: 135DC50C0412B8CEAF6D5349B8A203C0ADB23D4F5C2680B6A35FD2E5482B6C49 +SHA256 digest for SQLinDS: 9788D7ED2863B2B0A575EB9AB07B5F88AE79A56D9ED9B3B4F15A02E34DF7AA64 [Documentation for SQLinDS](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/sqlinds.md "Documentation for SQLinDS") @@ -59,7 +59,7 @@ data _null_; end; run; ``` -SHA256 digest for DFA: E67A0863992722A5F535F56E14EF8D19A55F74FB374447BF11B5ED74029C29CB +SHA256 digest for DFA: 069BD1BD482634F2D6EB3EFF68E7F8569D2F2C232BFF5D7D44BBD839D8F224A4 --- @@ -82,7 +82,7 @@ SHA256 digest for DFA: E67A0863992722A5F535F56E14EF8D19A55F74FB374447BF11B5ED740 which = 1:H:2 ); ``` -SHA256 digest for macroArray: 75056F508E96296DC50096BBB054C58334DB913AD37885958099EDCE0C330CB2 +SHA256 digest for macroArray: 0DB634148FA104F4AD9D6A522466D605118EE8696774DC1BB7C4145ED3BB9B9B [Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray") @@ -102,7 +102,7 @@ format x bool.; %put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_); ``` -SHA256 digest for BasePlus: 9AC9F71DBC890068BBD972311BEF3F0D1CA100C3F80A5C34C56B9646D04BFEFB +SHA256 digest for BasePlus: 612095260F73D00A08D64C49FC57F4D5BEE0AFBA9D8194AE63EA5BCF7A15E068 [Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus") @@ -110,6 +110,6 @@ SHA256 digest for BasePlus: 9AC9F71DBC890068BBD972311BEF3F0D1CA100C3F80A5C34C56B - **dynMacroArray**\[0.2\], set of macros (wrappers for a hash table) emulating dynamic array in the data step (macro predecessor of DFA) -SHA256 digest for dynMacroArray: 694AACE925B7F4E149C3B90383F56370ED76233D8F5040713D66C1F3A4E414FE +SHA256 digest for dynMacroArray: CA9BFF0747019BA6FDB2107C60F58D2D6C5E686EADFA4E1C6A81BC469CBC9F4A --- diff --git a/packages/SHA256_for_packages.txt b/packages/SHA256_for_packages.txt index 123c010..22bf4e5 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,5 +1,9 @@ /* 20201103 */ -BasePlus: 9AC9F71DBC890068BBD972311BEF3F0D1CA100C3F80A5C34C56B9646D04BFEFB +BasePlus: 612095260F73D00A08D64C49FC57F4D5BEE0AFBA9D8194AE63EA5BCF7A15E068 +DFA: 069BD1BD482634F2D6EB3EFF68E7F8569D2F2C232BFF5D7D44BBD839D8F224A4 +dynMacroArray: CA9BFF0747019BA6FDB2107C60F58D2D6C5E686EADFA4E1C6A81BC469CBC9F4A +macroArray: 0DB634148FA104F4AD9D6A522466D605118EE8696774DC1BB7C4145ED3BB9B9B +SQLinDS: 9788D7ED2863B2B0A575EB9AB07B5F88AE79A56D9ED9B3B4F15A02E34DF7AA64 /* 20201029 */ MacroCore: A23C29529F3CE7D0C8BEE9545C5D22D5B5594907547374A5135B8E5A48D7687B diff --git a/packages/baseplus.md b/packages/baseplus.md index 5ed1e98..3688e9e 100644 --- a/packages/baseplus.md +++ b/packages/baseplus.md @@ -199,10 +199,10 @@ Package contains: 32. functions quicksorthashsddv 33. functions quicksortlight -*SAS package generated by generatePackage, version 20201101* +*SAS package generated by generatePackage, version 20201103* The SHA256 hash digest for package BasePlus: -`9AC9F71DBC890068BBD972311BEF3F0D1CA100C3F80A5C34C56B9646D04BFEFB` +`612095260F73D00A08D64C49FC57F4D5BEE0AFBA9D8194AE63EA5BCF7A15E068` --- # Content description ############################################################################################ diff --git a/packages/baseplus.zip b/packages/baseplus.zip index 80c949c7fa85be01d687427eedc6ca85936e05f0..6ee37eb81b5d5d1b9fd262ed7913863f2ddb5f0d 100644 GIT binary patch delta 6030 zcmZWtbyU=0vtC#l1nJt9kOpB_X;4BsTtZ4o5s;FShFw9rVWmTAK|uthTUa_px}-!v zKte*&ySv_d&gXZ3|2${rotbCe=eIFu_S1kB=|Bn{O&|ds001BXK=Laod_t5jW(fT;nH2xmwDGennZ?+5>yef8L*hpVw%j0Uybh5?@n3dUAm< z-LPPI6MVDnPa$9==2z!MxvfWa*yD>CFhuU$+xvH()%OF zC$06R4KgRk-#;uUrI4bMJXChKtvQy@-9GOLOqX-rPq+e^lSI=JjAjOGkO`y}8Yy$y zA0}&{Y_@~Ph#d!)8fzV)f@w6N6q_=LkX+46$csOYDPc4E%4o$eGgU4Amd5t&n>5|l zdl#rCpeL%`F8|plG6O^5D9!p0%4*6XMv^&qc{Va_D@p>XpiN2LrR&{B?U1`X1-{{7 z>Eu5Jp2PRPcIYF*m{4MVI`eVPFyYN1;+~wNug;z-O78fA=8)rU_BZc=5N-;@xN`>m zsl>pu0Vt0p0g;n4-p^FO7(9iryFq$1PH&csRy*aLCzwAjAvmsjq+gW3wze8iS^7l6 zS}{lKXbI?6gOS@wvrjTx{gNh1BWx2;iktInlkp-xR{65U^1!Dz>MhLn&ZJ%jt(jCD zCmAs)=7+eKt@CtaR%i^(Y4zt!MDL3G_!q~HCywJ88k7OSJfTA{@w8L!wLnOx^2$-9 zqh$p8fY7^gk5Q)L8LUG|f%ogr<-iJOlEV52`3t5th}(}`_|%UWb`-MRDdBj-Wa z{xouL-^M-Lt*||_VZQjU&t|XMb_kaI&ac`ly+aC)Yi=J2ke@W)tD_uPGtG;jfd{So zKQ}ANZaE)r4ZrkFf6Y&(d;S&$F(pL;j@__vHmqWy}d)3_gPpe_S- zZNon6e}3Yvbq$Cr){_YV09!uncYqFnT&4vfb{<{2%&IV5wdnl`H~PuB{aQD7?jr$5 zEYI^4F}An4Wn-dw=zGKx>oV&Vva zYJa3B+^dSTlkwxPvxzOE3Pu$g;qtKK_|GQIvcVouTCSnPhzgT!0c~C5g-O*ShxlI8;zrQiSUi5B7as|J1bNh66WXU zs(8{uE;}b}9URGJyA=dj8;vFBscLGZ1+8jEiP2xztsJVS%8vtnB=mMc$N?Td#sQk& zI3ro``9FBer(05cyZTE*&>vlGXvJP@?A$+PdP0(bX7Q6|6pkeP=>X4)2NO1>oDix^Z&FBRBdgVYX`#>wynUZ~AzFr^|>gevnyj_+7nNA7u zuN`~Nf=#zv8s{9Gy&r$^siS`clO+=7nF@)eo_V;aA49`p5K5U4AmBbY9o=;)tx>_U zxzsGcP!4cFHG`(#gqzVe%ag^_BObw;Tt|LuTfa}CY#DxFW0H;1mpWTt?Q*p|xySbB zN@P1yH80g#UrLw*YWF#%=2moopiPoXvQK~e)%P3?Vi&VyRi;(efsEL%jlvUz&hH(h zYh#M+(R?}midm&d12~10$0v{A>&9G>a>HxUXC+YQ=ocsYlF8^%Ed}c!cZ6@w@mb*c zL7}6-9(R@??cwiy1pGJ;B17BBSp1y@*jjHOSfMs!>zu68B4xa~vEFMM^3K@aB-++h zU|fK?{cE&Gll(U5t$WQ}#SXq6%C7-&cP7r)PHkdqAuecL$AHf(Az)8~H2dbmq7jj@ zk@AO&Q(w+n4NKxvCRIzn6eEtQ�q5p+3q)Cr$O;Wbx)6NiLlQr!P*BcBAxe!^anN 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 Tk1MZ<5S}$efp^`G-tNBu07Ad` diff --git a/packages/dfa.zip b/packages/dfa.zip index 825dc8f4744c8f7ff0389004748e87a8567a519e..b57214aaad17f39b31a51a1d7a55e9ca3060eedc 100644 GIT binary patch delta 5304 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 delta 5166 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 diff --git a/packages/dynmacroarray.zip b/packages/dynmacroarray.zip index 3967caf91bc841eb99f8d045b5ea2ae623ba26ec..28479eee2b3e52e9a69e372cf3cb8b7bf1764925 100644 GIT binary patch delta 4309 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 delta 4255 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 diff --git a/packages/sqlinds.md b/packages/sqlinds.md index 7aec467..faa53af 100644 --- a/packages/sqlinds.md +++ b/packages/sqlinds.md @@ -46,10 +46,10 @@ Package contains: Required SAS Components: *Base SAS Software* -*SAS package generated by generatePackage, version 20200911* +*SAS package generated by generatePackage, version 20201103* The SHA256 hash digest for package SQLinDS: -`135DC50C0412B8CEAF6D5349B8A203C0ADB23D4F5C2680B6A35FD2E5482B6C49` +`9788D7ED2863B2B0A575EB9AB07B5F88AE79A56D9ED9B3B4F15A02E34DF7AA64` --- # Content description ############################################################################################ diff --git a/packages/sqlinds.zip b/packages/sqlinds.zip index 37f3a5093582de01f576e656165acb21be298f0d..60816a1c4d815c251747826434deb76d224ee3f0 100644 GIT binary patch delta 4989 zcmZu#cQhQ@x1M1}Cm~u!k3NhbBzh-$i4vpt7BxaJ7}0whEd&vD)acQ>h~9gRE{JHs zD8HL~-&^b5-+Jetz0cYE?6dYdXRYr$Uy9+9A+e?kHi#Sm0N?@mKUr21tAVipvem|* zO02&fQd~J8$zLm4K}ILyEm!~mln`Z!CxncUlHrdf3K_RR$tWh>|I9k$mOf5XouC&{ zR8z9AEPT2vS`viXS>2i(Z{baOyR~p>Yug)m01FrcqzEWAFn*^8sabxX2(BXX!sBD_ z_;4Zlja3k)82Hni#k!D%M=Lf!_QznE2&m;)-B%&(ky;7=+EamFLUc+Vck* zEoTvV1;2{woCY8!V@(=$g1gQ0$I$^+AU*E5bt>FTN4fyc2YwCRvuAW z>I>kSv*b{?V2*fZc?Q945rH_ROf|B7%(IpCr>jP;p71%u^C>4)*Zv(sTkkqo_6(aN z5!)p2PXWif6;CYJMeLtP-QvAk7`^un6d?$$Ov8{(-fUdbrtTBtLPhAr^s=n2WczLN z8;A;lH>LmKd!jopha$;gwcJl�q*0ez88&H~EY1saMpkVfpIck6r6X^8^<~ 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 delta 4962 zcmZ`-byU>PyWS<2?q15JJ7ocp2I=nZZX|^dpp>L8A&rP24FUop4H6wPCmOAzkqR}xLS1y z!!AeWE1>?~Iqf zx$*l)xI`gg&K9(eRqo5Xv%vnmXNQjqwM;t}hI@Qo2D$Xi6**r8)K$fMG2;!% z2+>v1NjwLroWLC2V{uN>qJSBTF^0NjM9n#49d7SYykJbW{+)T2d6A50|}oqVG{oBwm) zYVF2pl%D$4{;}#rK;Cww#;VJipS(RN^n>BY85A5@uM+f~!I-rJ;8c`dP^!pZi10wR zQi-Ysr=|OtWlyD>+jiL+3TO!`W|FzXWWBUwJ<3hem=OR~2!+XeTC$)o?|bXq#D<>M zXs6d+u16V|!@Qo7@KG*MRY#HV@#7t^BfNb-H1RFu9xwi)gz(PQd8=*3QzLnCwjTPT=-c2JeoC%G1 zmyE%uDvyR)zF1a1X3O98yl!w`0_WzZmGMRFE?HSjg$Ky3}q|4jej~-(D;&Wizu$~`dijvV9E4vm5z7x#V%MrTwP6zx+ zm2tu8#<$MAGEFUAw?+3>1OSi}cClsV6`kq9%C9ArlEmNLj#f-;(G6jeU?Q`ek4G&@ zCMnNTE=LPU*`T*X*P1aIcE^%r-)LwaN}O#03pj#R`f;vDdj!Im(YarntzG#_lgdQ* z&a3s%XIun)spAAOpZexy=|y^0w#V&U)LNm=-`Dj zeS+A748Z_d&Cj*v4&$)i+8__PeCwUNTBtu+l}_k^lNTnfZ7wvj@EtGAJw}Pz`6(aq z8fCKP`%63W>2sOOZgTW(u^Ndi-a`StlHu_~=}P>SpjEd~XJ+Ehp5pJk5@JDwpJVk< zKPnwrP9OzeS%RW@>1=y<90(9~1WW+Sj~+{{1Q2?s_kCelGB_eQfcvv95QMj3wN#U7 zck7^yyqDPh>Oj!nz=JHYtI_{all2(M(K%~g8SYN8eV1v}cqg&_w8J>%I)LS9WbiR7 zEzT~e?gc}YtY;AF9$nd0=#Wd>%*n)?ncInuvcR07+wW+;_%NYZ>X;B^CkjAe_zO!0 z|0>bv{MR4q6g|BTuRrbQSlT2Bs^ZVtGNA_E*!1SAynJNI#N6@Oeem^YVr<3~2c@gh zPc(eaE9n)Y;>0+E&XbQdV`Pb%x!Aal%Ws`baV^Mwl2K&p<+vRE{ry9 z!%dg8h!Xd1i~$(ct9U!ibb^hE34&w&3{KgnA2Ap5@Ka;iq2XryA6f_XOm1+6PEY$z zF9f0X9chn3xF|Ih!k~0Y$qwQv@2B$IXxA@<1;zVQzRTcFn`&G=mypu}q>}3n^vRGK z1I&u)4nv0z3i0+r}5?(H+PME+V4!<5Pt;4+hV0#lnP+}9tf|;qCR=9= z#c+<^K3oqO3KgnwBr6hTH{joecnnQXRf`-D)*)NMXpc?c`eI_n4i(yR_621+PKt`UnW_JpiCxXBuIBNfqj)bdkegtg3IA1tucB4Z zfvb8LR8Pr`YbKAgigP0VG-LHbpVUa>vVN*sEIUc_W*2xL{(YAd?ma{SF3&CZQO}mH z;ZtBCdRve;4oM%BZ!u0g3}(tu6Z4Vb@Mslwv~WrIVb!A}?`z4q@ovq_2 zNgy2a{+=qvRd~)nX~(E4-(9F>=`gjt`f>cad{toG17jkUhzKoNhsa933=)<`oazx| zex>S8+75&kulilSG?prh#g4t`(;AQLva0&#`?`|%+?!P-z*$}`Y$TE#hdNMtm)q?j zAFucqz9aK;!J&(n>!z$<-RN&RoVdzjJn4H|-i~lXE%P}NCQ;m+d<2$KNV_d>f@V$k z$KnLakMI0&;@_~etT~Jrr+z3xW5{~JHdET?q|pdam9Hps-f?W`yVUrtUQJlWipaUt zEXA@N9eOh>5^izhEEUvPKR?G^9n)%W_@>tBC~|qaHtKU0QWfXkwri|5e?;Q{6eY{r zx!#V0ZH>B;)YUwA3=$U!W%2R92VC+04VCXq+R~lDAW+$F=7tX<2e~5#NSOf-wH^WD z{w1O_dcwLfO0g!6hYgUNoad`gOuI5+ZeAY7+22?UHcOja=uJtMs39x9fxzuAHN(U= zh2q^kKUM~xsq;q)dvtr2E`Uop2o{mbR8o+RSg?B8>)MyNxU@Ac&jo-_4z?0YPmT1m zRlvnsXIy2}(Mqo@l$jeSo-6@P8V9;Xw(lb2mHa(xYX<|uh^n;wT>Fo?a12bzJc#bDAiScI-F?UghR(~SUv6#ziR~q{+APbcg<l*@ z1fr>TB=^IB{2|rLuvQPm3N;sS=QR%}zoU=8TjBhef#D z4`Lo2BD5JZc1)Al@$QRAUfXN2xS`g+VEDv_8_HHsGVQ0j&NQA5CZ0%t7!zxj22+wnEQv*=BR8f8SRcE=67UZYZe}2= zju~S-lc0V12-sf5Frrk^o(gCh<^gIXR^E^2lkDaGWHa@8on@X%@1Y|sJcBQYq^L0$ zCM_hhZ}vPB1fvyH%i%0b9Cz@g^ChfMN8hgg9K;?QF2Q1Vq-*HxNVjCj$-v3(pOufW zNXR$*F6_VfY~)lPf1GOM^w!P=rI@cA%)bJER@Y8W1VpTCB`?X#F)WLn2Q{$D@kg{U z6O|PZ6DgI#;BRcyVWd9Mqo$h8Pof|8&yKYh3aYTdBvw*1+Rg1UtZuNbeTuy}_jAu(O&I+$ z{PA&>%jgl+6Xj+`QlxXIRIrfr{Un20eeSv57R}W<*g=#wwW?blUX~rx%-xwl5x6N` zaU!h)2`x__?#RHu)d;8Dii{f&>X)hT!Uqch2c)!_gG&!EdOI2B@7?ES87hZ%WH&u_ z!XLrz$@e6R*?OALj^wC!j@b133aWJ6q*>!ge<0$RvhSFXTID##E^;7{T?Bb?pl*jY z(c7D3GuTZqCJC3H#ugb4PN_`?lj8?`aVn>1gaiyYEbM*A+hFE>;<+&@L`U4NEmhVE zYZhRdwqUJ9y{mkoa@)1?rpc&IGTB!uG9P5X{4M!%Y# zWSc|XnKoF1nq3c0>{Wll%)c80-%65j1?0MpO`vc+@2El(#IA2!IYpUCM&jT(cej^U zLzrMAgW)H^%20z&2=w#bJ@_vr>k193aF!1HAC<8pk9+)(v=B5$sA4Lt-$%e#*KC>e!70RCag znQ2$9Rigu`0;{A|U;C1Capn6%RR4+5m-$Jyu9EkLMmr0Z!Sk)V5;3M~?mc09R^|yB zICW$*<-Btlv%&iOV!{fzw`b5NWF~iXQT52-OzP~P*v%pOq4WN8G8x%4haGRje=!B7 zSBAOYxU;zdnCC(!&OYFvBGQ28qg5PPgYR90*Ic zQJCy~@oWIna4$LS=)_6KM2nPmBtVN$jZ@RFtJoKx_4)ds)2Cszd-rP;aqGwzvRN(@ifOcz}R8IlZ)W% zv2MK3W`}LS15#qmqZZDMq_@d_rT1cY21?74l?c}=AHyXJy0%tl-0)oEkPBG5!TQ^+t^3{|Y&t%xLKUC^~*D!~a&~I4b_>LL6{O{OLjP za^L@_bmV^cpOVjeZXxqOfc5+9y${0%f!?tGQH=ggU=S0iGZGUI1akMXvFG!%@zYiV zqmln+8~?2;>HN(?{`V|f(%-XeLV^*g+~mL?2mb?-L?96EUk)I@?frgk{~s5BkW>~6 z1R{n0XJB#EAds_zyZ8SU7?VY4&FF7>6!ROFDGC2_hmKg`Vf|-2aCqs^X_-NYaArE9 j|5zD9hnEh_i16TL{%7P1UOKdWc0@HVCssDsA8Y>w<>dhy