SAS Packages Framework version 20260126

SAS Packages Framework version 20260126

Changes:
- A utility function and a utility macro is now added to every package generated with %generatePackage() macro.
- Documentation updated.

Packages regenerated:
- BasePlus: F*91A5AD4709A418704315EF37DDCF954522D4FB42808D406B3ED4DA560F6864C6
- DFA: F*643FBE2B7AE1425FC0240139813B93AE2C6BCFFDF6A0CFAEBEC11F83D3548E57
- GSM: F*7A4FEC410DEB921613A33F154FBBE332D7EC4C4DAC1351A4E611D986489EE848
- macroArray: F*9DA64CA9A745E1DB7176F7AF4459BB014F61F71626473ABF6471A32689E14FF1
- SQLinDS: F*CEAA4C90515F6E8AACBFFD55ABA6544E399EDBE0A7081107B62DCEE6F5430A1D
- bpUTiL: F*D03FD84D518F0CF4E0042BFEA864D9118D7FF97265DC49019425878BDBA31FE8
- evExpress: F*A8A4B0389A765D4D22FDD7AF42C542C2AC537F0D81FFB2B65605C60B1E9CB1B4
This commit is contained in:
Bart Jablonski
2026-01-26 17:21:32 +01:00
parent 3520e4b948
commit dcb012883f
36 changed files with 748 additions and 383 deletions

View File

@@ -8,7 +8,7 @@
,packagesRef=packages
,ods= /* data set for report file */
)/
des='Macro to create a bundle of SAS packages, version 20260125. Run %bundlePackages(HELP) for help info.'
des='Macro to create a bundle of SAS packages, version 20260126. 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 `20260125` #;
%put # Macro to *create bundles* of SAS packages, version `20260126` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

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 20260125. Run %extendPackagesFileref(HELP) for help info.'
des = 'Macro to list directories pointed by "packages" fileref, version 20260126. 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 20260125
%put ### This is short help information for the `extendPackagesFileref` macro #;
%put #-----------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to list directories pointed by 'packages' fileref, version `20260125` #;
%put # Macro to list directories pointed by 'packages' fileref, version `20260126` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -3,7 +3,7 @@
Macro to generate SAS packages.
Version 20260125
Version 20260126
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -29,7 +29,7 @@
if more than one are provided only the first is used */
,testResults= /* location where tests results should be stored,
if null (the default) the WORK is used */
,workInTestResults=0 /* indicates if WORK directories for tests should located
,workInTestResults=0 /* indicates if WORK directories for tests should be located
in the same place as results */
,testWorkPath= /* location where tests SAS sessions' work directories
should be stored, if null (the default) the main SAS
@@ -53,7 +53,7 @@
when empty takes buildLocation */
)/ secure minoperator
/*** HELP END ***/
des = 'Macro to generate SAS packages, version 20260125. Run %generatePackage() for help info.'
des = 'Macro to generate SAS packages, version 20260126. 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 20260125. Run %generatePackage()
%put ### This is short help information for the `generatePackage` macro #;
%put #------------------------------------------------------------------------------------#;
%put # #;
%put # Macro to generate SAS packages, version `20260125` #;
%put # Macro to generate SAS packages, version `20260126` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -262,13 +262,13 @@ filename &_LIC_. "&filesLocation./license.sas" lrecl = 1024;
options &qlenmax_fstimer_tmp.;
/* test for required descriptors */
%if (%nrbquote(&packageName.) = )
or (%nrbquote(&packageVersion.) = )
or (%nrbquote(&packageAuthor.) = )
or (%nrbquote(&packageMaintainer.) = )
or (%nrbquote(&packageTitle.) = )
or (%nrbquote(&packageEncoding.) = )
or (%nrbquote(&packageLicense.) = )
%if (%superq(packageName) = )
or (%superq(packageVersion) = )
or (%superq(packageAuthor) = )
or (%superq(packageMaintainer) = )
or (%superq(packageTitle) = )
or (%superq(packageEncoding) = )
or (%superq(packageLicense) = )
%then
%do;
%put ERROR: At least one of descriptors is missing!;
@@ -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 20260125";
footnote1 "SAS Packages Framework, version 20260126";
proc print
data = &filesWithCodes.(drop=base build folderRef fileRef rc folderid _abort_ fileId additionalContent)
@@ -1239,7 +1239,7 @@ data _null_;
/ ' /* print out setinit */ '
/ ' proc setinit %str(;) run %str(;) '
/ ' proc printto %str(;) run %str(;) '
/ ' options ps=min %str(;) '
/ ' data _null_ %str(;) '
/ ' /* loadup checklist of required SAS components */ '
/ ' if _n_ = 1 then '
@@ -1298,8 +1298,10 @@ data _null_;
packageReqPackages = lowcase(symget('packageReqPackages'));
/* try to load required packages */
put 'data _null_ ; '
/ ' if "*" NE symget("cherryPick") then do; put "NOTE: No required packages loading."; stop; end; '
put '%let temp_noNotes_etc=%sysfunc(getoption(NOTES));'
/ 'options noNotes;'
/ 'data _null_ ; '
/ ' if "*" NE symget("cherryPick") then do; put "INFO: No required packages loading."; stop; end; '
/ ' length req name $ 64 vers verR $ 24 versN verRN 8 SYSloadedPackages $ 32767; '
/ ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '
/ ' do; '
@@ -1341,7 +1343,7 @@ data _null_;
/ ' if (LP_find ne 0) or (LP_find = 0 and . < versN < verRN) then '
/ ' do; '
/ ' put "NOTE: Trying to load required SAS package: " req; '
/ ' put "INFO: Trying to load required SAS package: " req; '
/ ' if LoadPackageExist then '
/ ' call execute(cats(''%nrstr(%loadPackage('', name, ", requiredVersion = ", verR, "))")); '
/ ' else if ICELoadPackageExist then '
@@ -1353,7 +1355,7 @@ data _null_;
/* test if required packages are loaded */
/ 'data _null_ ; '
/ ' if "*" NE symget("cherryPick") then do; put "NOTE: No required packages checking."; stop; end; '
/ ' if "*" NE symget("cherryPick") then do; put "INFO: No required packages checking."; stop; end; '
/ ' length req name $ 64 vers verR $ 24 versN verRN 8 SYSloadedPackages $ 32767; '
/ ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '
/ ' do; '
@@ -1414,14 +1416,17 @@ data _null_;
/ ' end ; '
/ ' end; '
/ ' stop; '
/ 'run; ';
/ 'run; '
/ 'options &temp_noNotes_etc.;';
%end;
%if (%superq(packageRequired) ne )
or (%superq(packageReqPackages) ne )
%then
%do;
put ' data _null_; '
put ' %let temp_noNotes_etc=%sysfunc(getoption(NOTES));'
/ ' options noNotes;'
/ ' data _null_; '
/ ' if 1 = symgetn("packageRequiredErrors") then '
/ ' do; '
/ ' put "ERROR: Loading package &packageName. will be aborted!";'
@@ -1436,7 +1441,8 @@ data _null_;
/ ' else '
/ ' call symputX("packageRequiredErrors", " ", "L");'
/ ' run; '
/ ' &packageRequiredErrors. ';
/ ' &packageRequiredErrors. '
/ ' options &temp_noNotes_etc.; ';
%end;
@@ -1769,7 +1775,7 @@ data _null_;
%end;
put +(-1) '`.;'''
/ ' !! '' %put The macro generated: '' !! put(dtCASLudf, E8601DT19.-L) !! ";"'
/ ' !! '' %put with the SAS Packages Framework version 20260125.;'''
/ ' !! '' %put with the SAS Packages Framework version 20260126.;'''
/ ' !! '' %put ****************************************************************************;'''
/ ' !! '' %GOTO theEndOfTheMacro;'''
/ ' !! '' %end;''' ;
@@ -1933,7 +1939,7 @@ data _null_;
%end;
put +(-1) '`.; '' !!' /
''' %put The macro generated: ''' " !! put(dtIML, E8601DT19.-L) !! " '''; '' !! ' /
''' %put with the SAS Packages Framework version 20260125.; '' !! ' /
''' %put with the SAS Packages Framework version 20260126.; '' !! ' /
''' %put ****************************************************************************; '' !! ' /
''' %GOTO theEndOfTheMacro; '' !! ' /
''' %end; '' !! ' /
@@ -2149,6 +2155,65 @@ data _null_;
put 'run;';
/* KMF -------------------------------------------------------------------------------- end */
/*=add meta function========================================================================*/
isFunction+1;
length packageName $ 32 packageVersion packageGenerated $ 24
packageTitle packageAuthor packageMaintainer $ 2048
packageEncoding $ 8 packageLicense $ 128;
packageName = quote(strip(symget('packageName')),'"');
packageVersion = quote(strip(symget('packageVersion')),'"');
packageTitle = quote(strip(symget('packageTitle')),'"');
packageAuthor = quote(strip(symget('packageAuthor')),'"');
packageMaintainer = quote(strip(symget('packageMaintainer')),'"');
packageEncoding = quote(strip(symget('packageEncoding')),'"');
packageLicense = quote(strip(symget('packageLicense')),'"');
packageGenerated = quote(strip(symget('packageGenerated')),'"');
/* add quotes to hide special characters */
%if (%superq(packageReqPackages) ne ) %then /* required packages list */
%do;
packageReqPackages = quote(strip(packageReqPackages));
%end;
%if (%superq(packageRequired) ne ) %then /* required SAS products */
%do;
packageRequired = quote(strip(packageRequired));
%end;
put "proc fcmp outlib = work.&packageName.fcmp.packagemeta ; "
/ " function &packageName.META(meta $) $ 32767;"
/ ' m = char(upcase(meta),1);'
/ " if m = 'V' then return(strip(" packageVersion +(-1) "));"
/ " if m = 'D' then return(strip(" packageGenerated +(-1) "));"
/ " if m = 'A' then return(strip(" packageAuthor +(-1) "));"
/ " if m = 'M' then return(strip(" packageMaintainer +(-1) "));"
/ " if m = 'T' then return(strip(" packageTitle +(-1) "));"
/ " if m = 'E' then return(strip(" packageEncoding +(-1) "));"
/ " if m = 'L' then return(strip(" packageGenerated +(-1) "));"
%if (%superq(packageReqPackages) ne ) %then /* required packages list */
%do;
/ " if m = 'P' then return(strip(" packageReqPackages +(-1) "));"
%end;
%if (%superq(packageRequired) ne ) %then /* required SAS products */
%do;
/ " if m = 'S' then return(strip(" packageRequired +(-1) "));"
%end;
/ ' return(" ");'
/ ' endfunc;'
/ 'quit;';
put '%sysfunc(ifc(0<'
/ ' %sysfunc(findw((%sysfunc(getoption(cmplib)))'
/ " ,work.%sysfunc(lowcase(&packageName.fcmp)),""'( )'"",RIO))"
/ ',,%str(options' " APPEND=(cmplib = work.%sysfunc(lowcase(&packageName.fcmp)));)"
/ '))' ;
put '%macro ' "&packageName.META(meta)/parmbuff;" /* returned values are quoted to mask special chars*/
/ '%if %superq(meta) = %then %return;'
/ '%do;%qsysfunc(strip(%qsysfunc(' "&packageName.META" '&syspbuff.)))%end;'
/ '%mend;' / /;
/*==========================================================================================*/
/* list cmplib for functions and fmtsearch for formats*/
if isFunction OR isProto then
do;
@@ -2162,8 +2227,10 @@ data _null_;
end;
/* update SYSloadedPackages global macrovariable */
put 'options noNotes;'
/ '%if (%str(*)=%superq(cherryPick)) %then %do; ' /* Cherry Pick test3 start */
put '%if (%str(*)=%superq(cherryPick)) %then %do; ' /* Cherry Pick test3 start */
/ ' %let temp_noNotes_etc=%sysfunc(getoption(NOTES));'
/ ' options noNotes;'
/ ' data _null_ ; '
/ ' length SYSloadedPackages stringPCKG $ 32767; '
/ ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '
@@ -2180,7 +2247,7 @@ data _null_;
/ " SYSloadedPackages = catx('#', SYSloadedPackages, '&packageName.(&packageVersion.)'); "
/ ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); '
/ ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); '
/ ' put / "INFO:[SYSLOADEDPACKAGES] " SYSloadedPackages ; '
/ ' put / "INFO: [SYSLOADEDPACKAGES] " SYSloadedPackages ; '
/ ' end ; '
/ " else "
/ ' do; '
@@ -2189,21 +2256,22 @@ data _null_;
/ " SYSloadedPackages = catx('#', SYSloadedPackages, '&packageName.(&packageVersion.)'); "
/ ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); '
/ ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); '
/ ' put / "INFO:[SYSLOADEDPACKAGES] " SYSloadedPackages ; '
/ ' put / "INFO: [SYSLOADEDPACKAGES] " SYSloadedPackages ; '
/ ' end ; '
/ ' end; '
/ ' else '
/ ' do; '
/ " call symputX('SYSloadedPackages', '&packageName.(&packageVersion.)', 'G'); "
/ " put / 'INFO:[SYSLOADEDPACKAGES] &packageName.(&packageVersion.)'; "
/ " put / 'INFO: [SYSLOADEDPACKAGES] &packageName.(&packageVersion.)'; "
/ ' end; '
/ ' stop; '
/ ' run; '
/ ' options &temp_noNotes_etc.;'
/ '%end; ' / ; /* Cherry Pick test3 end */
put 'options NOTES;'
/ '%put NOTE- ;'
/ '%put NOTE: '"Loading package &packageName., version &packageVersion., license &packageLicense.;"
/ '%put NOTE: '"Loading package &packageName., version "'%'"&packageName.META(V), license &packageLicense.;"
/ '%put NOTE- *** END ***;' /;
put 'options &temp_noNotes_etc.;'
@@ -2314,7 +2382,8 @@ data _null_;
/ ' from dictionary.catalogs'
/ ' where '
/ ' ('
/ ' objname in ("*"'
/ ' objname in ("*"'
/ " ,%UPCASE('&packageName.META')"
/ " ,%UPCASE('&packageName.IML')"
/ " ,%UPCASE('&packageName.CASLUDF')";
/* list of macros */
@@ -2416,7 +2485,12 @@ data _null_;
/ 'deletefunc ' fileshort ';';
isFunction + 1;
end;
put "run;" /;
put "quit;" /;
put "proc fcmp outlib = work.&packageName.fcmp.packagemeta;"
/ "deletefunc &packageName.META;"
/ "quit;" /;
isFunction + 1;
/* delete the link to the functions dataset */
if isFunction then
@@ -2736,7 +2810,7 @@ data _null_;
%end;
put 'put " " / @3 "---------------------------------------------------------------------" / " ";'
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20260125`*";'
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20260126`*";'
/ "put @3 '*under `&sysscp.`(`&sysscpl.`) operating system,*';"
/ "put @3 '*using SAS release: `&sysvlong4.`.*';"
/ 'put " " / @3 "---------------------------------------------------------------------";';

View File

@@ -28,7 +28,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to get help about SAS package, version 20260125. Run %helpPackage() for help info.'
des = 'Macro to get help about SAS package, version 20260126. 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 20260125. Run %helpPackage()
%put ### This is short help information for the `helpPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get help about SAS packages, version `20260125` #;
%put # Macro to get help about SAS packages, version `20260126` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -1,5 +1,5 @@
/*+installPackage+*/
/* Macros to install SAS packages, version 20260125 */
/* Macros to install SAS packages, version 20260126 */
/* 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
@@ -26,7 +26,7 @@
/secure
minoperator
/*** HELP END ***/
des = 'Macro to install SAS package, version 20260125. Run %%installPackage() for help info.'
des = 'Macro to install SAS package, version 20260126. Run %%installPackage() for help info.'
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
%do;
@@ -41,7 +41,7 @@ des = 'Macro to install SAS package, version 20260125. Run %%installPackage() fo
%put ### This is short help information for the `installPackage` macro #;
%put #--------------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to install SAS packages, version `20260125` #;
%put # Macro to install SAS packages, version `20260126` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

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 20260125.'
des = 'Macro to check if the PACKAGES fileref is "correct", type %isPackagesFilerefOK(HELP) for help, version 20260126.'
;
/*** 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 `20260125` #;
%put # Macro to check if the `packages` fileref is "correct", version `20260126` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -3,7 +3,7 @@
Macro to list SAS packages in packages folder.
Version 20260125
Version 20260126
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -21,9 +21,11 @@
*//*** HELP END ***/
%macro listPackages(listDataSet, quiet=0)
/ secure PARMBUFF
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20260125.'
%macro listPackages(
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 20260126.'
;
%if (%QUPCASE(&listDataSet.) = HELP) %then
%do;
@@ -38,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 `20260125` #;
%put # Macro to list available SAS packages, version `20260126` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -36,7 +36,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to load SAS package, version 20260125. Run %loadPackage() for help info.'
des = 'Macro to load SAS package, version 20260126. 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 `20260125` #;
%put # Macro to *load* SAS packages, version `20260126` #;
%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 20260125. Run %loadPackageAddCnt() for help info.'
des = 'Macro to load additional content for a SAS package, version 20260126. 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 `20260125` #;
%put # Macro to *load* additional content for a SAS package, version `20260126` #;
%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 20260125. Run %loadPackages() for help info.'
des = 'Macro to load multiple SAS packages at one run, version 20260126. 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 `20260125` #;
%put # Macro wrapper for the loadPackage macro, version `20260126` #;
%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 20260125. Run %previewPackage() for help info.'
des = 'Macro to preview content of a SAS package, version 20260126. 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 20260125. Run %preview
%put ### This is short help information for the `previewPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get preview of a SAS packages, version `20260125` #;
%put # Macro to get preview of a SAS packages, version `20260126` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

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 20260125. Run %relocatePackage() for help info.'
/ des = 'Utility macro that locally Copies or Moves Packages, version 20260126. 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 `20260125` #;
%put # Macro to *locally copy or move* (relocate) SAS packages, version `20260126` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

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 20260125. Run %SasPackagesFrameworkNotes(HELP) for help info.'
des = 'Macro to provide help notes about SAS Packages Framework macros, version 20260126. 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 `20260125` #;
%put # Macro prints help notes for SAS Packages Framework macros, version `20260126` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

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 20260125.';
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the archive version generation part of the process. Version 20260126.';
/* macro picks up all macrovariables from external scope, so from the %generatePackage() macro */
%if %sysmexecname(%sysmexecdepth-1) in (GENERATEPACKAGE) %then
%do;

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 20260125.';
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the markdown documentation part of the process. Version 20260126.';
/* 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 `20260125`,*"
/ "*SAS package generated by SAS Package Framework, version `20260126`,*"
/ "*under `&sysscp.`(`&sysscpl.`) operating system,*"
/ "*using SAS release: `&sysvlong4.`.*"
/ " " / "---------------------------------------------------------------------" / " ";

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 20260125.';
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the test part of the process. Version 20260126.';
/* macro picks up all macrovariables from external scope, so from the %generatePackage() macro */
%if %sysmexecname(%sysmexecdepth-1) in (GENERATEPACKAGE) %then
%do;
@@ -73,6 +73,18 @@ run;
put @n '%loadpackage'"(&packageName.,";
put @n " path=&buildLocation., lazyData=*)" /;
/* meta */
put @n '%put >>>%'"&packageName."'META( )<<<;'/
@n '%put >>>%'"&packageName."'META(V)<<<;'/
@n '%put >>>%'"&packageName."'META(D)<<<;'/
@n '%put >>>%'"&packageName."'META(A)<<<;'/
@n '%put >>>%'"&packageName."'META(M)<<<;'/
@n '%put >>>%'"&packageName."'META(L)<<<;'/
@n '%put >>>%'"&packageName."'META(E)<<<;'/
@n '%put >>>%'"&packageName."'META(T)<<<;'/
@n '%put >>>%'"&packageName."'META(P)<<<;'/
@n '%put >>>%'"&packageName."'META(S)<<<;'/;
/* help */
put @n '%helpPackage'"(&packageName.,";
put @n " path=&buildLocation.)" /;
@@ -292,6 +304,19 @@ data _null_;
put '%loadpackage'"(&packageName.,"
/ " path=&buildLocation., lazyData=*)" /;
/* meta */
put '%put >>null >%'"&packageName."'META( )<<<;'/
'%put >>unknown >%'"&packageName."'META(U)<<<;'/ /* test for unknown values */
'%put >>version >%'"&packageName."'META(V)<<<;'/
'%put >>datetime >%'"&packageName."'META(D)<<<;'/
'%put >>authors >%'"&packageName."'META(A)<<<;'/
'%put >>maintainers >%'"&packageName."'META(M)<<<;'/
'%put >>license >%'"&packageName."'META(L)<<<;'/
'%put >>encoding >%'"&packageName."'META(E)<<<;'/
'%put >>title >%'"&packageName."'META(T)<<<;'/
'%put >>req packages>%'"&packageName."'META(P)<<<;'/
'%put >>req SAS >%'"&packageName."'META(S)<<<;'/;
/* help */
put '%helpPackage'"(&packageName.,"
/ " path=&buildLocation.)" /;

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 20260125. Run %splitCodeForPackage() for help info.'
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20260126. 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 `20260125` #;
%put # files with separate snippets, version `20260126` #;
%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 20260125. */';
put '/* File generated with help of SAS Packages Framework, version 20260126. */';
firstLine[j]=0;
end;
put _infile_;

View File

@@ -8,7 +8,7 @@
,ods= /* data set for report file */
,verify=0
)/
des='Macro to extract a bundle of SAS packages, version 20260125. Run %unbundlePackages(HELP) for help info.'
des='Macro to extract a bundle of SAS packages, version 20260126. 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 `20260125` #;
%put # Macro to *extract* SAS packages from a bundle, version `20260126` #;
%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 20260125. Run %unloadPackage() for help info.'
des = 'Macro to unload SAS package, version 20260126. 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 20260125. Run %unloadPackage() for h
%put ### This is short help information for the `unloadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to unload SAS packages, version `20260125` #;
%put # Macro to unload SAS packages, version `20260126` #;
%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 20260125. Run %verifyPackage() for help info.'
des = 'Macro to verify SAS package with the hash digest, version 20260126. 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 20260125. Run %
%put ### This is short help information for the `verifyPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to verify SAS package with it hash digest, version `20260125` #;
%put # Macro to verify SAS package with it hash digest, version `20260126` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;