SAS Packages Framework, version 20241129

SAS Packages Framework, version 20241129

Bug Fix in:
- `%generatePackage()` macro, and
- `%splitCodeForPackage()` macro.

---
This commit is contained in:
Bart Jablonski
2024-11-29 17:01:10 +01:00
parent 006377b255
commit c4e21e86b6
15 changed files with 99 additions and 99 deletions

View File

@@ -42,7 +42,7 @@
- to unload, or
- to generate SAS packages.
Version 20241102.
Version 20241129.
See examples below.
A SAS package is a zip file containing a group of files
@@ -91,7 +91,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to load SAS package, version 20241102. Run %loadPackage() for help info.'
des = 'Macro to load SAS package, version 20241129. Run %loadPackage() for help info.'
minoperator
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
@@ -107,7 +107,7 @@ minoperator
%put ### This is short help information for the `loadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to *load* SAS packages, version `20241102` #;
%put # Macro to *load* SAS packages, version `20241129` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -382,7 +382,7 @@ minoperator
*/
)/secure
/*** HELP END ***/
des = 'Macro to unload SAS package, version 20241102. Run %unloadPackage() for help info.'
des = 'Macro to unload SAS package, version 20241129. Run %unloadPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -397,7 +397,7 @@ des = 'Macro to unload SAS package, version 20241102. Run %unloadPackage() for h
%put ### This is short help information for the `unloadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to unload SAS packages, version `20241102` #;
%put # Macro to unload SAS packages, version `20241129` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -548,7 +548,7 @@ des = 'Macro to unload SAS package, version 20241102. Run %unloadPackage() for h
*/
)/secure
/*** HELP END ***/
des = 'Macro to get help about SAS package, version 20241102. Run %helpPackage() for help info.'
des = 'Macro to get help about SAS package, version 20241129. Run %helpPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -563,7 +563,7 @@ des = 'Macro to get help about SAS package, version 20241102. Run %helpPackage()
%put ### This is short help information for the `helpPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get help about SAS packages, version `20241102` #;
%put # Macro to get help about SAS packages, version `20241129` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -704,7 +704,7 @@ TODO:
*/
/*+installPackage+*/
/* Macros to install SAS packages, version 20241102 */
/* Macros to install SAS packages, version 20241129 */
/* 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
@@ -728,7 +728,7 @@ TODO:
/secure
minoperator
/*** HELP END ***/
des = 'Macro to install SAS package, version 20241102. Run %%installPackage() for help info.'
des = 'Macro to install SAS package, version 20241129. Run %%installPackage() for help info.'
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
%do;
@@ -743,7 +743,7 @@ des = 'Macro to install SAS package, version 20241102. Run %%installPackage() fo
%put ### This is short help information for the `installPackage` macro #;
%put #--------------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to install SAS packages, version `20241102` #;
%put # Macro to install SAS packages, version `20241129` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -1276,7 +1276,7 @@ des = 'Macro to install SAS package, version 20241102. Run %%installPackage() fo
Macro to list SAS packages in packages folder.
Version 20241102
Version 20241129
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -1296,7 +1296,7 @@ des = 'Macro to install SAS package, version 20241102. Run %%installPackage() fo
%macro listPackages()
/secure PARMBUFF
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20241102.'
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20241129.'
;
%if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then
%do;
@@ -1311,7 +1311,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 `20241102` #;
%put # Macro to list available SAS packages, version `20241129` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -1462,7 +1462,7 @@ options ls = &ls_tmp. ps = &ps_tmp. &notes_tmp. &source_tmp.;
Macro to generate SAS packages.
Version 20241102
Version 20241129
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -1502,7 +1502,7 @@ options ls = &ls_tmp. ps = &ps_tmp. &notes_tmp. &source_tmp.;
file name be created */
)/ secure minoperator
/*** HELP END ***/
des = 'Macro to generate SAS packages, version 20241102. Run %generatePackage() for help info.'
des = 'Macro to generate SAS packages, version 20241129. Run %generatePackage() for help info.'
;
%if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then
%do;
@@ -1517,7 +1517,7 @@ des = 'Macro to generate SAS packages, version 20241102. Run %generatePackage()
%put ### This is short help information for the `generatePackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to generate SAS packages, version `20241102` #;
%put # Macro to generate SAS packages, version `20241129` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -2330,7 +2330,7 @@ title6 "MD5 hashed fileref of package lowcase name: &_PackageFileref_.";
title8 "Required SAS packages: %qsysfunc(compress(%superq(packageReqPackages),%str(%'%")))" ; /* " */
%end;
footnote1 "SAS Packages Framework, version 20241102";
footnote1 "SAS Packages Framework, version 20241129";
proc print
data = &filesWithCodes.(drop=base folderRef fileRef rc folderid _abort_ fileId additionalContent)
@@ -3155,7 +3155,7 @@ data _null_;
%end;
put +(-1) '`.;''' /
' !! '' %put The macro generated: '' !! put(dtCASLudf, E8601DT19.-L) !! ";"' /
' !! '' %put with the SAS Packages Framework version 20241102.;''' /
' !! '' %put with the SAS Packages Framework version 20241129.;''' /
' !! '' %put ****************************************************************************;''' /
' !! '' %GOTO theEndOfTheMacro;''' /
' !! '' %end;''' ;
@@ -3320,7 +3320,7 @@ data _null_;
%end;
put +(-1) '`.; '' !!' /
''' %put The macro generated: ''' " !! put(dtIML, E8601DT19.-L) !! " '''; '' !!' /
''' %put with the SAS Packages Framework version 20241102.; '' !! ' /
''' %put with the SAS Packages Framework version 20241129.; '' !! ' /
''' %put ****************************************************************************; '' !! ' /
''' %GOTO theEndOfTheMacro; '' !! ' /
''' %end; '' !! ' /
@@ -3836,20 +3836,20 @@ data _null_;
end;
/* delete data sets */
put "proc fedsql noprint;";
put "proc SQL noprint;";
EOF = 0;
do until(EOF);
set &filesWithCodes. end = EOF;
if not (upcase(type) in: ('DATA')) then continue;
put '%put NOTE- Element of type ' type 'generated from the file "' file +(-1) '" will be deleted;';
put '%put NOTE- ;';
put 'drop table ' fileshort ' FORCE;' /;
put '%sysfunc(ifc(%sysfunc(exist(' fileshort ')),drop table ' fileshort ',));' /;
end;
put "quit;" /;
/* delete PROC DS2 packages or threads */
put 'data _null_; call symputx("_DS2_2_del_",0,"L"); run;';
put "proc fedsql noprint;";
put "proc SQL noprint;";
EOF = 0;
do until(EOF);
set &filesWithCodes. end = EOF;
@@ -3858,10 +3858,10 @@ data _null_;
/ '%put NOTE- ;'
/ '%let _DS2_2_del_ = %sysfunc(open(' fileshort '));'
/ '%sysfunc(ifc(&_DS2_2_del_. AND %sysfunc(ATTRC(&_DS2_2_del_.,LABEL))='
/ '%str(' "Package: &packageName. ; Type: " type "; Name: " fileshort +(-1) '),drop table ' fileshort ' FORCE,)) ;'
/ '%str(' "Package: &packageName. ; Type: " type "; Name: " fileshort +(-1) '),drop table ' fileshort ',)) '
/ '%let _DS2_2_del_ = %sysfunc(close(&_DS2_2_del_.));'
;
put ';' /;
put ';' /; /* this is semicolon closing drop table statement */
end;
put "quit;" /;
@@ -4127,7 +4127,7 @@ data _null_;
%end;
put 'put " " / @3 "--------------------------------------------------------------------" / " ";'
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20241102`*";'
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20241129`*";'
/ 'put " " / @3 "--------------------------------------------------------------------";';
put 'run; ' /;
@@ -4656,7 +4656,7 @@ run;
%if %Qupcase(&sascfgFile.) = DEF %then /* the DEF value points to the sasv9.cfg file in the sasroot directory */
%do;
%let SASCONFIG = -config ""&SASROOT./sasv9.cfg"";
%let SASCONFIG = -config "&SASROOT./sasv9.cfg";
%put NOTE: The following SAS config file will be used:;
%put NOTE- &=SASCONFIG.;
%end;
@@ -4664,7 +4664,7 @@ run;
%do;
%if %sysfunc(fileexist(&sascfgFile.)) %then
%do;
%let SASCONFIG = -config ""&SASCFGFILE."";
%let SASCONFIG = -config "&SASCFGFILE.";
%put NOTE: The following SAS config file will be used:;
%put NOTE- &=SASCONFIG.;
%end;
@@ -5165,7 +5165,7 @@ data &filesWithCodes.markdown;
%end;
put " " / "--------------------------------------------------------------------" / " "
/ "*SAS package generated by SAS Package Framework, version `20241102`*"
/ "*SAS package generated by SAS Package Framework, version `20241129`*"
/ " " / "--------------------------------------------------------------------" / " ";
put "# The `&packageName.` package content";
@@ -5443,7 +5443,7 @@ TODO: (in Polish)
*/
)/secure
/*** HELP END ***/
des = 'Macro to load multiple SAS packages at one run, version 20241102. Run %loadPackages() for help info.'
des = 'Macro to load multiple SAS packages at one run, version 20241129. Run %loadPackages() for help info.'
parmbuff
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
@@ -5459,7 +5459,7 @@ parmbuff
%put ### This is short help information for the `loadPackageS` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro wrapper for the loadPackage macro, version `20241102` #;
%put # Macro wrapper for the loadPackage macro, version `20241129` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5556,7 +5556,7 @@ parmbuff
hashing_file() function, SAS 9.4M6 */
)/secure
/*** HELP END ***/
des = 'Macro to verify SAS package with the hash digest, version 20241102. Run %verifyPackage() for help info.'
des = 'Macro to verify SAS package with the hash digest, version 20241129. Run %verifyPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -5571,7 +5571,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20241102. Run %
%put ### This is short help information for the `verifyPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to verify SAS package with it hash digest, version `20241102` #;
%put # Macro to verify SAS package with it hash digest, version `20241129` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5751,7 +5751,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20241102. Run %
*/
)/secure
/*** HELP END ***/
des = 'Macro to preview content of a SAS package, version 20241102. Run %previewPackage() for help info.'
des = 'Macro to preview content of a SAS package, version 20241129. Run %previewPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -5766,7 +5766,7 @@ des = 'Macro to preview content of a SAS package, version 20241102. Run %preview
%put ### This is short help information for the `previewPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get preview of a SAS packages, version `20241102` #;
%put # Macro to get preview of a SAS packages, version `20241129` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5896,7 +5896,7 @@ des = 'Macro to preview content of a SAS package, version 20241102. Run %preview
when empty the "packages" value is used */
)/secure
/*** HELP END ***/
des = 'Macro to list directories pointed by "packages" fileref, version 20241102. Run %extendPackagesFileref(HELP) for help info.'
des = 'Macro to list directories pointed by "packages" fileref, version 20241129. Run %extendPackagesFileref(HELP) for help info.'
;
%if %QUPCASE(&packages.) = HELP %then
@@ -5912,7 +5912,7 @@ des = 'Macro to list directories pointed by "packages" fileref, version 20241102
%put ### This is short help information for the `extendPackagesFileref` macro #;
%put #-----------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to list directories pointed by 'packages' fileref, version `20241102` #;
%put # Macro to list directories pointed by 'packages' fileref, version `20241129` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -6013,7 +6013,7 @@ filename packages list;
is provided in required version */
)/secure
/*** HELP END ***/
des = 'Macro to load additional content for a SAS package, version 20241102. Run %loadPackageAddCnt() for help info.'
des = 'Macro to load additional content for a SAS package, version 20241129. Run %loadPackageAddCnt() for help info.'
minoperator
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
@@ -6029,7 +6029,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 `20241102` #;
%put # Macro to *load* additional content for a SAS package, version `20241129` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -6387,7 +6387,7 @@ minoperator
,nobs=0 /* technical parameter */
)
/*** HELP START ***/
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20241102. Run %splitCodeForPackage() for help info.'
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20241129. Run %splitCodeForPackage() for help info.'
;
/*%macro _();%mend _;*/
%if (%superq(codeFile) = ) OR (%qupcase(&codeFile.) = HELP) %then
@@ -6404,7 +6404,7 @@ minoperator
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Utility macro to *split* single file with SAS package code into multiple #;
%put # files with separate snippets, version `20241102` #;
%put # files with separate snippets, version `20241129` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -6529,8 +6529,8 @@ options nomprint nosymbolgen nomlogic notes source ls=MAX ps=MAX msglevel=N ;
end;
else
do;
put 'ERROR: File ' codeFile 'does not exist!';
call symputX("codeFile",pathname('d'),"L");
put "ERROR: [splitCodeForPackage] File " codeFile 'does not exist!';
call symputX("codeFile",quote(strip(pathname('d'))),"L");
end;
run;
@@ -6781,7 +6781,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 20241102. */';
put '/* File generated with help of SAS Packages Framework, version 20241129. */';
firstLine[j]=0;
end;
put _infile_;