mirror of
https://github.com/yabwon/SAS_PACKAGES.git
synced 2026-04-17 03:23:14 +00:00
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:
@@ -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 #;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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 "---------------------------------------------------------------------";';
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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.`.*"
|
||||
/ " " / "---------------------------------------------------------------------" / " ";
|
||||
|
||||
@@ -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.)" /;
|
||||
|
||||
@@ -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_;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
@@ -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 #;
|
||||
|
||||
Reference in New Issue
Block a user