SAS Packages Framework, version 20260409

SAS Packages Framework, version `20260409`

New parameters added to the %installPackage() macro:
- githubRepo
- githubToken

With properly configured fine-grained personal access token for GitHub packages from private repos can be installed now.
This commit is contained in:
Bart Jablonski
2026-04-09 12:48:50 +02:00
parent d7623839b2
commit 3906947225
23 changed files with 464 additions and 124 deletions
+2 -2
View File
@@ -8,7 +8,7 @@
,packagesRef=packages
,ods= /* data set for report file */
)/
des='Macro to create a bundle of SAS packages, version 20260216. Run %bundlePackages(HELP) for help info.'
des='Macro to create a bundle of SAS packages, version 20260409. Run %bundlePackages(HELP) for help info.'
secure minoperator
;
@@ -25,7 +25,7 @@ secure minoperator
%put ### This is short help information for the `bundlePackages` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to *create bundles* of SAS packages, version `20260216` #;
%put # Macro to *create bundles* of SAS packages, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+2 -2
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 20260216. Run %extendPackagesFileref(HELP) for help info.'
des = 'Macro to list directories pointed by "packages" fileref, version 20260409. 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 20260216
%put ### This is short help information for the `extendPackagesFileref` macro #;
%put #-----------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to list directories pointed by 'packages' fileref, version `20260216` #;
%put # Macro to list directories pointed by 'packages' fileref, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+7 -7
View File
@@ -3,7 +3,7 @@
Macro to generate SAS packages.
Version 20260216
Version 20260409
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -53,7 +53,7 @@
when empty takes buildLocation */
)/ secure minoperator
/*** HELP END ***/
des = 'Macro to generate SAS packages, version 20260216. Run %generatePackage() for help info.'
des = 'Macro to generate SAS packages, version 20260409. Run %generatePackage() for help info.'
;
%if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then
%do;
@@ -68,7 +68,7 @@ des = 'Macro to generate SAS packages, version 20260216. Run %generatePackage()
%put ### This is short help information for the `generatePackage` macro #;
%put #------------------------------------------------------------------------------------#;
%put # #;
%put # Macro to generate SAS packages, version `20260216` #;
%put # Macro to generate SAS packages, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -950,7 +950,7 @@ title6 "MD5 hashed fileref of package lowcase name: &_PackageFileref_.";
title&_titleNumber_. "Package ZIP file location is: &buildLocation.";
%end;
footnote1 "SAS Packages Framework, version 20260216";
footnote1 "SAS Packages Framework, version 20260409";
proc print
data = &filesWithCodes.(drop=base build folderRef fileRef rc folderid _abort_ fileId additionalContent)
@@ -1775,7 +1775,7 @@ data _null_;
%end;
put +(-1) '`.;'''
/ ' !! '' %put The macro generated: '' !! put(dtCASLudf, E8601DT19.-L) !! ";"'
/ ' !! '' %put with the SAS Packages Framework version 20260216.;'''
/ ' !! '' %put with the SAS Packages Framework version 20260409.;'''
/ ' !! '' %put ****************************************************************************;'''
/ ' !! '' %GOTO theEndOfTheMacro;'''
/ ' !! '' %end;''' ;
@@ -1939,7 +1939,7 @@ data _null_;
%end;
put +(-1) '`.; '' !!' /
''' %put The macro generated: ''' " !! put(dtIML, E8601DT19.-L) !! " '''; '' !! ' /
''' %put with the SAS Packages Framework version 20260216.; '' !! ' /
''' %put with the SAS Packages Framework version 20260409.; '' !! ' /
''' %put ****************************************************************************; '' !! ' /
''' %GOTO theEndOfTheMacro; '' !! ' /
''' %end; '' !! ' /
@@ -2811,7 +2811,7 @@ data _null_;
%end;
put 'put " " / @3 "---------------------------------------------------------------------" / " ";'
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20260216`*";'
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20260409`*";'
/ "put @3 '*under `&sysscp.`(`&sysscpl.`) operating system,*';"
/ "put @3 '*using SAS release: `&sysvlong4.`.*';"
/ 'put " " / @3 "---------------------------------------------------------------------";';
+2 -2
View File
@@ -28,7 +28,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to get help about SAS package, version 20260216. Run %helpPackage() for help info.'
des = 'Macro to get help about SAS package, version 20260409. 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 20260216. Run %helpPackage()
%put ### This is short help information for the `helpPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get help about SAS packages, version `20260216` #;
%put # Macro to get help about SAS packages, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+170 -9
View File
@@ -1,5 +1,5 @@
/*+installPackage+*/
/* Macros to install SAS packages, version 20260216 */
/* Macros to install SAS packages, version 20260409 */
/* 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
@@ -22,11 +22,14 @@
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 */
, githubRepo = %sysfunc(lowcase(&packageName.)) /* repo name to be used, by default it is the package name, but can be altered */
, githubToken = /* user's github fine-grained personal access token */
, githubTokenDebug = 0 /* debug values: 0,1,2,3 */
)
/secure
minoperator
/*** HELP END ***/
des = 'Macro to install SAS package, version 20260216. Run %%installPackage() for help info.'
des = 'Macro to install SAS package, version 20260409. Run %%installPackage() for help info.'
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
%do;
@@ -41,7 +44,7 @@ des = 'Macro to install SAS package, version 20260216. Run %%installPackage() fo
%put ### This is short help information for the `installPackage` macro #;
%put #--------------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to install SAS packages, version `20260216` #;
%put # Macro to install SAS packages, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -119,9 +122,27 @@ des = 'Macro to install SAS package, version 20260216. Run %%installPackage() fo
%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 # `https://github.com/<github>/<githubRepo>/raw/.../` #;
%put # All characters except `[A-z0-9_.-]` are compressed. #;
%put # #;
%put # - `githubRepo=` *Optional.* A name of a repository in GitHub. #;
%put # Allows an easy set of the search path for packages available on GitHub: #;
%put # `https://github.com/<github>/<githubRepo>/raw/.../` #;
%put # By default lowercase name of installed package is used. #;
%put # #;
%put # - `githubToken=` *Optional.* A fine-grained personal access token for GitHub. #;
%put # When the value is non-missing it triggers GitHub API access to #;
%put # private repositories. Of course the token used has to be configured #;
%put # properly for the access. #;
%put # Read GitHub documentation to learn how to create and setup your token: #;
%put # `https://docs.github.com/en/authentication/ #;
%put # keeping-your-account-and-data-secure/ #;
%put # managing-your-personal-access-tokens #;
%put # #creating-a-fine-grained-personal-access-token` #;
%put # (lines break added for easier reading) #;
%put # Public repos do not need authentication. #;
%put # [NOTE!] This feature is experimental in this release. #;
%put # #;
%put #--------------------------------------------------------------------------------------------#;
%put # #;
%put # Visit: `https://github.com/yabwon/SAS_PACKAGES/tree/main/SPF/Documentation` #;
@@ -259,7 +280,7 @@ des = 'Macro to install SAS package, version 20260216. Run %%installPackage() fo
%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 */
/* ingnore version support for github 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*/
@@ -340,7 +361,7 @@ des = 'Macro to install SAS package, version 20260216. Run %%installPackage() fo
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/&vers./SPF/SPFinit.sas;
%let SPFinitMirrorMD = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/&vers./SPF/SPFinit.md;
%end;
%if %superq(mirror) > 1 %then
%if NOT (%superq(mirror) in (0 1 4)) %then
%put %str( )Mirror %superq(mirror) does not support versioning.;
/* source code file */
@@ -363,12 +384,12 @@ des = 'Macro to install SAS package, version 20260216. Run %%installPackage() fo
%do;
%if %superq(mirror) IN (0 3 4) %then /* SASPAC or PharmaForest or an arbitrary GitHub repo */
%do;
%let packageSubDir = %sysfunc(lowcase(&packageName.))/raw/main/;
%let packageSubDir = &githubRepo./raw/main/;
%if %superq(vers) ne %then
%do;
/*%let packageSubDir = %sysfunc(lowcase(&packageName.))/main/hist/&version./;*/
%let packageSubDir = %sysfunc(lowcase(&packageName.))/raw/&vers./;
%let packageSubDir = &githubRepo./raw/&vers./;
%end;
%end;
%else
@@ -405,6 +426,13 @@ des = 'Macro to install SAS package, version 20260216. Run %%installPackage() fo
/* copy the file byte-by-byte */
%local installationRC;
%let installationRC=1;
%if (%superq(githubToken)= )
OR
(%upcase(&packageName.) in (SPFINIT SASPACKAGEFRAMEWORK SASPACKAGESFRAMEWORK))
%then
%do;
/* public repo, location with URL access, or SPFinit */
data _null_;
length filein fileinMD 8
out_path in_path out_pathMD in_pathMD rcTXT $ 4096
@@ -495,7 +523,140 @@ des = 'Macro to install SAS package, version 20260216. Run %%installPackage() fo
put @2 "Package documentation in markdown format not available." ; /* / out_pathMD / in_pathMD;*/
end;
run;
/************************************************************************************************************/
%end;
%else
%do;
/* when githubToken= is not null then a "private repo" case is assumed */
/* except for SPFinit.sas that is always installed from SAS_PACKAGES public repo */
%put [NOTE!] This feature is experimental in this release!;
%local ref notRunHTTP;
%let notRunHTTP=1;
%if %superq(vers)= %then %let ref = main;
%else %let ref = &vers.;
%if NOT(%superq(githubTokenDebug) in (0 1 2 3)) %then %let githubTokenDebug = 0;
%if %sysfunc(FEXIST(&out.)) = 0 %then
%do;
%put %str( )Installing the &packageName. package;
%put %str( )in the &firstPackagesPath. directory.;
%let notRunHTTP=0;
%end;
%else
%do;
%if 1=&replace. %then
%do;
%put %str( )The following file will be replaced during;
%put %str( )installation of the &packageName. package:;
%put %str( )%sysfunc(pathname(&out.));
%let notRunHTTP = %sysfunc(FDELETE(&out.));
%put %sysfunc(sysmsg());
%end;
%else
%do;
%put %str( )The following file will NOT be replaced:;
%put %str( )%sysfunc(pathname(&out.));
%let notRunHTTP = 1;
%end;
%end;
%if %superq(githubToken) NE %qsysfunc(compress(%superq(githubToken),%str( _),KAD)) %then
%do;
%put WARNING: The githubToken= parameter contains illegal symbols;
%put WARNING- Allowed symbols are letters A to Z and a to z, digits 0 to 9, and underscore(_);
%put WARNING- Verify your token. Installation aborted.;
%let notRunHTTP = 1;
%end;
%if &notRunHTTP.=0 %then
%do;
%put %str( )URL called by PROC HTTP is:;
%put %str( )"https://api.github.com/repos/&github./&githubRepo./contents/%sysfunc(lowcase(&packageName.)).zip?ref=&ref.";
%put %str( )Headers:;
%put %str( )Accept=application/vnd.github.raw+json;
%put %str( )X-GitHub-Api-Version=2026-03-10;
%put %str( )Authorization=Bearer *****************;
%put %str( );
/* proc http setup based on:
https://docs.github.com/en/rest/repos/contents?apiVersion=2026-03-10#get-repository-content
*/
proc http
method="GET"
out=&out.
URL=
"https://api.github.com/repos/&github./&githubRepo./contents/%sysfunc(lowcase(&packageName.)).zip?ref=&ref."
CLEAR_CACHE
;
headers
"Accept"="application/vnd.github.raw+json"
"X-GitHub-Api-Version"="2026-03-10"
"Authorization"="Bearer &githubToken."
;
debug level=&githubTokenDebug.;
run;
%if %sysfunc(FEXIST(&out.)) AND &SYS_PROCHTTP_STATUS_CODE.=200 %then
%do;
%let installationRC=0;
%put %str( )Done with return code rc=0 (zero = success);
%end;
%else
%do;
%let installationRC=1;
%put %str( )Done with return code rc=&SYS_PROCHTTP_STATUS_CODE. (zero = success);
%put %str( )Message: &SYS_PROCHTTP_STATUS_PHRASE.;
%end;
%let notRunHTTP=1;
%if 1=&instDoc. AND 0=&installationRC. %then
%do;
%if %sysfunc(FEXIST(&outMD.)) = 0 %then
%do;
%put %str( )Package documentation installation on request:;
%let notRunHTTP = 0;
%end;
%else %if 1=&replace. %then
%do;
%put %str( )Package documentation installation on demand:;
%let notRunHTTP = %sysfunc(FDELETE(&outMD.));
%if &notRunHTTP. %then %put %sysfunc(sysmsg());
%end;
%if &notRunHTTP.=0 %then
%do;
proc http
method="GET"
out=&outMD.
URL=
"https://api.github.com/repos/&github./&githubRepo./contents/%sysfunc(lowcase(&packageName.)).md?ref=&ref."
CLEAR_CACHE
;
headers
"Accept"="application/vnd.github.raw+json"
"X-GitHub-Api-Version"="2026-03-10"
"Authorization"="Bearer &githubToken."
;
debug level=&githubTokenDebug.;
run;
%if %sysfunc(FEXIST(&outMD.)) AND &SYS_PROCHTTP_STATUS_CODE.=200
%then %put %str( )status successful!;
%else %put %str( )status unsuccessful!;
%end;
%end;
%end;
%else
%do;
%let installationRC=1;
%put %str( )Done with return code rc=1 (zero = success);
%end;
/************************************************************************************************************/
%end;
filename &in. clear;
filename &out. clear;
filename &inMD. clear;
+2 -2
View File
@@ -4,7 +4,7 @@
vERRb /* indicates if macro should be verbose and report errors */
)
/ minoperator PARMBUFF
des = 'Macro to check if the PACKAGES fileref is "correct", type %isPackagesFilerefOK(HELP) for help, version 20260216.'
des = 'Macro to check if the PACKAGES fileref is "correct", type %isPackagesFilerefOK(HELP) for help, version 20260409.'
;
/*** HELP END ***/
%if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then
@@ -20,7 +20,7 @@ des = 'Macro to check if the PACKAGES fileref is "correct", type %isPackagesFile
%put ### This is short help information for the `isPackagesFilerefOK` macro #;
%put #-----------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to check if the `packages` fileref is "correct", version `20260216` #;
%put # Macro to check if the `packages` fileref is "correct", version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+3 -3
View File
@@ -3,7 +3,7 @@
Macro to list SAS packages in packages folder.
Version 20260216
Version 20260409
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -25,7 +25,7 @@
listDataSet /* Name of a data set to save results */
, quiet = 0 /* Indicate if results should be printed in log */
)/secure parmbuff
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20260216.'
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20260409.'
;
%if (%QUPCASE(&listDataSet.) = HELP) %then
%do;
@@ -40,7 +40,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 `20260216` #;
%put # Macro to list available SAS packages, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+2 -2
View File
@@ -36,7 +36,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to load SAS package, version 20260216. Run %loadPackage() for help info.'
des = 'Macro to load SAS package, version 20260409. Run %loadPackage() for help info.'
minoperator
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
@@ -52,7 +52,7 @@ minoperator
%put ### This is short help information for the `loadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to *load* SAS packages, version `20260216` #;
%put # Macro to *load* SAS packages, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+2 -2
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 20260216. Run %loadPackageAddCnt() for help info.'
des = 'Macro to load additional content for a SAS package, version 20260409. 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 `20260216` #;
%put # Macro to *load* additional content for a SAS package, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+2 -2
View File
@@ -11,7 +11,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to load multiple SAS packages at one run, version 20260216. Run %loadPackages() for help info.'
des = 'Macro to load multiple SAS packages at one run, version 20260409. 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 `20260216` #;
%put # Macro wrapper for the loadPackage macro, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+2 -2
View File
@@ -23,7 +23,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to preview content of a SAS package, version 20260216. Run %previewPackage() for help info.'
des = 'Macro to preview content of a SAS package, version 20260409. 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 20260216. Run %preview
%put ### This is short help information for the `previewPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get preview of a SAS packages, version `20260216` #;
%put # Macro to get preview of a SAS packages, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+2 -2
View File
@@ -15,7 +15,7 @@
,psMAX=MAX /* pageSise in case executed inside DoSubL() */
,ods= /* a data set for results, e.g., work.relocatePackageReport */
)
/ des = 'Utility macro that locally Copies or Moves Packages, version 20260216. Run %relocatePackage() for help info.'
/ des = 'Utility macro that locally Copies or Moves Packages, version 20260409. Run %relocatePackage() for help info.'
secure
minoperator
;
@@ -33,7 +33,7 @@
%put ### This is short help information for the `relocatePackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to *locally copy or move* (relocate) SAS packages, version `20260216` #;
%put # Macro to *locally copy or move* (relocate) SAS packages, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+2 -2
View File
@@ -5,7 +5,7 @@ SPFmacroName /* space separated list of names */
/
minoperator
secure
des = 'Macro to provide help notes about SAS Packages Framework macros, version 20260216. Run %SasPackagesFrameworkNotes(HELP) for help info.'
des = 'Macro to provide help notes about SAS Packages Framework macros, version 20260409. Run %SasPackagesFrameworkNotes(HELP) for help info.'
;
%local list N i element;
%let list=
@@ -51,7 +51,7 @@ SasPackagesFrameworkNotes
%put ### This is short help information for the `SasPackagesFrameworkNotes` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro prints help notes for SAS Packages Framework macros, version `20260216` #;
%put # Macro prints help notes for SAS Packages Framework macros, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+1 -1
View File
@@ -1,6 +1,6 @@
/*+SPFint_gnPckg_arch+*/
%macro SPFint_gnPckg_arch()/secure minoperator
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the archive version generation part of the process. Version 20260216.';
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the archive version generation part of the process. Version 20260409.';
/* macro picks up all macrovariables from external scope, so from the %generatePackage() macro */
%if %sysmexecname(%sysmexecdepth-1) in (GENERATEPACKAGE) %then
%do;
+2 -2
View File
@@ -1,6 +1,6 @@
/*+SPFint_gnPckg_markdown+*/
%macro SPFint_gnPckg_markdown()/secure minoperator
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the markdown documentation part of the process. Version 20260216.';
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the markdown documentation part of the process. Version 20260409.';
/* macro picks up all macrovariables from external scope, so from the %generatePackage() macro */
%if %sysmexecname(%sysmexecdepth-1) in (GENERATEPACKAGE) %then
%do;
@@ -112,7 +112,7 @@ data &filesWithCodes.markdown;
%end;
put " " / "---------------------------------------------------------------------" / " "
/ "*SAS package generated by SAS Package Framework, version `20260216`,*"
/ "*SAS package generated by SAS Package Framework, version `20260409`,*"
/ "*under `&sysscp.`(`&sysscpl.`) operating system,*"
/ "*using SAS release: `&sysvlong4.`.*"
/ " " / "---------------------------------------------------------------------" / " ";
+1 -1
View File
@@ -1,6 +1,6 @@
/*+SPFint_gnPckg_tests+*/
%macro SPFint_gnPckg_tests()/secure minoperator
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the test part of the process. Version 20260216.';
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the test part of the process. Version 20260409.';
/* macro picks up all macrovariables from external scope, so from the %generatePackage() macro */
%if %sysmexecname(%sysmexecdepth-1) in (GENERATEPACKAGE) %then
%do;
+3 -3
View File
@@ -8,7 +8,7 @@
,nobs=0 /* technical parameter */
)
/*** HELP END ***/
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20260216. Run %splitCodeForPackage() for help info.'
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20260409. Run %splitCodeForPackage() for help info.'
;
%if (%superq(codeFile) = ) OR (%qupcase(&codeFile.) = HELP) %then
%do;
@@ -24,7 +24,7 @@
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Utility macro to *split* single file with SAS package code into multiple #;
%put # files with separate snippets, version `20260216` #;
%put # files with separate snippets, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -400,7 +400,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 20260216. */';
put '/* File generated with help of SAS Packages Framework, version 20260409. */';
firstLine[j]=0;
end;
put _infile_;
+2 -2
View File
@@ -8,7 +8,7 @@
,ods= /* data set for report file */
,verify=0
)/
des='Macro to extract a bundle of SAS packages, version 20260216. Run %unbundlePackages(HELP) for help info.'
des='Macro to extract a bundle of SAS packages, version 20260409. Run %unbundlePackages(HELP) for help info.'
secure
minoperator
;
@@ -26,7 +26,7 @@ minoperator
%put ### This is short help information for the `unbundlePackages` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to *extract* SAS packages from a bundle, version `20260216` #;
%put # Macro to *extract* SAS packages from a bundle, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+2 -2
View File
@@ -20,7 +20,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to unload SAS package, version 20260216. Run %unloadPackage() for help info.'
des = 'Macro to unload SAS package, version 20260409. 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 20260216. Run %unloadPackage() for h
%put ### This is short help information for the `unloadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to unload SAS packages, version `20260216` #;
%put # Macro to unload SAS packages, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
+2 -2
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 20260216. Run %verifyPackage() for help info.'
des = 'Macro to verify SAS package with the hash digest, version 20260409. 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 20260216. Run %
%put ### This is short help information for the `verifyPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to verify SAS package with it hash digest, version `20260216` #;
%put # Macro to verify SAS package with it hash digest, version `20260409` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;