SAS Packages Framework, version 20250729

SAS Packages Framework, version 20250729

Changes:
- New parameter `github=` added to the `%installPackage()` macro.
- Documentation updated.
This commit is contained in:
Bart Jablonski
2025-07-29 11:51:56 +02:00
parent 030a0932a8
commit f63ff497ee
16 changed files with 149 additions and 108 deletions

View File

@@ -42,7 +42,7 @@
- to unload, or
- to generate SAS packages.
Version 20250728.
Version 20250729.
See examples below.
A SAS package is a zip file containing a group of files
@@ -91,7 +91,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to load SAS package, version 20250728. Run %loadPackage() for help info.'
des = 'Macro to load SAS package, version 20250729. Run %loadPackage() for help info.'
minoperator
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
@@ -107,7 +107,7 @@ minoperator
%put ### This is short help information for the `loadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to *load* SAS packages, version `20250728` #;
%put # Macro to *load* SAS packages, version `20250729` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -384,7 +384,7 @@ minoperator
*/
)/secure
/*** HELP END ***/
des = 'Macro to unload SAS package, version 20250728. Run %unloadPackage() for help info.'
des = 'Macro to unload SAS package, version 20250729. Run %unloadPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -399,7 +399,7 @@ des = 'Macro to unload SAS package, version 20250728. Run %unloadPackage() for h
%put ### This is short help information for the `unloadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to unload SAS packages, version `20250728` #;
%put # Macro to unload SAS packages, version `20250729` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -552,7 +552,7 @@ des = 'Macro to unload SAS package, version 20250728. Run %unloadPackage() for h
*/
)/secure
/*** HELP END ***/
des = 'Macro to get help about SAS package, version 20250728. Run %helpPackage() for help info.'
des = 'Macro to get help about SAS package, version 20250729. Run %helpPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -567,7 +567,7 @@ des = 'Macro to get help about SAS package, version 20250728. Run %helpPackage()
%put ### This is short help information for the `helpPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get help about SAS packages, version `20250728` #;
%put # Macro to get help about SAS packages, version `20250729` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -710,7 +710,7 @@ TODO:
*/
/*+installPackage+*/
/* Macros to install SAS packages, version 20250728 */
/* Macros to install SAS packages, version 20250729 */
/* 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
@@ -732,11 +732,12 @@ TODO:
, instDoc=0 /* should the markdown file with documentation be installed?
default is 0 - means No, 1 means Yes */
, SFRCVN = /* name of a macro variable to store success-failure return code value */
, github = /* name of a user or an organization in GitHub, all characters except [A-z0-9_.-] are compressed */
)
/secure
minoperator
/*** HELP END ***/
des = 'Macro to install SAS package, version 20250728. Run %%installPackage() for help info.'
des = 'Macro to install SAS package, version 20250729. Run %%installPackage() for help info.'
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
%do;
@@ -751,7 +752,7 @@ des = 'Macro to install SAS package, version 20250728. Run %%installPackage() fo
%put ### This is short help information for the `installPackage` macro #;
%put #--------------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to install SAS packages, version `20250728` #;
%put # Macro to install SAS packages, version `20250729` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -785,22 +786,22 @@ des = 'Macro to install SAS package, version 20250728. Run %%installPackage() fo
%put # #;
%put # - `mirror=` Indicates which web location for packages installation is used. #;
%put # Value `0` or `SASPAC` indicates: #;
%put # `https://github.com/SASPAC/` #;
%put # `https://github.com/SASPAC/` #;
%put # Value `1` indicates: #;
%put # `https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main` #;
%put # `https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main` #;
%put # Value `2` indicates: #;
%put # `https://pages.mini.pw.edu.pl/~jablonskib/SASpublic/SAS_PACKAGES` #;
%put # `https://pages.mini.pw.edu.pl/~jablonskib/SASpublic/SAS_PACKAGES` #;
%put # Value `3` or `PharmaForest` indicates: #;
%put # `https://github.com/PharmaForest/` #;
%put # `https://github.com/PharmaForest/` #;
%put # Default value is `0`. #;
%put # #;
%put # - `version=` Indicates which historical version of a package to install. #;
%put # Historical version are currently available only if `mirror=0` is set. #;
%put # Default value is null which means "install the latest". #;
%put # When there are multiple packages to install version variable #;
%put # When there are multiple packages to install the `version` variable #;
%put # is scan sequentially. #;
%put # #;
%put # - `replace=` With default value of `1` it causes existing package file #;
%put # - `replace=` With default value of `1`, it causes existing package file 0 #;
%put # to be replaced by new downloaded file. #;
%put # #;
%put # - `URLuser=` A user name for the password protected URLs, no quotes needed. #;
@@ -822,10 +823,15 @@ des = 'Macro to install SAS package, version 20250728. Run %%installPackage() fo
%put # indicates if the `.md` file should be also downloaded. #;
%put # Default value of zero (`0`) means "No", one (`1`) means "Yes". #;
%put # #;
%put # - `SFRCVN=` *Optional.* Provides a NAME for a macro variable to store value of the #;
%put # *success-failure return code* of the installation process. Return value #;
%put # has the following form: `<number of successes>.<number of failures>` #;
%put # The macro variable is created as a *global* macro variable. #;
%put # - `SFRCVN=` *Optional.* Provides a NAME for a macro variable to store value of the #;
%put # *success-failure return code* of the installation process. Return value #;
%put # has the following form: `<number of successes>.<number of failures>` #;
%put # The macro variable is created as a *global* macro variable. #;
%put # #;
%put # - `github=` *Optional.* A name of a user or an organization in GitHub. #;
%put # Allows an easy set of the search path for packages available on GitHub: #;
%put # `https://github.com/<github>/<packagename>/raw/.../` #;
%put # All characters except `[A-z0-9_.-]` are compressed. #;
%put # #;
%put #--------------------------------------------------------------------------------------------#;
%put # #;
@@ -916,10 +922,11 @@ des = 'Macro to install SAS package, version 20250728. Run %%installPackage() fo
%let SPFinitMirrorMD = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.md;
%let sourcePath = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/packages/;
%if %qupcase(%superq(mirror))=SASPAC %then %let mirror = 0;
%if %qupcase(%superq(mirror))=SASPAC %then %let mirror = 0;
%if %qupcase(%superq(mirror))=PHARMAFOREST %then %let mirror = 3;
%if %superq(github) NE %then %let mirror = 4;
%if NOT (%superq(mirror) IN (0 1 2 3)) %then
%if NOT (%superq(mirror) IN (0 1 2 3 4)) %then
%do;
%put WARNING: Unknown mirror: %superq(mirror)!;
%put WARNING- Default will be used.;
@@ -959,6 +966,17 @@ des = 'Macro to install SAS package, version 20250728. Run %%installPackage() fo
%goto mirrorEnd;
%end;
%if 4 = %superq(mirror) %then
%do;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirrorMD = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.md;
/* ingnore version support for pharmaForest for now */
%let github = %sysfunc(compress(%superq(github),%str(,.-),KAD));
%put INFO: GitHub location used is: %superq(github).;
%let sourcePath = https://github.com/&github./; /*users content*/
%goto mirrorEnd;
%end;
%mirrorEnd:
%put INFO: Source path is &sourcePath.;
%end;
@@ -1054,7 +1072,7 @@ des = 'Macro to install SAS package, version 20250728. Run %%installPackage() fo
%end;
%else
%do;
%if %superq(mirror) IN (0 3) %then /* SASPAC or PharmaForest */
%if %superq(mirror) IN (0 3 4) %then /* SASPAC or PharmaForest or an arbitrary GitHub repo */
%do;
%let packageSubDir = %sysfunc(lowcase(&packageName.))/raw/main/;
@@ -1386,7 +1404,7 @@ des = 'Macro to install SAS package, version 20250728. Run %%installPackage() fo
Macro to list SAS packages in packages folder.
Version 20250728
Version 20250729
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -1406,7 +1424,7 @@ des = 'Macro to install SAS package, version 20250728. Run %%installPackage() fo
%macro listPackages()
/secure PARMBUFF
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20250728.'
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20250729.'
;
%if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then
%do;
@@ -1421,7 +1439,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 `20250728` #;
%put # Macro to list available SAS packages, version `20250729` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -1573,7 +1591,7 @@ options ls = &ls_tmp. ps = &ps_tmp. &notes_tmp. &source_tmp.;
Macro to generate SAS packages.
Version 20250728
Version 20250729
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -1613,7 +1631,7 @@ options ls = &ls_tmp. ps = &ps_tmp. &notes_tmp. &source_tmp.;
file name be created */
)/ secure minoperator
/*** HELP END ***/
des = 'Macro to generate SAS packages, version 20250728. Run %generatePackage() for help info.'
des = 'Macro to generate SAS packages, version 20250729. Run %generatePackage() for help info.'
;
%if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then
%do;
@@ -1628,7 +1646,7 @@ des = 'Macro to generate SAS packages, version 20250728. Run %generatePackage()
%put ### This is short help information for the `generatePackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to generate SAS packages, version `20250728` #;
%put # Macro to generate SAS packages, version `20250729` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -2443,7 +2461,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 20250728";
footnote1 "SAS Packages Framework, version 20250729";
proc print
data = &filesWithCodes.(drop=base folderRef fileRef rc folderid _abort_ fileId additionalContent)
@@ -3267,7 +3285,7 @@ data _null_;
%end;
put +(-1) '`.;''' /
' !! '' %put The macro generated: '' !! put(dtCASLudf, E8601DT19.-L) !! ";"' /
' !! '' %put with the SAS Packages Framework version 20250728.;''' /
' !! '' %put with the SAS Packages Framework version 20250729.;''' /
' !! '' %put ****************************************************************************;''' /
' !! '' %GOTO theEndOfTheMacro;''' /
' !! '' %end;''' ;
@@ -3432,7 +3450,7 @@ data _null_;
%end;
put +(-1) '`.; '' !!' /
''' %put The macro generated: ''' " !! put(dtIML, E8601DT19.-L) !! " '''; '' !!' /
''' %put with the SAS Packages Framework version 20250728.; '' !! ' /
''' %put with the SAS Packages Framework version 20250729.; '' !! ' /
''' %put ****************************************************************************; '' !! ' /
''' %GOTO theEndOfTheMacro; '' !! ' /
''' %end; '' !! ' /
@@ -4239,7 +4257,7 @@ data _null_;
%end;
put 'put " " / @3 "--------------------------------------------------------------------" / " ";'
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20250728`*";'
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20250729`*";'
/ 'put " " / @3 "--------------------------------------------------------------------";';
put 'run; ' /;
@@ -5277,7 +5295,7 @@ data &filesWithCodes.markdown;
%end;
put " " / "--------------------------------------------------------------------" / " "
/ "*SAS package generated by SAS Package Framework, version `20250728`*"
/ "*SAS package generated by SAS Package Framework, version `20250729`*"
/ " " / "--------------------------------------------------------------------" / " ";
put "# The `&packageName.` package content";
@@ -5555,7 +5573,7 @@ TODO: (in Polish)
*/
)/secure
/*** HELP END ***/
des = 'Macro to load multiple SAS packages at one run, version 20250728. Run %loadPackages() for help info.'
des = 'Macro to load multiple SAS packages at one run, version 20250729. Run %loadPackages() for help info.'
parmbuff
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
@@ -5571,7 +5589,7 @@ parmbuff
%put ### This is short help information for the `loadPackageS` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro wrapper for the loadPackage macro, version `20250728` #;
%put # Macro wrapper for the loadPackage macro, version `20250729` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5669,7 +5687,7 @@ parmbuff
hashing_file() function, SAS 9.4M6 */
)/secure
/*** HELP END ***/
des = 'Macro to verify SAS package with the hash digest, version 20250728. Run %verifyPackage() for help info.'
des = 'Macro to verify SAS package with the hash digest, version 20250729. Run %verifyPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -5684,7 +5702,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20250728. Run %
%put ### This is short help information for the `verifyPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to verify SAS package with it hash digest, version `20250728` #;
%put # Macro to verify SAS package with it hash digest, version `20250729` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5866,7 +5884,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20250728. Run %
*/
)/secure
/*** HELP END ***/
des = 'Macro to preview content of a SAS package, version 20250728. Run %previewPackage() for help info.'
des = 'Macro to preview content of a SAS package, version 20250729. Run %previewPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -5881,7 +5899,7 @@ des = 'Macro to preview content of a SAS package, version 20250728. Run %preview
%put ### This is short help information for the `previewPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get preview of a SAS packages, version `20250728` #;
%put # Macro to get preview of a SAS packages, version `20250729` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -6013,7 +6031,7 @@ des = 'Macro to preview content of a SAS package, version 20250728. Run %preview
when empty the "packages" value is used */
)/secure
/*** HELP END ***/
des = 'Macro to list directories pointed by "packages" fileref, version 20250728. Run %extendPackagesFileref(HELP) for help info.'
des = 'Macro to list directories pointed by "packages" fileref, version 20250729. Run %extendPackagesFileref(HELP) for help info.'
;
%if %QUPCASE(&packages.) = HELP %then
@@ -6029,7 +6047,7 @@ des = 'Macro to list directories pointed by "packages" fileref, version 20250728
%put ### This is short help information for the `extendPackagesFileref` macro #;
%put #-----------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to list directories pointed by 'packages' fileref, version `20250728` #;
%put # Macro to list directories pointed by 'packages' fileref, version `20250729` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -6131,7 +6149,7 @@ filename packages list;
is provided in required version */
)/secure
/*** HELP END ***/
des = 'Macro to load additional content for a SAS package, version 20250728. Run %loadPackageAddCnt() for help info.'
des = 'Macro to load additional content for a SAS package, version 20250729. Run %loadPackageAddCnt() for help info.'
minoperator
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
@@ -6147,7 +6165,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 `20250728` #;
%put # Macro to *load* additional content for a SAS package, version `20250729` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -6505,7 +6523,7 @@ minoperator
,nobs=0 /* technical parameter */
)
/*** HELP START ***/
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20250728. Run %splitCodeForPackage() for help info.'
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20250729. Run %splitCodeForPackage() for help info.'
;
/*%macro _();%mend _;*/
%if (%superq(codeFile) = ) OR (%qupcase(&codeFile.) = HELP) %then
@@ -6522,7 +6540,7 @@ minoperator
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Utility macro to *split* single file with SAS package code into multiple #;
%put # files with separate snippets, version `20250728` #;
%put # files with separate snippets, version `20250729` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -6900,7 +6918,7 @@ options nomprint nosymbolgen nomlogic notes source ls=MAX ps=MAX msglevel=N ;
*/
if firstLine[j] then
do;
put '/* File generated with help of SAS Packages Framework, version 20250728. */';
put '/* File generated with help of SAS Packages Framework, version 20250729. */';
firstLine[j]=0;
end;
put _infile_;