SAS Packages Framework, version 20231111

SAS Packages Framework, version 20231111

- new type: kmfsnip for keyboard macro abbreviations added to the framework
- documentation updated

SQLinDS package [ver. 2.3.0]

- KMF snippet added
- documentation updated

BasePlus package [ver. 1.34.0]

- update in unzipArch macro
- new zipArch macro added
- documentation updated

Packages regenerated with the latest version of SPF:
- SQLinDS package [ver. 2.3.0]
- BasePlus package [ver. 1.34.0]
- DFA package [ver. 0.5.7]
- GSM package [ver. 0.22.1]
- macroArray package [ver. 1.2.1]
- dynMacroArray package [ver. 0.2.7]
This commit is contained in:
Bart Jablonski
2023-11-11 17:19:06 +01:00
parent ee5d4de333
commit 5be2d8c76c
28 changed files with 803 additions and 251 deletions

View File

@@ -42,7 +42,7 @@
- to unload, or
- to generate SAS packages.
Version 20231107.
Version 20231111.
See examples below.
A SAS package is a zip file containing a group of files
@@ -87,9 +87,9 @@
, suppressExec=0 /* indicates if loading of exec files
should be suppressed, 1=suppress
*/
)/secure
)/secure
/*** HELP END ***/
des = 'Macro to load SAS package, version 20231107. Run %loadPackage() for help info.'
des = 'Macro to load SAS package, version 20231111. Run %loadPackage() for help info.'
minoperator
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
@@ -105,7 +105,7 @@ minoperator
%put ### This is short help information for the `loadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to *load* SAS packages, version `20231107` #;
%put # Macro to *load* SAS packages, version `20231111` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -305,7 +305,7 @@ minoperator
;
%if %superq(lazyData) = %then
%do;
%local tempLoad_minoperator;
%local tempLoad_minoperator temp_noNotes_etc /* for hiding notes */ ;
%let tempLoad_minoperator = %sysfunc(getoption(minoperator));
options minoperator; /* MinOperator option is required for cherryPicking to work */
%include &_PackageFileref_.(load.sas) / &source2.;
@@ -360,7 +360,7 @@ minoperator
*/
)/secure
/*** HELP END ***/
des = 'Macro to unload SAS package, version 20231107. Run %unloadPackage() for help info.'
des = 'Macro to unload SAS package, version 20231111. Run %unloadPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -375,7 +375,7 @@ des = 'Macro to unload SAS package, version 20231107. Run %unloadPackage() for h
%put ### This is short help information for the `unloadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to unload SAS packages, version `20231107` #;
%put # Macro to unload SAS packages, version `20231111` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -524,7 +524,7 @@ des = 'Macro to unload SAS package, version 20231107. Run %unloadPackage() for h
*/
)/secure
/*** HELP END ***/
des = 'Macro to get help about SAS package, version 20231107. Run %helpPackage() for help info.'
des = 'Macro to get help about SAS package, version 20231111. Run %helpPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -539,7 +539,7 @@ des = 'Macro to get help about SAS package, version 20231107. Run %helpPackage()
%put ### This is short help information for the `helpPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get help about SAS packages, version `20231107` #;
%put # Macro to get help about SAS packages, version `20231111` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -677,7 +677,7 @@ TODO:
- add MD5(&packageName.) value hash instead "package" word in filenames [DONE]
*/
/* Macros to install SAS packages, version 20231107 */
/* Macros to install SAS packages, version 20231111 */
/* 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
@@ -702,7 +702,7 @@ TODO:
/secure
minoperator
/*** HELP END ***/
des = 'Macro to install SAS package, version 20231107. Run %%installPackage() for help info.'
des = 'Macro to install SAS package, version 20231111. Run %%installPackage() for help info.'
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
%do;
@@ -717,7 +717,7 @@ des = 'Macro to install SAS package, version 20231107. Run %%installPackage() fo
%put ### This is short help information for the `installPackage` macro #;
%put #--------------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to install SAS packages, version `20231107` #;
%put # Macro to install SAS packages, version `20231111` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -1169,7 +1169,7 @@ des = 'Macro to install SAS package, version 20231107. Run %%installPackage() fo
/* Macro to list SAS packages in packages folder.
Version 20231107
Version 20231111
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -1190,7 +1190,7 @@ des = 'Macro to install SAS package, version 20231107. Run %%installPackage() fo
/*+listPackages+*/
%macro listPackages()/secure PARMBUFF
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20231107.'
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20231111.'
;
%if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then
%do;
@@ -1205,7 +1205,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 `20231107` #;
%put # Macro to list available SAS packages, version `20231111` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -1355,7 +1355,7 @@ options ls = &ls_tmp. ps = &ps_tmp. &notes_tmp. &source_tmp.;
/* Macro to generate SAS packages.
Version 20231107
Version 20231111
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -1392,7 +1392,7 @@ options ls = &ls_tmp. ps = &ps_tmp. &notes_tmp. &source_tmp.;
default value 1 means "delete tests work" */
)/ secure minoperator
/*** HELP END ***/
des = 'Macro to generate SAS packages, version 20231107. Run %generatePackage() for help info.'
des = 'Macro to generate SAS packages, version 20231111. Run %generatePackage() for help info.'
;
%if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then
%do;
@@ -1407,7 +1407,7 @@ des = 'Macro to generate SAS packages, version 20231107. Run %generatePackage()
%put ### This is short help information for the `generatePackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to generate SAS packages, version `20231107` #;
%put # Macro to generate SAS packages, version `20231111` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -1852,6 +1852,16 @@ DESCRIPTION END:
| |
| +-abc.sas [a file with a code creating IML module ABC, _without_ "Proc IML" header]
|
+-011_casludf [one file one CAS-L user defined function,
| | only plain code of the function, without "Proc CAS" header]
| |
| +-abc.sas [a file with a code creating CAS-L user defined function ABC, _without_ "Proc CAS" header]
|
+-012_kmfsnip [one file one KMF-abbreviation snippet,
| | code snipped propper tagging]
| |
| +-abc.sas [a file with a KMF-abbreviation snippet ABC, _with_ proper tagging, snippets names are in low-case]
|
+-<sequential number>_<type [in lower case]>
|
+-00n_clean [if you need to clean something up after exec file execution,
@@ -1933,7 +1943,7 @@ data &filesWithCodes.;
'FUNCTION' /*'FUNCTIONS'*/ 'FORMAT' /*'FORMATS'*/
'IMLMODULE' 'PROTO' 'EXEC' 'CLEAN'
'LAZYDATA' 'TEST' 'CASLUDF'
'ADDCNT'
'ADDCNT' 'KMFSNIP'
))
then
do;
@@ -2179,7 +2189,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 20231107";
footnote1 "SAS Packages Framework, version 20231111";
proc print data = &filesWithCodes.(drop=base folderRef fileRef rc folderid _abort_ fileId additionalContent);
run;
@@ -2316,8 +2326,8 @@ run;
4) load package
*//*
filename packages zip 'C:/SAS_PACKAGES/sqlinds.zip';
%include packages(iceloadpackage.sas);
filename ice ZIP 'C:/SAS_PACKAGES/sqlinds.zip';
%include ice(iceloadpackage.sas);
filename packages 'C:/SAS_PACKAGES/';
%ICEloadpackage(sqlinds)
@@ -2645,21 +2655,16 @@ data _null_;
put ' put "ERROR: Loading package &packageName. will be aborted!";';
put ' put "ERROR- Required components are missing."; ';
put ' put "ERROR- *** STOP ***"; ';
put ' call symputX("packageRequiredErrors", ';
put ' ''options ';
put ' ls = &ls_tmp. ';
put ' ps = &ps_tmp. ';
put ' &notes_tmp. ';
put ' &stimer_tmp. ';
put ' &fullstimer_tmp. ';
put ' msglevel=&msglevel_tmp. ';
put ' &source_tmp.; ';
put ' data _null_;abort;run;'', "L"); ';
put ' end; ';
put ' else ';
put ' call symputX("packageRequiredErrors", " ", "L"); ';
put ' run; ';
put ' &packageRequiredErrors. ';
put ' call symputX("packageRequiredErrors",';
put ' ''options ls = &ls_tmp. ps = &ps_tmp. ';
put ' &notes_tmp. &source_tmp. msglevel=&msglevel_tmp. ';
put ' &stimer_tmp. &fullstimer_tmp. ;';
put ' data _null_;abort;run;'', "L"); ';
put ' end; ';
put ' else ';
put ' call symputX("packageRequiredErrors", " ", "L");';
put ' run; ';
put ' &packageRequiredErrors. ';
%end;
@@ -2667,7 +2672,7 @@ data _null_;
set &filesWithCodes. end = EOF nobs=NOBS;
by TYPE notsorted;
if (upcase(type) in: ('CLEAN' 'LAZYDATA' 'TEST' 'CASLUDF' 'ADDCNT'))
if (upcase(type) in: ('CLEAN' 'LAZYDATA' 'TEST' 'CASLUDF' 'ADDCNT' 'KMFSNIP'))
then continue; /* CASLUDF type will go in the next loop */
/* cleaning files are only included in unload.sas */
/* lazy data are only loaded on demand
@@ -2679,7 +2684,7 @@ data _null_;
('LIBNAME' 'MACRO' /*'MACROS'*/ 'DATA'
'FUNCTION' /*'FUNCTIONS'*/ 'FORMAT' /*'FORMATS'*/
'IMLMODULE' 'PROTO' 'EXEC' 'CLEAN'
'LAZYDATA' 'TEST' 'ADDCNT'))
'LAZYDATA' 'TEST' 'ADDCNT' 'KMFSNIP'))
then
do;
putlog 'WARNING: Type ' type 'is not yet supported.';
@@ -2905,7 +2910,7 @@ data _null_;
%end;
put +(-1) '`.;''' /
' !! '' %put The macro generated: '' !! put(dtCASLudf, E8601DT19.-L) !! ";"' /
' !! '' %put with the SAS Packages Framework version 20231107.;''' /
' !! '' %put with the SAS Packages Framework version 20231111.;''' /
' !! '' %put ****************************************************************************;''' /
' !! '' %GOTO theEndOfTheMacro;''' /
' !! '' %end;''' ;
@@ -2943,7 +2948,7 @@ data _null_;
put ' %let cherryPick_CASLUDF = %eval(&cherryPick_CASLUDF. + 1);';
put '%end; ' /; /* Cherry Pick test2 end */
end; /* loopOverTypes1 - start */
end; /* loopOverTypes1 - end */
/* this is a footer for CASLudf macro */
put ' !! " options nonotes;" ' /
@@ -2982,8 +2987,6 @@ data _null_;
end;
put 'run;'/;
/* cherry pick clean in cmplib for functions */
if isFunction then
do;
@@ -3010,12 +3013,7 @@ data _null_;
put "proc delete data=work.%lowcase(&packageName.proto); run;";
put '%end;';
end;
/* list cmplib for functions */
if isFunction OR isProto then
do;
put '%put NOTE- ;';
put '%put NOTE:[CMPLIB] %sysfunc(getoption(cmplib));' /;
end;
/* list fmtsearch for formats */
if isFormat then
@@ -3029,7 +3027,6 @@ data _null_;
', %str(()) ))));';
put '%end;';
put '%put NOTE- ;';
put '%put NOTE:[FMTSEARCH] %sysfunc(getoption(fmtsearch));'/;
end;
/* create a macro loader for IML modules with dependencies */
@@ -3078,7 +3075,7 @@ data _null_;
%end;
put +(-1) '`.; '' !!' /
''' %put The macro generated: ''' " !! put(dtIML, E8601DT19.-L) !! " '''; '' !!' /
''' %put with the SAS Packages Framework version 20231107.; '' !! ' /
''' %put with the SAS Packages Framework version 20231111.; '' !! ' /
''' %put ****************************************************************************; '' !! ' /
''' %GOTO theEndOfTheMacro; '' !! ' /
''' %end; '' !! ' /
@@ -3141,8 +3138,173 @@ data _null_;
put '%end;';
end;
/* KMF -------------------------------------------------------------------------------- start */
/*
The Key Macro Function Abbreviations part of the framework is based on PhUSE 2012 article:
"Dynamically generating macro invocations using SAS keyboard abbreviations" (Paper CC03)
by:
Tom Van Campen, SGS Life Science Services, Mechelen, Belgium
Benny Haemhouts, SGS Life Science Services, Mechelen, Belgium
Link to materials:
https://www.lexjansen.com/phuse/2012/cc/CC03.pdf
*/
do until(eof2); /* loopOverKMF - start */
set &filesWithCodes. end = EOF2;
by TYPE notsorted;
if not (upcase(type) = 'KMFSNIP') then continue; /* only CASLUDF type in this loop */
isKMF + 1;
if 1=isKMF then
do;
put 'data _null_; '
/ ' call symputX("cherryPick_KMF", 0, "L"); '
/ 'run; '
/ "data work.%lowcase(&packageName.kmf); "
/ "length member $ 128; call missing(member); "
/ "if 0 then output; ";
end;
put ' '
/ '%if (%str(*)=%superq(cherryPick)) or (' fileshort +(-1) ' in %superq(cherryPick)) %then %do; ' /* Cherry Pick KMF start */
/ ' %put NOTE- ;'
/ ' %put NOTE: >> Element of type ' type 'from the file "' file +(-1) '" will be included <<;'
/ ' member = "_' folder +(-1) "." file +(-1) '"; output;'
/ ' %let cherryPick_KMF = %eval(&cherryPick_KMF. + 1);'
/ '%end; ' /; /* Cherry Pick KMF end */
end; /* loopOverKMF - end */
put 'data _null_;';
put 'run;';
if isKMF then
do;
put '%let temp_noNotes_etc=%sysfunc(getoption(NOTES));'
/ 'options noNotes;';
put '%if &cherryPick_KMF. %then %do;';
put 'filename __KMFgen temp;'
/ 'data _null_;'
/ " set work.%lowcase(&packageName.kmf) nobs=nobs;"
/ ' call symputX("numberKMF",nobs,"L");'
/ ' file __KMFgen;'
/ ' length _KMF_name_$ 130;'
/ ' _KMF_name_ = quote(scan(member,-2,"."));'
/ " put 'end=0; append=0; i+1;'"
/ " / '_KMF_name_[i]=' _KMF_name_ ';'"
/ " / 'do until(end);'"
/ " / ' infile &_PackageFileref_.(' member +(-1) ') end=end;'"
/ " / ' input codeLine $char2048. @;'"
/ " / ' if upcase(codeLine) =: ""KMFCODEDESC:"" then'"
/ " / ' _KMF_desc_[i] = strip(substr(codeLine,13));'"
/ " / ' if upcase(codeLine) =: ""KMFCODEEND:"" then append=0;'"
/ " / ' if append then'"
/ " / ' do;'"
/ " / ' if lengthn(codeLine) then'"
/ " / ' _KMF_code_[i] = trim(_KMF_code_[i]) !! trim(codeLine) !! CrNl;'"
/ " / ' else _KMF_code_[i] = trim(_KMF_code_[i]) !! CrNl;'"
/ " / ' _KMF_NoLi_[i]+1;'"
/ " / ' end;'"
/ " / ' if upcase(codeLine) =: ""KMFCODESTART:"" then append=1;'"
/ " / 'end;'"
/ " / '_KMF_code_[i]=substr(_KMF_code_[i],1,lengthn(_KMF_code_[i])-1);'"
/ " ;"
/ "run;"
;
put 'data _nulL_;'
/ ' file "%sysfunc(pathname(WORK))/%lowcase(&packageName..kmf)" termstr=NL lrecl=32767;'
/ ' putlog "INFO: The &packageName. package provides KMF-abbreviations."; '
/ ' putlog @7 "By default the file with abbreviations is located in:";'
/ ' putlog / @9 "%sysfunc(pathname(WORK))/%lowcase(&packageName..kmf)";'
/ ' putlog / @7 "To import code abbreviations to your SAS session:";'
/ ' putlog @7 "- in SAS DMS go to: Tools -> Keyboard Macros -> Macros... -> Import... ";'
/ ' putlog @7 "- in SAS EG go to: Program -> Manage Macros and Snippets -> Import... ";'
/ ' putlog @7 "and navigate to the location of the KMF file.";'
/ ' putlog / @7 "Should you have any problem with finding the file consider moving";'
/ ' putlog @7 "it to a location of your choice with the help of the following snippet:";'
/ ' putlog / @7 " filename KMFin " "''%sysfunc(pathname(WORK))/%lowcase(&packageName..kmf)''" " lrecl=1 recfm=n;";'
/ ' putlog @7 " filename KMFout ""</directory/of/your/choice>/testpackageclean.kmf"" lrecl=1 recfm=n;";'
/ ' putlog @7 '' %put *%sysfunc(fcopy(KMFin, KMFout))*(0=success)*;'';'
/ ' putlog / "0a"x / " ";'
/ ' array _KMF_name_[&numberKMF.] $ 128;'
/ ' array _KMF_desc_[&numberKMF.] $ 256;'
/ ' array _KMF_seqn_[&numberKMF.] (1:&numberKMF.);'
/ ' array _KMF_code_[&numberKMF.] $ 32767;'
/ ' array _KMF_NoLi_[&numberKMF.] ;'
/ ' array _KMF_Byte_[&numberKMF.] $ 7;'
/ ' noDef = symgetn("numberKMF");'
/ ' tmpByteD2 = floor(noDef/256);'
/ ' tmpByteD1 = noDef - (tmpByteD2*256);'
/ ' noDefByte = "KM" !! byte(0) !! byte(2) !! byte(tmpByteD1) !! byte(tmpByteD2) !! byte(0) !! byte(0);'
/ ' CrNl=byte(13)!!byte(10);'
/ ' %include __KMFgen / &source2.;'
/ ' do i = 1 to &numberKMF.;'
/ ' X1=lengthn(trim(_KMF_code_[i]));'
/ ' X2=lengthn(strip(_KMF_name_[i]));'
/ ' X3=lengthn(strip(_KMF_desc_[i]));'
/ ' X4=lengthn(put(_KMF_seqn_[i], best3.-l));'
/ ' X5=lengthn(put(_KMF_NoLi_[i], best12.-l));'
/ ' noChar = sum(X1, X2, X3, X4, X5, 20);'
/ ' tmpByteC2 = floor(noChar/256);'
/ ' tmpByteC1 = noChar - (tmpByteC2*256);'
/ ' _KMF_Byte_[i] = byte(tmpByteC1) !! byte(tmpByteC2) !! byte(0) !! byte(0) !! "252";'
/ ' end;'
/ ' do i = 1 to &numberKMF.;'
/ ' if i=1 then put noDefByte +(-1) @@;'
/ ' /* 1*/ put _KMF_Byte_[i];'
/ ' /* 2*/ put "3";'
/ ' /* 3*/ put _KMF_name_[i];'
/ ' /* 4*/ if lengthn(_KMF_desc_[i]) then put _KMF_desc_[i]; else put;'
/ ' /* 5*/ put "1"'
/ ' /* 6*/ / "332"'
/ ' /* 7*/ / "1";'
/ ' /* 8*/ put _KMF_NoLi_[i];'
/ ' /* 8*/ put _KMF_code_[i];'
/ ' /*10*/ put _KMF_seqn_[i];'
/ ' /*11*/ put "1";'
/ ' ;'
/ ' end;'
/ 'stop;'
/ 'run;'
/ '%symdel numberKMF / noWarn;'
/ 'filename __KMFgen clear;'
;
put '%end;';
put "proc delete data=work.%lowcase(&packageName.kmf); run;";
put 'options &temp_noNotes_etc.;';
end;
put 'data _null_;';
put 'run;';
/* KMF -------------------------------------------------------------------------------- end */
/* list cmplib for functions and fmtsearch for formats*/
if isFunction OR isProto then
do;
put '%put NOTE- ;';
put '%put NOTE:[CMPLIB] %sysfunc(getoption(cmplib));' /;
end;
if isFormat then
do;
put '%put NOTE- ;';
put '%put NOTE:[FMTSEARCH] %sysfunc(getoption(fmtsearch));'/;
end;
/* update SYSloadedPackages global macrovariable */
put 'options noNotes;';
put '%if (%str(*)=%superq(cherryPick)) %then %do; '; /* Cherry Pick test3 start */
put ' data _null_ ; ';
put ' length SYSloadedPackages stringPCKG $ 32767; ';
@@ -3160,7 +3322,7 @@ data _null_;
put " SYSloadedPackages = catx('#', SYSloadedPackages, '&packageName.(&packageVersion.)'); ";
put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); ';
put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); ';
put ' put "NOTE: " SYSloadedPackages = ; ';
put ' put / "INFO:[SYSLOADEDPACKAGES] " SYSloadedPackages ; ';
put ' end ; ';
put " else ";
put ' do; ';
@@ -3169,21 +3331,26 @@ data _null_;
put " SYSloadedPackages = catx('#', SYSloadedPackages, '&packageName.(&packageVersion.)'); ";
put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); ';
put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); ';
put ' put "NOTE: " SYSloadedPackages = ; ';
put ' put / "INFO:[SYSLOADEDPACKAGES] " SYSloadedPackages ; ';
put ' end ; ';
put ' end; ';
put ' else ';
put ' do; ';
put " call symputX('SYSloadedPackages', '&packageName.(&packageVersion.)', 'G'); ";
put " put 'NOTE: SYSloadedPackages = &packageName.(&packageVersion.)'; ";
put " put / 'INFO:[SYSLOADEDPACKAGES] &packageName.(&packageVersion.)'; ";
put ' end; ';
put ' stop; ';
put ' run; ';
put ' run; ';
put '%end; ' / ; /* Cherry Pick test3 end */
put 'options NOTES;';
put '%put NOTE- ;';
put '%put NOTE: '"Loading package &packageName., version &packageVersion., license &packageLicense.;";
put '%put NOTE- *** END ***;' /;
put 'options &temp_noNotes_etc.;'
/ '%symdel temp_noNotes_etc / noWarn;';
put "/* load.sas end */" /;
stop;
run;
@@ -3694,7 +3861,7 @@ data _null_;
put "put @3 'localization (only if additional content was deployed during the installation process).';" / "put ;";
%end;
put 'put "***"; put "* SAS package generated by generatePackage, version 20231107 *"; put "***";';
put 'put "***"; put "* SAS package generated by generatePackage, version 20231111 *"; put "***";';
put 'run; ' /;
@@ -4715,7 +4882,7 @@ TODO: (in Polish)
*/
)/secure
/*** HELP END ***/
des = 'Macro to load multiple SAS packages at one run, version 20231107. Run %loadPackages() for help info.'
des = 'Macro to load multiple SAS packages at one run, version 20231111. Run %loadPackages() for help info.'
parmbuff
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
@@ -4731,7 +4898,7 @@ parmbuff
%put ### This is short help information for the `loadPackageS` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro wrapper for the loadPackage macro, version `20231107` #;
%put # Macro wrapper for the loadPackage macro, version `20231111` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -4828,7 +4995,7 @@ parmbuff
hashing_file() function, SAS 9.4M6 */
)/secure
/*** HELP END ***/
des = 'Macro to verify SAS package with the hash digest, version 20231107. Run %verifyPackage() for help info.'
des = 'Macro to verify SAS package with the hash digest, version 20231111. Run %verifyPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -4843,7 +5010,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20231107. Run %
%put ### This is short help information for the `verifyPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to verify SAS package with it hash digest, version `20231107` #;
%put # Macro to verify SAS package with it hash digest, version `20231111` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5022,7 +5189,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20231107. Run %
*/
)/secure
/*** HELP END ***/
des = 'Macro to preview content of a SAS package, version 20231107. Run %previewPackage() for help info.'
des = 'Macro to preview content of a SAS package, version 20231111. Run %previewPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -5037,7 +5204,7 @@ des = 'Macro to preview content of a SAS package, version 20231107. Run %preview
%put ### This is short help information for the `previewPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get previwe of a SAS packages, version `20231107` #;
%put # Macro to get previwe of a SAS packages, version `20231111` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5164,7 +5331,7 @@ des = 'Macro to preview content of a SAS package, version 20231107. Run %preview
when empty the "packages" value is used */
)/secure
/*** HELP END ***/
des = 'Macro to list directories pointed by "packages" fileref, version 20231107. Run %extendPackagesFileref(HELP) for help info.'
des = 'Macro to list directories pointed by "packages" fileref, version 20231111. Run %extendPackagesFileref(HELP) for help info.'
;
%if %QUPCASE(&packages.) = HELP %then
@@ -5180,7 +5347,7 @@ des = 'Macro to list directories pointed by "packages" fileref, version 20231107
%put ### This is short help information for the `extendPackagesFileref` macro #;
%put #-----------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to list directories pointed by 'packages' fileref, version `20231107` #;
%put # Macro to list directories pointed by 'packages' fileref, version `20231111` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5281,7 +5448,7 @@ filename packages list;
is provided in required version */
)/secure
/*** HELP END ***/
des = 'Macro to load additional content for a SAS package, version 20231107. Run %loadPackageAddCnt() for help info.'
des = 'Macro to load additional content for a SAS package, version 20231111. Run %loadPackageAddCnt() for help info.'
minoperator
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
@@ -5297,7 +5464,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 `20231107` #;
%put # Macro to *load* additional content for a SAS package, version `20231111` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;