Compare commits

...

7 Commits

Author SHA1 Message Date
Bart Jablonski
bd81f5d36e The macroArray package [ver. 1.2.6]
The macroArray package [ver. 1.2.6]

Changes:
- Minor update in `%mcDictionary()` and `%mcHashTable()` macros. Restrictions for object names check updated.
- Documentation updated.

SHA256 digest for the latest version macroArray: F*3F3893F1FCD78719543703E4353F4CC19811D247C016F220FF729B283C1AD790
2023-12-01 12:50:39 +01:00
Bart Jablonski
96c8234a58 The macroArray package [ver. 1.2.5]
## The `macroArray` package [ver. 1.2.5]

---

### Changes:

- Bug fix in the `%concatArrays()` macro.
- Spelling fix in log message of the `%make_do_over()` macro.

---

SHA256 hash digest: `F*FFF2C3D854F9B5677F561BA2EB6FAA2CCC652D81F6AF9473ADF0A4CE977E43F0`
2023-11-29 17:00:43 +01:00
Bart Jablonski
669a8e0a1d SAS Packages Framework, version 20231123
## SAS Packages Framework, version `20231123`

### Changes in SPF

- Minor update in log aesthetics for `%generatePackage()` macro.

---

### The macroArray package [ver. 1.2.3]

- Update in `q=` parameter for the `%array()` macro.
- Fix in data set existence for `ds=` parameter in the `%array()` macro.
- Documentation updated.

---

### Packages regenerated with the latest version of SPF:

- macroArray package [ver. 1.2.3]

SHA256 digests for packages:

- macroArray: `F*A0840B92EB9356EDB318DBE9B579A345C85ABF69E8D5F7C73C144C66F2F74FB4`
2023-11-23 21:50:17 +01:00
Bart Jablonski
b48260977b The BasePlus package [ver. 1.35.1]
The BasePlus package [ver. 1.35.1]

New `%downloadFilesTo()` macro added (and fixed).
Macro allows conveniently download data from internet or local locations to a directory pointed by user.

Documentation updated.

---

SHA256 digest for BasePlus: `F*BCD89EDF856762EB8E441BC53933774483258453D1F7D74185F8A1861E414B0E`
2023-11-14 15:40:39 +01:00
Bart Jablonski
92dc813146 The BasePlus package [ver. 1.35.1]
The BasePlus package [ver. 1.35.1]

New `%downloadFilesTo()` macro added (and fixed).
Macro allows conveniently download data from internet or local locations to a directory pointed by user.

Documentation updated.

---

SHA256 digest for BasePlus: `F*17A6D788704E33C3C2AE51BBAF881F8DE959548603BC95C05D3E165EE2D354E5`
2023-11-14 15:27:59 +01:00
Bart Jablonski
c5756d3979 The BasePlus package [ver. 1.35.0]
The BasePlus package [ver. 1.35.0]

New `%downloadFilesTo()` macro added.
Macro allows conveniently download data from internet or local locations to a directory pointed by user.

Documentation updated.

---

SHA256 digest for BasePlus: `F*62344EAA8C0DD95CCB164B5C7A91B33865B3D19CD5A2A3EDAC4C31E0541D04C9`
2023-11-14 14:44:36 +01:00
Bart Jablonski
9c9ebe63d1 The BasePlus package [ver. 1.35.0]
The BasePlus package [ver. 1.35.0]

New `%downloadFilesTo()` macro added.
Macro allows conveniently download data from internet or local locations to a directory pointed by user.

Documentation updated.

---

SHA256 digest for BasePlus: `F*62344EAA8C0DD95CCB164B5C7A91B33865B3D19CD5A2A3EDAC4C31E0541D04C9`
2023-11-14 14:36:50 +01:00
20 changed files with 246 additions and 101 deletions

View File

@@ -16,7 +16,7 @@ Don't forget to **STAR** (:star:) the repository! :-)
### Current version:
**The latest version** of SPF is **`20231111`**.
**The latest version** of SPF is **`20231123`**.
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).

View File

@@ -6,7 +6,7 @@
when empty the "packages" value is used */
)/secure
/*** HELP END ***/
des = 'Macro to list directories pointed by "packages" fileref, version 20231111. Run %extendPackagesFileref(HELP) for help info.'
des = 'Macro to list directories pointed by "packages" fileref, version 20231123. Run %extendPackagesFileref(HELP) for help info.'
;
%if %QUPCASE(&packages.) = HELP %then
@@ -22,7 +22,7 @@ des = 'Macro to list directories pointed by "packages" fileref, version 20231111
%put ### This is short help information for the `extendPackagesFileref` macro #;
%put #-----------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to list directories pointed by 'packages' fileref, version `20231111` #;
%put # Macro to list directories pointed by 'packages' fileref, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -23,7 +23,7 @@
default value 1 means "delete tests work" */
)/ secure minoperator
/*** HELP END ***/
des = 'Macro to generate SAS packages, version 20231111. Run %generatePackage() for help info.'
des = 'Macro to generate SAS packages, version 20231123. Run %generatePackage() for help info.'
;
%if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then
%do;
@@ -38,7 +38,7 @@ des = 'Macro to generate SAS packages, version 20231111. Run %generatePackage()
%put ### This is short help information for the `generatePackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to generate SAS packages, version `20231111` #;
%put # Macro to generate SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -820,7 +820,7 @@ title6 "MD5 hashed fileref of package lowcase name: &_PackageFileref_.";
title8 "Required SAS packages: %qsysfunc(compress(%superq(packageReqPackages),%str(%'%")))" ; /* " */
%end;
footnote1 "SAS Packages Framework, version 20231111";
footnote1 "SAS Packages Framework, version 20231123";
proc print data = &filesWithCodes.(drop=base folderRef fileRef rc folderid _abort_ fileId additionalContent);
run;
@@ -1541,7 +1541,7 @@ data _null_;
%end;
put +(-1) '`.;''' /
' !! '' %put The macro generated: '' !! put(dtCASLudf, E8601DT19.-L) !! ";"' /
' !! '' %put with the SAS Packages Framework version 20231111.;''' /
' !! '' %put with the SAS Packages Framework version 20231123.;''' /
' !! '' %put ****************************************************************************;''' /
' !! '' %GOTO theEndOfTheMacro;''' /
' !! '' %end;''' ;
@@ -1706,7 +1706,7 @@ data _null_;
%end;
put +(-1) '`.; '' !!' /
''' %put The macro generated: ''' " !! put(dtIML, E8601DT19.-L) !! " '''; '' !!' /
''' %put with the SAS Packages Framework version 20231111.; '' !! ' /
''' %put with the SAS Packages Framework version 20231123.; '' !! ' /
''' %put ****************************************************************************; '' !! ' /
''' %GOTO theEndOfTheMacro; '' !! ' /
''' %end; '' !! ' /
@@ -2492,7 +2492,7 @@ data _null_;
put "put @3 'localization (only if additional content was deployed during the installation process).';" / "put ;";
%end;
put 'put "***"; put "* SAS package generated by generatePackage, version 20231111 *"; put "***";';
put 'put "***"; put "* SAS package generated by generatePackage, version 20231123 *"; put "***";';
put 'run; ' /;
@@ -2644,7 +2644,7 @@ data _null_;
/* copy code file into the zip */
call execute('data _null_;');
call execute(' put ;');
call execute(' put ; length pathname $ 8192;');
call execute(' pathname = pathname("_SPFIN_");');
call execute(' do until (ex OR Try>10) ;');

View File

@@ -28,7 +28,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to get help about SAS package, version 20231111. Run %helpPackage() for help info.'
des = 'Macro to get help about SAS package, version 20231123. Run %helpPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -43,7 +43,7 @@ des = 'Macro to get help about SAS package, version 20231111. Run %helpPackage()
%put ### This is short help information for the `helpPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get help about SAS packages, version `20231111` #;
%put # Macro to get help about SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -16,7 +16,7 @@
/secure
minoperator
/*** HELP END ***/
des = 'Macro to install SAS package, version 20231111. Run %%installPackage() for help info.'
des = 'Macro to install SAS package, version 20231123. Run %%installPackage() for help info.'
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
%do;
@@ -31,7 +31,7 @@ des = 'Macro to install SAS package, version 20231111. Run %%installPackage() fo
%put ### This is short help information for the `installPackage` macro #;
%put #--------------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to install SAS packages, version `20231111` #;
%put # Macro to install SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -1,7 +1,7 @@
/*+listPackages+*/
%macro listPackages()/secure PARMBUFF
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20231111.'
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20231123.'
;
%if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then
%do;
@@ -16,7 +16,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 `20231111` #;
%put # Macro to list available SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -34,7 +34,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to load SAS package, version 20231111. Run %loadPackage() for help info.'
des = 'Macro to load SAS package, version 20231123. Run %loadPackage() for help info.'
minoperator
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
@@ -50,7 +50,7 @@ minoperator
%put ### This is short help information for the `loadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to *load* SAS packages, version `20231111` #;
%put # Macro to *load* SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -19,7 +19,7 @@
is provided in required version */
)/secure
/*** HELP END ***/
des = 'Macro to load additional content for a SAS package, version 20231111. Run %loadPackageAddCnt() for help info.'
des = 'Macro to load additional content for a SAS package, version 20231123. Run %loadPackageAddCnt() for help info.'
minoperator
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
@@ -35,7 +35,7 @@ minoperator
%put ### This is short help information for the `loadPackageAddCnt` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to *load* additional content for a SAS package, version `20231111` #;
%put # Macro to *load* additional content for a SAS package, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -11,7 +11,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to load multiple SAS packages at one run, version 20231111. Run %loadPackages() for help info.'
des = 'Macro to load multiple SAS packages at one run, version 20231123. Run %loadPackages() for help info.'
parmbuff
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
@@ -27,7 +27,7 @@ parmbuff
%put ### This is short help information for the `loadPackageS` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro wrapper for the loadPackage macro, version `20231111` #;
%put # Macro wrapper for the loadPackage macro, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -23,7 +23,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to preview content of a SAS package, version 20231111. Run %previewPackage() for help info.'
des = 'Macro to preview content of a SAS package, version 20231123. Run %previewPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -38,7 +38,7 @@ des = 'Macro to preview content of a SAS package, version 20231111. Run %preview
%put ### This is short help information for the `previewPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get previwe of a SAS packages, version `20231111` #;
%put # Macro to get previwe of a SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -20,7 +20,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to unload SAS package, version 20231111. Run %unloadPackage() for help info.'
des = 'Macro to unload SAS package, version 20231123. Run %unloadPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -35,7 +35,7 @@ des = 'Macro to unload SAS package, version 20231111. Run %unloadPackage() for h
%put ### This is short help information for the `unloadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to unload SAS packages, version `20231111` #;
%put # Macro to unload SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -13,7 +13,7 @@
hashing_file() function, SAS 9.4M6 */
)/secure
/*** HELP END ***/
des = 'Macro to verify SAS package with the hash digest, version 20231111. Run %verifyPackage() for help info.'
des = 'Macro to verify SAS package with the hash digest, version 20231123. Run %verifyPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -28,7 +28,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20231111. Run %
%put ### This is short help information for the `verifyPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to verify SAS package with it hash digest, version `20231111` #;
%put # Macro to verify SAS package with it hash digest, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -22,7 +22,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 **`20231111`**.
In this repository we are presenting the **SAS Packages Framework** which allows to develop and use SAS packages. The latest version of SPF is **`20231123`**.
**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).
@@ -40,7 +40,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 <a name="installpackage"></a>
--------------------------------------------------------------------------------------------
Macro to install SAS packages, version `20231111`
Macro to install SAS packages, version `20231123`
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -149,7 +149,7 @@ filename packages "C:/SAS_PACKAGES";
## This is short help information for the `helpPackage` macro <a name="helppackage"></a>
-------------------------------------------------------------------------------
Macro to get help about SAS packages, version `20231111`
Macro to get help about SAS packages, version `20231123`
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -225,7 +225,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages;
## This is short help information for the `loadPackage` macro <a name="loadpackage"></a>
-------------------------------------------------------------------------------
Macro to *load* SAS packages, version `20231111`
Macro to *load* SAS packages, version `20231123`
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -377,7 +377,7 @@ If created, those macros are automatically deleted when the `%unloadPackage()` m
## This is short help information for the `loadPackageS` macro <a name="loadpackages"></a>
-------------------------------------------------------------------------------
Macro wrapper for the loadPackage macro, version `20231111`
Macro wrapper for the loadPackage macro, version `20231123`
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -426,7 +426,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages;
## This is short help information for the `unloadPackage` macro <a name="unloadpackage"></a>
-------------------------------------------------------------------------------
Macro to unload SAS packages, version `20231111`
Macro to unload SAS packages, version `20231123`
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -491,7 +491,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages;
## This is short help information for the `listPackages` macro <a name="listpackages"></a>
-----------------------------------------------------------------------------------------
Macro to list available SAS packages, version `20231111`
Macro to list available SAS packages, version `20231123`
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -532,7 +532,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages;
## This is short help information for the `verifyPackage` macro <a name="verifypackage"></a>
-------------------------------------------------------------------------------
Macro to verify SAS package with it hash digest, version `20231111`
Macro to verify SAS package with it hash digest, version `20231123`
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -586,7 +586,7 @@ filename packages "C:/SAS_PACKAGES"; %* set-up a directory for packages;
## This is short help information for the `previewPackage` macro <a name="previewpackage"></a>
-------------------------------------------------------------------------------
Macro to get previwe of a SAS packages, version `20231111`
Macro to get previwe of a SAS packages, version `20231123`
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -653,7 +653,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages;
## This is short help information for the `generatePackage` macro <a name="generatepackage"></a>
-------------------------------------------------------------------------------
Macro to generate SAS packages, version `20231111`
Macro to generate SAS packages, version `20231123`
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -857,7 +857,7 @@ All files have to have `.sas` extension. Other files are ignored.
## This is short help information for the `extendPackagesFileref` macro <a name="extendpackagesfileref"></a>
-----------------------------------------------------------------------------------------
Macro to list directories pointed by 'packages' fileref, version `20231111`
Macro to list directories pointed by 'packages' fileref, version `20231123`
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -897,7 +897,7 @@ filename packages ("D:/NEW_DIR" %extendPackagesFileref()); %* add new directory;
## This is short help information for the `loadPackageAddCnt` macro <a name="loadpackageaddcnt"></a>
-------------------------------------------------------------------------------
Macro to load *additional content* for a SAS package, version `20231111`
Macro to load *additional content* for a SAS package, version `20231123`
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating

View File

@@ -89,7 +89,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to load SAS package, version 20231111. Run %loadPackage() for help info.'
des = 'Macro to load SAS package, version 20231123. Run %loadPackage() for help info.'
minoperator
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
@@ -105,7 +105,7 @@ minoperator
%put ### This is short help information for the `loadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to *load* SAS packages, version `20231111` #;
%put # Macro to *load* SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -360,7 +360,7 @@ minoperator
*/
)/secure
/*** HELP END ***/
des = 'Macro to unload SAS package, version 20231111. Run %unloadPackage() for help info.'
des = 'Macro to unload SAS package, version 20231123. Run %unloadPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -375,7 +375,7 @@ des = 'Macro to unload SAS package, version 20231111. Run %unloadPackage() for h
%put ### This is short help information for the `unloadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to unload SAS packages, version `20231111` #;
%put # Macro to unload SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -524,7 +524,7 @@ des = 'Macro to unload SAS package, version 20231111. Run %unloadPackage() for h
*/
)/secure
/*** HELP END ***/
des = 'Macro to get help about SAS package, version 20231111. Run %helpPackage() for help info.'
des = 'Macro to get help about SAS package, version 20231123. Run %helpPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -539,7 +539,7 @@ des = 'Macro to get help about SAS package, version 20231111. Run %helpPackage()
%put ### This is short help information for the `helpPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get help about SAS packages, version `20231111` #;
%put # Macro to get help about SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -702,7 +702,7 @@ TODO:
/secure
minoperator
/*** HELP END ***/
des = 'Macro to install SAS package, version 20231111. Run %%installPackage() for help info.'
des = 'Macro to install SAS package, version 20231123. Run %%installPackage() for help info.'
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
%do;
@@ -717,7 +717,7 @@ des = 'Macro to install SAS package, version 20231111. Run %%installPackage() fo
%put ### This is short help information for the `installPackage` macro #;
%put #--------------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to install SAS packages, version `20231111` #;
%put # Macro to install SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -1190,7 +1190,7 @@ des = 'Macro to install SAS package, version 20231111. Run %%installPackage() fo
/*+listPackages+*/
%macro listPackages()/secure PARMBUFF
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20231111.'
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20231123.'
;
%if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then
%do;
@@ -1205,7 +1205,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 `20231111` #;
%put # Macro to list available SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -1392,7 +1392,7 @@ options ls = &ls_tmp. ps = &ps_tmp. &notes_tmp. &source_tmp.;
default value 1 means "delete tests work" */
)/ secure minoperator
/*** HELP END ***/
des = 'Macro to generate SAS packages, version 20231111. Run %generatePackage() for help info.'
des = 'Macro to generate SAS packages, version 20231123. Run %generatePackage() for help info.'
;
%if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then
%do;
@@ -1407,7 +1407,7 @@ des = 'Macro to generate SAS packages, version 20231111. Run %generatePackage()
%put ### This is short help information for the `generatePackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to generate SAS packages, version `20231111` #;
%put # Macro to generate SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -2189,7 +2189,7 @@ title6 "MD5 hashed fileref of package lowcase name: &_PackageFileref_.";
title8 "Required SAS packages: %qsysfunc(compress(%superq(packageReqPackages),%str(%'%")))" ; /* " */
%end;
footnote1 "SAS Packages Framework, version 20231111";
footnote1 "SAS Packages Framework, version 20231123";
proc print data = &filesWithCodes.(drop=base folderRef fileRef rc folderid _abort_ fileId additionalContent);
run;
@@ -2910,7 +2910,7 @@ data _null_;
%end;
put +(-1) '`.;''' /
' !! '' %put The macro generated: '' !! put(dtCASLudf, E8601DT19.-L) !! ";"' /
' !! '' %put with the SAS Packages Framework version 20231111.;''' /
' !! '' %put with the SAS Packages Framework version 20231123.;''' /
' !! '' %put ****************************************************************************;''' /
' !! '' %GOTO theEndOfTheMacro;''' /
' !! '' %end;''' ;
@@ -3075,7 +3075,7 @@ data _null_;
%end;
put +(-1) '`.; '' !!' /
''' %put The macro generated: ''' " !! put(dtIML, E8601DT19.-L) !! " '''; '' !!' /
''' %put with the SAS Packages Framework version 20231111.; '' !! ' /
''' %put with the SAS Packages Framework version 20231123.; '' !! ' /
''' %put ****************************************************************************; '' !! ' /
''' %GOTO theEndOfTheMacro; '' !! ' /
''' %end; '' !! ' /
@@ -3861,7 +3861,7 @@ data _null_;
put "put @3 'localization (only if additional content was deployed during the installation process).';" / "put ;";
%end;
put 'put "***"; put "* SAS package generated by generatePackage, version 20231111 *"; put "***";';
put 'put "***"; put "* SAS package generated by generatePackage, version 20231123 *"; put "***";';
put 'run; ' /;
@@ -4013,7 +4013,7 @@ data _null_;
/* copy code file into the zip */
call execute('data _null_;');
call execute(' put ;');
call execute(' put ; length pathname $ 8192;');
call execute(' pathname = pathname("_SPFIN_");');
call execute(' do until (ex OR Try>10) ;');
@@ -4882,7 +4882,7 @@ TODO: (in Polish)
*/
)/secure
/*** HELP END ***/
des = 'Macro to load multiple SAS packages at one run, version 20231111. Run %loadPackages() for help info.'
des = 'Macro to load multiple SAS packages at one run, version 20231123. Run %loadPackages() for help info.'
parmbuff
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
@@ -4898,7 +4898,7 @@ parmbuff
%put ### This is short help information for the `loadPackageS` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro wrapper for the loadPackage macro, version `20231111` #;
%put # Macro wrapper for the loadPackage macro, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -4995,7 +4995,7 @@ parmbuff
hashing_file() function, SAS 9.4M6 */
)/secure
/*** HELP END ***/
des = 'Macro to verify SAS package with the hash digest, version 20231111. Run %verifyPackage() for help info.'
des = 'Macro to verify SAS package with the hash digest, version 20231123. Run %verifyPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -5010,7 +5010,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20231111. Run %
%put ### This is short help information for the `verifyPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to verify SAS package with it hash digest, version `20231111` #;
%put # Macro to verify SAS package with it hash digest, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5189,7 +5189,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20231111. Run %
*/
)/secure
/*** HELP END ***/
des = 'Macro to preview content of a SAS package, version 20231111. Run %previewPackage() for help info.'
des = 'Macro to preview content of a SAS package, version 20231123. Run %previewPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -5204,7 +5204,7 @@ des = 'Macro to preview content of a SAS package, version 20231111. Run %preview
%put ### This is short help information for the `previewPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get previwe of a SAS packages, version `20231111` #;
%put # Macro to get previwe of a SAS packages, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5331,7 +5331,7 @@ des = 'Macro to preview content of a SAS package, version 20231111. Run %preview
when empty the "packages" value is used */
)/secure
/*** HELP END ***/
des = 'Macro to list directories pointed by "packages" fileref, version 20231111. Run %extendPackagesFileref(HELP) for help info.'
des = 'Macro to list directories pointed by "packages" fileref, version 20231123. Run %extendPackagesFileref(HELP) for help info.'
;
%if %QUPCASE(&packages.) = HELP %then
@@ -5347,7 +5347,7 @@ des = 'Macro to list directories pointed by "packages" fileref, version 20231111
%put ### This is short help information for the `extendPackagesFileref` macro #;
%put #-----------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to list directories pointed by 'packages' fileref, version `20231111` #;
%put # Macro to list directories pointed by 'packages' fileref, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5448,7 +5448,7 @@ filename packages list;
is provided in required version */
)/secure
/*** HELP END ***/
des = 'Macro to load additional content for a SAS package, version 20231111. Run %loadPackageAddCnt() for help info.'
des = 'Macro to load additional content for a SAS package, version 20231123. Run %loadPackageAddCnt() for help info.'
minoperator
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
@@ -5464,7 +5464,7 @@ minoperator
%put ### This is short help information for the `loadPackageAddCnt` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to *load* additional content for a SAS package, version `20231111` #;
%put # Macro to *load* additional content for a SAS package, version `20231123` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -61,7 +61,7 @@ SHA256 digest for DFA: F*012375D87F66EB3A7BF5DDD0CC5AEE28851733EE33CC63231DF9045
---
- **macroArray**\[1.2.1\], implementation of an array concept in a macro language, e.g.
- **macroArray**\[1.2.6\], implementation of an array concept in a macro language, e.g.
```sas
%array(ABC[17] (111:127), macarray=Y);
@@ -80,13 +80,13 @@ SHA256 digest for DFA: F*012375D87F66EB3A7BF5DDD0CC5AEE28851733EE33CC63231DF9045
which = 1:H:2
);
```
SHA256 digest for macroArray: F*2A108D121D4DACAA8752E681301371F80F0500B2EE28A9E3B39678415BCBD6B2
SHA256 digest for macroArray: F*3F3893F1FCD78719543703E4353F4CC19811D247C016F220FF729B283C1AD790
[Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray")
---
- **BasePlus**\[1.34.0\] adds a bunch of functionalities I am missing in BASE SAS, such as:
- **BasePlus**\[1.35.1\] adds a bunch of functionalities I am missing in BASE SAS, such as:
```sas
call arrMissToRight(myArray);
call arrFillMiss(17, myArray);
@@ -114,7 +114,7 @@ format x bool.;
%put %monthShift(2023,1,-5);
```
SHA256 digest for BasePlus: F*D84CE41A550DC2D5C092C70C04A796E8329F34087A603BEF0CD366910C162E80
SHA256 digest for BasePlus: F*BCD89EDF856762EB8E441BC53933774483258453D1F7D74185F8A1861E414B0E
[Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus")

View File

@@ -1,3 +1,15 @@
/* 20231201 */
macroArray: F*3F3893F1FCD78719543703E4353F4CC19811D247C016F220FF729B283C1AD790
/* 20231129 */
macroArray: F*FFF2C3D854F9B5677F561BA2EB6FAA2CCC652D81F6AF9473ADF0A4CE977E43F0
/* 20231123 */
macroArray: F*A0840B92EB9356EDB318DBE9B579A345C85ABF69E8D5F7C73C144C66F2F74FB4
/* 20231114 */
BasePlus: F*BCD89EDF856762EB8E441BC53933774483258453D1F7D74185F8A1861E414B0E
/* 20231111 */
BasePlus: F*D84CE41A550DC2D5C092C70C04A796E8329F34087A603BEF0CD366910C162E80
DFA: F*012375D87F66EB3A7BF5DDD0CC5AEE28851733EE33CC63231DF9045BEB958168

View File

@@ -47,6 +47,7 @@
* [`%unzipLibrary()` macro](#unziplibrary-macro)
* [`%zipArch()` macro](#ziparch-macro)
* [`%unzipArch()` macro](#unziparch-macro)
* [`%downloadFilesTo()` macro](#downloadfilesto-macro)
* [`%LDSN()` macro](#ldsn-macro)
* [`%LDsNm()` macro](#ldsnm-macro)
* [`%LVarNm()` macro](#lvarnm-macro)
@@ -80,7 +81,7 @@
---
# The BasePlus package [ver. 1.34.0] <a name="baseplus-package"></a> ###############################################
# The BasePlus package [ver. 1.35.1] <a name="baseplus-package"></a> ###############################################
The **BasePlus** package implements useful
functions and functionalities I miss in the BASE SAS.
@@ -102,7 +103,8 @@ Kudos to all who inspired me to generate this package:
*Michal Ludwicki*,
*Quentin McMullen*,
*Kurt Bremser*,
*Leonid Batkhan*.
*Leonid Batkhan*,
*Louise Hadden*.
---
@@ -400,6 +402,16 @@ run;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**EXAMPLE 26** Downloading data from the internet to a local dirrectory:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%downloadFilesTo(~/directoryA)
datalines4;
https://www.lexjansen.com/wuss/2023/WUSS-2023-Paper-189.pdf
https://www.lexjansen.com/wuss/2023/WUSS-2023-Paper-189.zip
;;;;
run;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---
@@ -463,21 +475,22 @@ Package contains:
57. functions quicksortlight
58. macro date
59. macro datetime
60. macro filepath
61. macro finddswithvarval
62. macro fmt
63. macro gettitle
64. macro infmt
65. macro letters
66. macro libpath
67. macro minclude
68. macro monthshift
69. macro replist
70. macro time
71. macro today
72. macro translate
73. macro tranwrd
74. macro workpath
60. macro downloadfilesto
61. macro filepath
62. macro finddswithvarval
63. macro fmt
64. macro gettitle
65. macro infmt
66. macro letters
67. macro libpath
68. macro minclude
69. macro monthshift
70. macro replist
71. macro time
72. macro today
73. macro translate
74. macro tranwrd
75. macro workpath
@@ -488,7 +501,7 @@ localization (only if additional content was deployed during the installation pr
* SAS package generated by generatePackage, version 20231107 *
The SHA256 hash digest for package BasePlus:
`F*D84CE41A550DC2D5C092C70C04A796E8329F34087A603BEF0CD366910C162E80`
`F*BCD89EDF856762EB8E441BC53933774483258453D1F7D74185F8A1861E414B0E`
---
# Content description ############################################################################################
@@ -4051,6 +4064,125 @@ filename pR "%workPath()";
---
## >>> `%downloadFilesTo()` macro: <<< <a name="downloadfilesto-macro"></a> #######################
The downloadFilesTo() macro copy files (in binary mode
using `filename()` function with options `lrecl=1 recfm=n`)
from list provided by user to a directory indicated
in the macro call.
Macro can be executed in two possible ways:
1) by providing list of files to download in a `datalines4`(`cards4`) list
directly after macro call:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%downloadFilesTo(</path/to/target/directory>)
datalines4;
<link to file1>
<link to file2>
...
<link to fileN>
;;;;
run;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2) by create a dataset with a list of links and use of `DS=` and `DSvar=` parameters.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%downloadFilesTo(</path/to/target/directory>
, DS=<dataset with list>
, DSvar=<variable with list>
)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
See examples below for the details.
The `%downloadFilesTo()` macro **does not** execute as a pure macro code.
Temporary dataset `work.______locationInfoData` is generated during processing.
### SYNTAX: ###################################################################
The basic syntax is the following, the `<...>` means optional parameters:
~~~~~~~~~~~~~~~~~~~~~~~sas
%downloadFilesTo(
target
<,DS=>
<,DSvar=link>
<,inDev=URL>
<,outDev=DISK>
<,inOptions=>
<,outOptions=>
)
~~~~~~~~~~~~~~~~~~~~~~~
**Arguments description**:
1. `target ` - *Required*, a path to target directory.
If empty the `WORK` location is used.
*. `DS= ` - *Optional*, name of data set with list
of files to download.
*. `DSvar= ` - *Optional*, name of variable in data set
with list of files to download.
*. `inDev=` - *Optional*, type of device used by the
`filename()` function to access incoming files.
Default value is `URL`.
*. `outDev=` - *Optional*, type of device used by the
`filename()` function to access outgoing files.
Default value is `DISK`.
*. `inOptions=` - *Optional*, list of additional options for the
`filename()` function to access incoming files.
Default value is empty.
*. `outOptions=` - *Optional*, list of additional options for the
`filename()` function to access outgoing files.
Default value is empty.
---
### EXAMPLES AND USECASES: ####################################################
**EXAMPLE 1.** Download data from web with diect list and then copy between directories:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
resetline;
%downloadFilesTo(~/directoryA)
datalines4;
https://www.lexjansen.com/wuss/2023/WUSS-2023-Paper-189.pdf
https://www.lexjansen.com/wuss/2023/WUSS-2023-Paper-189.zip
;;;;
run;
%downloadFilesTo(~/directoryB,inDev=DISK)
datalines4;
~/directoryA/WUSS-2023-Paper-189.pdf
~/directoryA/WUSS-2023-Paper-189.zip
;;;;
run;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**EXAMPLE 2.** Download data from web using data set with list:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
resetline;
data listOfFiles;
infile cards;
input files :$1024.;
cards4;
https://www.lexjansen.com/wuss/2023/WUSS-2023-Paper-201.pdf
https://www.lexjansen.com/wuss/2023/WUSS-2023-Paper-109.pdf
;;;;
run;
%downloadFilesTo(R:\directoryC, DS=listOfFiles, DSvar=files)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---
## >>> `%LDSN()` macro: <<< <a name="ldsn-macro"></a> #######################
The LDSN (Long DataSet Names) macro function

Binary file not shown.

View File

@@ -19,9 +19,9 @@
---
# The macroArray package [ver. 1.2.1] <a name="macroarray-package"></a> ###############################################
# The macroArray package [ver. 1.2.6] <a name="macroarray-package"></a> ###############################################
The **macroArray** package implements a macro array facility:
The **macroArray** package implements a macroarray facility:
- `%array()`,
- `%do_over()`,
- `%make_do_over()`,
@@ -75,10 +75,10 @@ Package contains:
Required SAS Components:
*Base SAS Software*
*SAS package generated by generatePackage, version 20231111*
*SAS package generated by generatePackage, version 20231123*
The SHA256 hash digest for package macroArray:
`F*2A108D121D4DACAA8752E681301371F80F0500B2EE28A9E3B39678415BCBD6B2`
`F*3F3893F1FCD78719543703E4353F4CC19811D247C016F220FF729B283C1AD790`
---
# Content description ############################################################################################
@@ -244,7 +244,7 @@ The code of a macro was inspired by
The `%array()` macro version provided in the package
is designed to facilitate
the idea of macro array concept, i.e. *a list of
the idea of macroarray concept, i.e. *a list of
macrovariables with common prefix and numerical suffixes*.
Usually such construction is then resolved by
double ampersand syntax, e.g. `&&perfix&i` or similar one.
@@ -253,7 +253,7 @@ What is new/extension to the `%array()` macro concept are:
0. The syntax is closer to the data step one.
1. It is a pure macro code (it can be executed in any place
of 4GL code), this includes generating macro arrays out
of 4GL code), this includes generating macroarrays out
of datasets.
2. When a macroarrray is created it allows also to generate
a new macro (named the same as the array name) and replace
@@ -346,8 +346,9 @@ The basic syntax is the following, the `<...>` means optional parameters:
3) macroarray "W" with UNIQUE(|) values of variable "weight" and <br>
4) macroarray "AGE" with UNIQUE(|) values of variable "age".
* `q=` - *Optional*, indicates (when set to `1`) if the value be surrounded by quotes.
* `q=` - *Optional*, indicates (when set to `1` or '2') if the value should be surrounded by quotes.
It uses `quote(cats(...))` combo under the hood. Default value is `0`.
Value `1` is for apostrophes, value `2` is for double quotes.
Ignored for `macarray=M`.
@@ -1210,7 +1211,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
1. `H` - *Required*, a hash table macro name and a declaration/definition,
e.g. `mcHashTable(HT)`. It names a macro which is generated by
the `%mcHashTable()` macro. Provided name cannot be empty
or an underscore (`_`). No longer than *16* characters.
or an underscore (`_`). No longer than *10* characters.
2. `METHOD` - *Optional*, if empty (or DECLARE or DCL) then the code of
a macro hash table is compiled.
@@ -1567,7 +1568,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
1. `H` - *Required*, a dictionary macro name and a declaration/definition,
e.g. `mcDictionary(HT)`. It names a macro which is generated by
the `%mcDictionary()` macro. Provided name cannot be empty
or an underscore (`_`). No longer than *16* characters.
or an underscore (`_`). No longer than *13* characters.
2. `METHOD` - *Optional*, if empty (or DECLARE or DCL) then the code of
a macro dictionary is compiled.
@@ -1867,7 +1868,7 @@ footnote;
The zipArrays() and QzipArrays() macros
allow to use a function on elements of pair of
macro arrays.
macroarrays.
For two macroarrays the corresponding
elements are taken and the macro applies a function, provided by user,
@@ -1978,7 +1979,7 @@ See examples in `%zipArrays()` help for the details.
The zipArrays() and QzipArrays() macros
allow to use a function on elements of pair of
macro arrays.
macroarrays.
For two macroarrays the corresponding
elements are taken and the macro applies a function, provided by user,
@@ -2177,7 +2178,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
## >>> `%sortMacroArray()` macro: <<< <a name="sortmacroarray-macro"></a> #######################
The sortMacroArray() macro
allow to sort elements of a macro array.
allow to sort elements of a macroarray.
The **limitation** is that sorted values are limited to 32767 bytes of length.

Binary file not shown.