SAS Packages Framework, version 20241207

SAS Packages Framework, version 20241207

Changes:
- New parameter `instDoc=` in the `%installPackage()` macro allows to download (if one is available) the `.md` documentation file for a package.
This commit is contained in:
Bart Jablonski
2024-12-07 23:08:14 +01:00
parent c4e21e86b6
commit 2e47ab5e37
16 changed files with 951 additions and 774 deletions

View File

@@ -16,7 +16,7 @@ Don't forget to **STAR** (:star:) the repository! :-)
### Current version:
**The latest version** of SPF is **`20241129`**.
**The latest version** of SPF is **`20241207`**.
To get started with SAS Packages try this [**`Getting Started with SAS Packages`**](https://github.com/yabwon/SAS_PACKAGES/blob/main/SPF/Documentation/Getting_Started_with_SAS_Packages.pdf "Getting Started with SAS Packages") presentation (see the `./SPF/Documentation` directory).
@@ -51,7 +51,8 @@ Letter "D" indicates tutorial dedicated for developers and "U" materials for use
3) (D) Article and all required materials for ["My first SAS Package"](https://github.com/yabwon/SAS_PACKAGES/tree/main/SPF/Documentation/Paper_1079-2021) tutorial.
4) (DU) Materials from Hands-on-Workshop (4+ hours) tutorial: [Share your code with SAS Packages](https://github.com/yabwon/HoW-SASPackages).
4) (DU) Materials from Hands-on-Workshop (4+ hours) tutorial: [Share your code with SAS Packages](https://github.com/yabwon/HoW-SASPackages).
It is a "zero to hero" tutorial that explains all the "bells and whistles" of using, and all the "nuts and bolts" of developing SAS packages.
---

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 20241129. Run %extendPackagesFileref(HELP) for help info.'
des = 'Macro to list directories pointed by "packages" fileref, version 20241207. 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 20241129
%put ### This is short help information for the `extendPackagesFileref` macro #;
%put #-----------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to list directories pointed by 'packages' fileref, version `20241129` #;
%put # Macro to list directories pointed by 'packages' fileref, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -56,7 +56,7 @@ des = 'Macro to list directories pointed by "packages" fileref, version 20241129
%put # Run the following code in your SAS session: #;
%put ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas;
%put %nrstr( filename packages ("C:/SAS_PK1" "C:/SAS_PK2"); %%* setup a directory for packages; );
%put %nrstr( %%include packages(SPFinit.sas); %%* enable the framework; );
%put %nrstr( %%include packages(SPFinit.sas); %%* enable the framework; );
%put ;
%put %nrstr( filename packages ("D:/NEW_DIR" %%extendPackagesFileref()); %%* add new directory; );
%put ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;

View File

@@ -3,7 +3,7 @@
Macro to generate SAS packages.
Version 20241129
Version 20241207
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -43,7 +43,7 @@
file name be created */
)/ secure minoperator
/*** HELP END ***/
des = 'Macro to generate SAS packages, version 20241129. Run %generatePackage() for help info.'
des = 'Macro to generate SAS packages, version 20241207. Run %generatePackage() for help info.'
;
%if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then
%do;
@@ -58,7 +58,7 @@ des = 'Macro to generate SAS packages, version 20241129. Run %generatePackage()
%put ### This is short help information for the `generatePackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to generate SAS packages, version `20241129` #;
%put # Macro to generate SAS packages, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -434,7 +434,7 @@ Maintainer: Firstname Lastname (xxxxxx@yyyyy.com)
License: MIT
Encoding: UTF8
Required: "Base SAS Software" :%*optional, COMMA separated, QUOTED list, names of required SAS products, values must be like from proc setinit;run; output *;
Required: "Base SAS Software" :%*optional, COMMA separated, QUOTED list, names of required SAS products, values must be like from "proc setinit" output *;
ReqPackages: "macroArray (0.1)", "DFA (0.1)" :%*optional, COMMA separated, QUOTED list, names of required packages *;
>> **DESCRIPTION** <<
@@ -510,7 +510,7 @@ DESCRIPTION END:
| it will be created only if user request it by using:
| %loadPackage(packagename, lazyData=klm)
| multiple elements separated by space are allowed
| an asterisk(*) means "load all data"]
| an asterisk("*") means "load all data"]
|
+-010_imlmodule [one file one IML module,
| | only plain code of the module, without "Proc IML" header]
@@ -871,7 +871,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 20241129";
footnote1 "SAS Packages Framework, version 20241207";
proc print
data = &filesWithCodes.(drop=base folderRef fileRef rc folderid _abort_ fileId additionalContent)
@@ -1696,7 +1696,7 @@ data _null_;
%end;
put +(-1) '`.;''' /
' !! '' %put The macro generated: '' !! put(dtCASLudf, E8601DT19.-L) !! ";"' /
' !! '' %put with the SAS Packages Framework version 20241129.;''' /
' !! '' %put with the SAS Packages Framework version 20241207.;''' /
' !! '' %put ****************************************************************************;''' /
' !! '' %GOTO theEndOfTheMacro;''' /
' !! '' %end;''' ;
@@ -1861,7 +1861,7 @@ data _null_;
%end;
put +(-1) '`.; '' !!' /
''' %put The macro generated: ''' " !! put(dtIML, E8601DT19.-L) !! " '''; '' !!' /
''' %put with the SAS Packages Framework version 20241129.; '' !! ' /
''' %put with the SAS Packages Framework version 20241207.; '' !! ' /
''' %put ****************************************************************************; '' !! ' /
''' %GOTO theEndOfTheMacro; '' !! ' /
''' %end; '' !! ' /
@@ -2668,7 +2668,7 @@ data _null_;
%end;
put 'put " " / @3 "--------------------------------------------------------------------" / " ";'
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20241129`*";'
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20241207`*";'
/ 'put " " / @3 "--------------------------------------------------------------------";';
put 'run; ' /;
@@ -3706,7 +3706,7 @@ data &filesWithCodes.markdown;
%end;
put " " / "--------------------------------------------------------------------" / " "
/ "*SAS package generated by SAS Package Framework, version `20241129`*"
/ "*SAS package generated by SAS Package Framework, version `20241207`*"
/ " " / "--------------------------------------------------------------------" / " ";
put "# The `&packageName.` package content";

View File

@@ -28,7 +28,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to get help about SAS package, version 20241129. Run %helpPackage() for help info.'
des = 'Macro to get help about SAS package, version 20241207. 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 20241129. Run %helpPackage()
%put ### This is short help information for the `helpPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get help about SAS packages, version `20241129` #;
%put # Macro to get help about SAS packages, version `20241207` #;
%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 20241129 */
/* Macros to install SAS packages, version 20241207 */
/* 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
@@ -18,12 +18,14 @@
, URLoptions = /* options for the `sourcePath` URLs */
, loadAddCnt=0 /* should the additional content be loaded?
default is 0 - means No, 1 means Yes */
, instDoc=0 /* should the markdown file with documentation be installed?
default is 0 - means No, 1 means Yes */
, SFRCVN = /* name of a macro variable to store success-failure return code value */
)
/secure
minoperator
/*** HELP END ***/
des = 'Macro to install SAS package, version 20241129. Run %%installPackage() for help info.'
des = 'Macro to install SAS package, version 20241207. Run %%installPackage() for help info.'
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
%do;
@@ -38,7 +40,7 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%put ### This is short help information for the `installPackage` macro #;
%put #--------------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to install SAS packages, version `20241129` #;
%put # Macro to install SAS packages, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -102,6 +104,11 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%put # directory in `<packageName>_AdditionalContent` folder. #;
%put # For other locations use `%nrstr(%%loadPackageAddCnt())` macro. #;
%put # #;
%put # - `instDoc=` *Optional.* A package may be provided with a markdown file #;
%put # containing combined documentation of the package. The option #;
%put # indicates if the `.md` file should be also downloaded. #;
%put # Default value of zero (`0`) means "No", one (`1`) means "Yes". #;
%put # #;
%put # - `SFRCVN=` *Optional.* Provides a NAME for a macro variable to store value of the #;
%put # *success-failure return code* of the installation process. Return value #;
%put # has the following form: `<number of successes>.<number of failures>` #;
@@ -182,30 +189,39 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
call symputX("firstPackagesPath", pathname("packages"), "L");
run;
%let loadAddCnt = %sysevalf(NOT(0=%superq(loadAddCnt)));
%let instDoc = %sysevalf(NOT(0=%superq(instDoc)));
%let replace = %sysevalf(1=%superq(replace));
%if %superq(sourcePath)= %then
%do;
%local SPFinitMirror;
%local SPFinitMirror SPFinitMirrorMD;
/* the defaults are: */
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirrorMD = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.md;
%let sourcePath = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/packages/;
%if 0 = %superq(mirror) %then
%do;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirrorMD = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.md;
%let sourcePath = https://github.com/SASPAC/; /*usercontent*/
%goto mirrorEnd;
%end;
%if 1 = %superq(mirror) %then
%do;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirrorMD = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.md;
%let sourcePath = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/packages/;
%goto mirrorEnd;
%end;
%if 2 = %superq(mirror) %then
%do;
%let SPFinitMirror = https://pages.mini.pw.edu.pl/~jablonskib/SASpublic/SAS_PACKAGES/SPF/SPFinit.sas;
%let SPFinitMirror = https://pages.mini.pw.edu.pl/~jablonskib/SASpublic/SAS_PACKAGES/SPF/SPFinit.sas;
%let SPFinitMirrorMD = https://pages.mini.pw.edu.pl/~jablonskib/SASpublic/SAS_PACKAGES/SPF/SPFinit.md;
%let sourcePath = https://pages.mini.pw.edu.pl/~jablonskib/SASpublic/SAS_PACKAGES/packages/;
%goto mirrorEnd;
%end;
@@ -215,7 +231,8 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%else
%do;
%let mirror=-1;
%let SPFinitMirror = &sourcePath.SPFinit.sas;
%let SPFinitMirror = &sourcePath.SPFinit.sas;
%let SPFinitMirrorMD = &sourcePath.SPFinit.md;
%end;
%local i str;
@@ -262,10 +279,13 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%put ### &packageName.(&vers.) ###;
%put *** %lowcase(&packageName.) start *****************************************;
%local in out _IOFileref_;
%local in out inMD outMD _IOFileref_;
data _null_; call symputX("_IOFileref_", put(MD5("%lowcase(&packageName.)"), hex7. -L), "L"); run;
%let in = i&_IOFileref_.;
%let out = o&_IOFileref_.;
%let inMD = j&_IOFileref_.;
%let outMD = u&_IOFileref_.;
/* %let in = i%sysfunc(md5(&packageName.),hex7.); */
/* %let out = o%sysfunc(md5(&packageName.),hex7.); */
@@ -275,17 +295,27 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
/* allows to install/download the framework file like any other package */
%if %superq(mirror) in (0 1) AND (%superq(vers) ne) %then
%do;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/&vers./SPF/SPFinit.sas;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/&vers./SPF/SPFinit.sas;
%let SPFinitMirrorMD = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/&vers./SPF/SPFinit.md;
%end;
%if %superq(mirror) > 1 %then
%put %str( )Mirror %superq(mirror) does not support versioning.;
filename &in URL
/* source code file */
filename &in. URL
"&SPFinitMirror."
recfm=N lrecl=1;
filename &out
filename &out.
"&firstPackagesPath./SPFinit.sas"
recfm=N lrecl=1;
/* documentation MD file */
filename &inMD. URL
"&SPFinitMirrorMD."
recfm=N lrecl=1;
filename &outMD.
"&firstPackagesPath./SPFinit.md"
recfm=N lrecl=1;
%end;
%else
%do;
@@ -305,7 +335,8 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%put %str( )Mirror %superq(mirror) does not support versioning.;
%end;
filename &in URL "&sourcePath.&packageSubDir.%lowcase(&packageName.).zip"
/* zip */
filename &in. URL "&sourcePath.&packageSubDir.%lowcase(&packageName.).zip"
%if (%superq(URLuser) ne ) %then
%do;
user = "&URLuser."
@@ -313,7 +344,17 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%end;
&URLoptions.
recfm=N lrecl=1;
filename &out "&firstPackagesPath./%lowcase(&packageName.).zip" recfm=N lrecl=1;
filename &out. "&firstPackagesPath./%lowcase(&packageName.).zip" recfm=N lrecl=1;
/* markdown */
filename &inMD. URL "&sourcePath.&packageSubDir.%lowcase(&packageName.).md"
%if (%superq(URLuser) ne ) %then
%do;
user = "&URLuser."
pass = "&URLuser."
%end;
&URLoptions.
recfm=N lrecl=1;
filename &outMD. "&firstPackagesPath./%lowcase(&packageName.).md" recfm=N lrecl=1;
%end;
/*
filename in list;
@@ -323,12 +364,21 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%local installationRC;
%let installationRC=1;
data _null_;
length filein 8 out_path in_path $ 4096;
length filein fileinMD 8
out_path in_path out_pathMD in_pathMD rcTXT $ 4096
out_ref in_ref out_refMD in_refMD $ 8
;
out_path = pathname ("&out");
in_path = pathname ("&in" );
out_pathMD = pathname ("&outMD");
in_pathMD = pathname ("&inMD" );
out_ref = symget ("out");
in_ref = symget ("in" );
out_refMD = symget ("outMD");
in_refMD = symget ("inMD" );
rcTXT=' ';
filein = fopen( "&in", 'S', 1, 'B');
filein = fopen(in_ref, 'S', 1, 'B');
if filein = 0 then
put "ERROR: Source file:" /
"ERROR- " in_path /
@@ -348,21 +398,23 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
rc = FCLOSE(filein);
put;
if FEXIST("&out") = 0 then
if FEXIST(out_ref) = 0 then
do;
put @2 "Installing the &packageName. package"
/ @2 "in the &firstPackagesPath. directory.";
rc = FCOPY("&in", "&out");
rc = FCOPY(in_ref, out_ref);
rcTXT=sysmsg();
end;
else if FEXIST("&out") = 1 then
else if FEXIST(out_ref) = 1 then
do;
if symgetn("replace")=1 then
do;
put @2 "The following file will be replaced during "
/ @2 "installation of the &packageName. package: "
/ @5 out_path;
rc = FDELETE("&out");
rc = FCOPY("&in", "&out");
rc = FDELETE(out_ref);
rc = FCOPY(in_ref, out_ref);
rcTXT=sysmsg();
end;
else
do;
@@ -371,13 +423,41 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
rc = 1;
end;
end;
put @2 "Done with return code " rc= "(zero = success)";
put @2 "Done with return code " rc= "(zero = success)" / rcTXT;
call symputX("installationRC", rc, "L");
/* try to install documentation file */
if 1=symgetn("instDoc") then
do;
fileinMD = fopen(in_refMD, 'S', 1, 'B');
rcMD = FCLOSE(fileinMD);
if fileinMD then
do;
if 0=FEXIST(out_refMD) then
do;
rcMD = FCOPY(in_refMD, out_refMD);
if rcMD=0 then
put @2 "Package documentation installed on request." ; /* / out_pathMD / in_pathMD; */
end;
else if 1=FEXIST(out_refMD) and 1=symgetn("replace") then
do;
rcMD = FDELETE(out_refMD);
if rcMD=0 then
rcMD2 = FCOPY(in_refMD, out_refMD);
if rcMD=0 AND rcMD2=0 then
put @2 "Package documentation installed on demand." ; /* / out_pathMD / in_pathMD; */
end;
end;
else
put @2 "Package documentation in markdown format not available." ; /* / out_pathMD / in_pathMD;*/
end;
run;
filename &in clear;
filename &out clear;
filename &in. clear;
filename &out. clear;
filename &inMD. clear;
filename &outMD. clear;
%if 0 = &installationRC. %then
%do;

View File

@@ -3,7 +3,7 @@
Macro to list SAS packages in packages folder.
Version 20241129
Version 20241207
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -23,7 +23,7 @@
%macro listPackages()
/secure PARMBUFF
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20241129.'
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20241207.'
;
%if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then
%do;
@@ -38,7 +38,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 `20241129` #;
%put # Macro to list available SAS packages, version `20241207` #;
%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 20241129. Run %loadPackage() for help info.'
des = 'Macro to load SAS package, version 20241207. 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 `20241129` #;
%put # Macro to *load* SAS packages, version `20241207` #;
%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 20241129. Run %loadPackageAddCnt() for help info.'
des = 'Macro to load additional content for a SAS package, version 20241207. 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 `20241129` #;
%put # Macro to *load* additional content for a SAS package, version `20241207` #;
%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 20241129. Run %loadPackages() for help info.'
des = 'Macro to load multiple SAS packages at one run, version 20241207. 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 `20241129` #;
%put # Macro wrapper for the loadPackage macro, version `20241207` #;
%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 20241129. Run %previewPackage() for help info.'
des = 'Macro to preview content of a SAS package, version 20241207. 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 20241129. Run %preview
%put ### This is short help information for the `previewPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get preview of a SAS packages, version `20241129` #;
%put # Macro to get preview of a SAS packages, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -8,7 +8,7 @@
,nobs=0 /* technical parameter */
)
/*** HELP START ***/
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20241129. Run %splitCodeForPackage() for help info.'
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20241207. Run %splitCodeForPackage() for help info.'
;
/*%macro _();%mend _;*/
%if (%superq(codeFile) = ) OR (%qupcase(&codeFile.) = HELP) %then
@@ -25,7 +25,7 @@
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Utility macro to *split* single file with SAS package code into multiple #;
%put # files with separate snippets, version `20241129` #;
%put # files with separate snippets, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -402,7 +402,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 20241129. */';
put '/* File generated with help of SAS Packages Framework, version 20241207. */';
firstLine[j]=0;
end;
put _infile_;

View File

@@ -20,7 +20,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to unload SAS package, version 20241129. Run %unloadPackage() for help info.'
des = 'Macro to unload SAS package, version 20241207. 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 20241129. Run %unloadPackage() for h
%put ### This is short help information for the `unloadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to unload SAS packages, version `20241129` #;
%put # Macro to unload SAS packages, version `20241207` #;
%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 20241129. Run %verifyPackage() for help info.'
des = 'Macro to verify SAS package with the hash digest, version 20241207. 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 20241129. Run %
%put ### This is short help information for the `verifyPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to verify SAS package with it hash digest, version `20241129` #;
%put # Macro to verify SAS package with it hash digest, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

File diff suppressed because it is too large Load Diff

View File

@@ -42,7 +42,7 @@
- to unload, or
- to generate SAS packages.
Version 20241129.
Version 20241207.
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 20241129. Run %loadPackage() for help info.'
des = 'Macro to load SAS package, version 20241207. 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 `20241129` #;
%put # Macro to *load* SAS packages, version `20241207` #;
%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 20241129. Run %unloadPackage() for help info.'
des = 'Macro to unload SAS package, version 20241207. 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 20241129. Run %unloadPackage() for h
%put ### This is short help information for the `unloadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to unload SAS packages, version `20241129` #;
%put # Macro to unload SAS packages, version `20241207` #;
%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 20241129. Run %unloadPackage() for h
*/
)/secure
/*** HELP END ***/
des = 'Macro to get help about SAS package, version 20241129. Run %helpPackage() for help info.'
des = 'Macro to get help about SAS package, version 20241207. 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 20241129. Run %helpPackage()
%put ### This is short help information for the `helpPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get help about SAS packages, version `20241129` #;
%put # Macro to get help about SAS packages, version `20241207` #;
%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 20241129 */
/* Macros to install SAS packages, version 20241207 */
/* 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
@@ -723,12 +723,14 @@ TODO:
, URLoptions = /* options for the `sourcePath` URLs */
, loadAddCnt=0 /* should the additional content be loaded?
default is 0 - means No, 1 means Yes */
, instDoc=0 /* should the markdown file with documentation be installed?
default is 0 - means No, 1 means Yes */
, SFRCVN = /* name of a macro variable to store success-failure return code value */
)
/secure
minoperator
/*** HELP END ***/
des = 'Macro to install SAS package, version 20241129. Run %%installPackage() for help info.'
des = 'Macro to install SAS package, version 20241207. Run %%installPackage() for help info.'
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
%do;
@@ -743,7 +745,7 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%put ### This is short help information for the `installPackage` macro #;
%put #--------------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to install SAS packages, version `20241129` #;
%put # Macro to install SAS packages, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -807,6 +809,11 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%put # directory in `<packageName>_AdditionalContent` folder. #;
%put # For other locations use `%nrstr(%%loadPackageAddCnt())` macro. #;
%put # #;
%put # - `instDoc=` *Optional.* A package may be provided with a markdown file #;
%put # containing combined documentation of the package. The option #;
%put # indicates if the `.md` file should be also downloaded. #;
%put # Default value of zero (`0`) means "No", one (`1`) means "Yes". #;
%put # #;
%put # - `SFRCVN=` *Optional.* Provides a NAME for a macro variable to store value of the #;
%put # *success-failure return code* of the installation process. Return value #;
%put # has the following form: `<number of successes>.<number of failures>` #;
@@ -887,30 +894,39 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
call symputX("firstPackagesPath", pathname("packages"), "L");
run;
%let loadAddCnt = %sysevalf(NOT(0=%superq(loadAddCnt)));
%let instDoc = %sysevalf(NOT(0=%superq(instDoc)));
%let replace = %sysevalf(1=%superq(replace));
%if %superq(sourcePath)= %then
%do;
%local SPFinitMirror;
%local SPFinitMirror SPFinitMirrorMD;
/* the defaults are: */
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirrorMD = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.md;
%let sourcePath = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/packages/;
%if 0 = %superq(mirror) %then
%do;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirrorMD = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.md;
%let sourcePath = https://github.com/SASPAC/; /*usercontent*/
%goto mirrorEnd;
%end;
%if 1 = %superq(mirror) %then
%do;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas;
%let SPFinitMirrorMD = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.md;
%let sourcePath = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/packages/;
%goto mirrorEnd;
%end;
%if 2 = %superq(mirror) %then
%do;
%let SPFinitMirror = https://pages.mini.pw.edu.pl/~jablonskib/SASpublic/SAS_PACKAGES/SPF/SPFinit.sas;
%let SPFinitMirror = https://pages.mini.pw.edu.pl/~jablonskib/SASpublic/SAS_PACKAGES/SPF/SPFinit.sas;
%let SPFinitMirrorMD = https://pages.mini.pw.edu.pl/~jablonskib/SASpublic/SAS_PACKAGES/SPF/SPFinit.md;
%let sourcePath = https://pages.mini.pw.edu.pl/~jablonskib/SASpublic/SAS_PACKAGES/packages/;
%goto mirrorEnd;
%end;
@@ -920,7 +936,8 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%else
%do;
%let mirror=-1;
%let SPFinitMirror = &sourcePath.SPFinit.sas;
%let SPFinitMirror = &sourcePath.SPFinit.sas;
%let SPFinitMirrorMD = &sourcePath.SPFinit.md;
%end;
%local i str;
@@ -967,10 +984,13 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%put ### &packageName.(&vers.) ###;
%put *** %lowcase(&packageName.) start *****************************************;
%local in out _IOFileref_;
%local in out inMD outMD _IOFileref_;
data _null_; call symputX("_IOFileref_", put(MD5("%lowcase(&packageName.)"), hex7. -L), "L"); run;
%let in = i&_IOFileref_.;
%let out = o&_IOFileref_.;
%let inMD = j&_IOFileref_.;
%let outMD = u&_IOFileref_.;
/* %let in = i%sysfunc(md5(&packageName.),hex7.); */
/* %let out = o%sysfunc(md5(&packageName.),hex7.); */
@@ -980,17 +1000,27 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
/* allows to install/download the framework file like any other package */
%if %superq(mirror) in (0 1) AND (%superq(vers) ne) %then
%do;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/&vers./SPF/SPFinit.sas;
%let SPFinitMirror = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/&vers./SPF/SPFinit.sas;
%let SPFinitMirrorMD = https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/&vers./SPF/SPFinit.md;
%end;
%if %superq(mirror) > 1 %then
%put %str( )Mirror %superq(mirror) does not support versioning.;
filename &in URL
/* source code file */
filename &in. URL
"&SPFinitMirror."
recfm=N lrecl=1;
filename &out
filename &out.
"&firstPackagesPath./SPFinit.sas"
recfm=N lrecl=1;
/* documentation MD file */
filename &inMD. URL
"&SPFinitMirrorMD."
recfm=N lrecl=1;
filename &outMD.
"&firstPackagesPath./SPFinit.md"
recfm=N lrecl=1;
%end;
%else
%do;
@@ -1010,7 +1040,8 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%put %str( )Mirror %superq(mirror) does not support versioning.;
%end;
filename &in URL "&sourcePath.&packageSubDir.%lowcase(&packageName.).zip"
/* zip */
filename &in. URL "&sourcePath.&packageSubDir.%lowcase(&packageName.).zip"
%if (%superq(URLuser) ne ) %then
%do;
user = "&URLuser."
@@ -1018,7 +1049,17 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%end;
&URLoptions.
recfm=N lrecl=1;
filename &out "&firstPackagesPath./%lowcase(&packageName.).zip" recfm=N lrecl=1;
filename &out. "&firstPackagesPath./%lowcase(&packageName.).zip" recfm=N lrecl=1;
/* markdown */
filename &inMD. URL "&sourcePath.&packageSubDir.%lowcase(&packageName.).md"
%if (%superq(URLuser) ne ) %then
%do;
user = "&URLuser."
pass = "&URLuser."
%end;
&URLoptions.
recfm=N lrecl=1;
filename &outMD. "&firstPackagesPath./%lowcase(&packageName.).md" recfm=N lrecl=1;
%end;
/*
filename in list;
@@ -1028,12 +1069,21 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%local installationRC;
%let installationRC=1;
data _null_;
length filein 8 out_path in_path $ 4096;
length filein fileinMD 8
out_path in_path out_pathMD in_pathMD rcTXT $ 4096
out_ref in_ref out_refMD in_refMD $ 8
;
out_path = pathname ("&out");
in_path = pathname ("&in" );
out_pathMD = pathname ("&outMD");
in_pathMD = pathname ("&inMD" );
out_ref = symget ("out");
in_ref = symget ("in" );
out_refMD = symget ("outMD");
in_refMD = symget ("inMD" );
rcTXT=' ';
filein = fopen( "&in", 'S', 1, 'B');
filein = fopen(in_ref, 'S', 1, 'B');
if filein = 0 then
put "ERROR: Source file:" /
"ERROR- " in_path /
@@ -1053,21 +1103,23 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
rc = FCLOSE(filein);
put;
if FEXIST("&out") = 0 then
if FEXIST(out_ref) = 0 then
do;
put @2 "Installing the &packageName. package"
/ @2 "in the &firstPackagesPath. directory.";
rc = FCOPY("&in", "&out");
rc = FCOPY(in_ref, out_ref);
rcTXT=sysmsg();
end;
else if FEXIST("&out") = 1 then
else if FEXIST(out_ref) = 1 then
do;
if symgetn("replace")=1 then
do;
put @2 "The following file will be replaced during "
/ @2 "installation of the &packageName. package: "
/ @5 out_path;
rc = FDELETE("&out");
rc = FCOPY("&in", "&out");
rc = FDELETE(out_ref);
rc = FCOPY(in_ref, out_ref);
rcTXT=sysmsg();
end;
else
do;
@@ -1076,13 +1128,41 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
rc = 1;
end;
end;
put @2 "Done with return code " rc= "(zero = success)";
put @2 "Done with return code " rc= "(zero = success)" / rcTXT;
call symputX("installationRC", rc, "L");
/* try to install documentation file */
if 1=symgetn("instDoc") then
do;
fileinMD = fopen(in_refMD, 'S', 1, 'B');
rcMD = FCLOSE(fileinMD);
if fileinMD then
do;
if 0=FEXIST(out_refMD) then
do;
rcMD = FCOPY(in_refMD, out_refMD);
if rcMD=0 then
put @2 "Package documentation installed on request." ; /* / out_pathMD / in_pathMD; */
end;
else if 1=FEXIST(out_refMD) and 1=symgetn("replace") then
do;
rcMD = FDELETE(out_refMD);
if rcMD=0 then
rcMD2 = FCOPY(in_refMD, out_refMD);
if rcMD=0 AND rcMD2=0 then
put @2 "Package documentation installed on demand." ; /* / out_pathMD / in_pathMD; */
end;
end;
else
put @2 "Package documentation in markdown format not available." ; /* / out_pathMD / in_pathMD;*/
end;
run;
filename &in clear;
filename &out clear;
filename &in. clear;
filename &out. clear;
filename &inMD. clear;
filename &outMD. clear;
%if 0 = &installationRC. %then
%do;
@@ -1276,7 +1356,7 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
Macro to list SAS packages in packages folder.
Version 20241129
Version 20241207
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -1296,7 +1376,7 @@ des = 'Macro to install SAS package, version 20241129. Run %%installPackage() fo
%macro listPackages()
/secure PARMBUFF
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20241129.'
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20241207.'
;
%if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then
%do;
@@ -1311,7 +1391,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 `20241129` #;
%put # Macro to list available SAS packages, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -1462,7 +1542,7 @@ options ls = &ls_tmp. ps = &ps_tmp. &notes_tmp. &source_tmp.;
Macro to generate SAS packages.
Version 20241129
Version 20241207
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -1502,7 +1582,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 20241129. Run %generatePackage() for help info.'
des = 'Macro to generate SAS packages, version 20241207. Run %generatePackage() for help info.'
;
%if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then
%do;
@@ -1517,7 +1597,7 @@ des = 'Macro to generate SAS packages, version 20241129. Run %generatePackage()
%put ### This is short help information for the `generatePackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to generate SAS packages, version `20241129` #;
%put # Macro to generate SAS packages, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -1893,7 +1973,7 @@ Maintainer: Firstname Lastname (xxxxxx@yyyyy.com)
License: MIT
Encoding: UTF8
Required: "Base SAS Software" :%*optional, COMMA separated, QUOTED list, names of required SAS products, values must be like from proc setinit;run; output *;
Required: "Base SAS Software" :%*optional, COMMA separated, QUOTED list, names of required SAS products, values must be like from "proc setinit" output *;
ReqPackages: "macroArray (0.1)", "DFA (0.1)" :%*optional, COMMA separated, QUOTED list, names of required packages *;
>> **DESCRIPTION** <<
@@ -1969,7 +2049,7 @@ DESCRIPTION END:
| it will be created only if user request it by using:
| %loadPackage(packagename, lazyData=klm)
| multiple elements separated by space are allowed
| an asterisk(*) means "load all data"]
| an asterisk("*") means "load all data"]
|
+-010_imlmodule [one file one IML module,
| | only plain code of the module, without "Proc IML" header]
@@ -2330,7 +2410,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 20241129";
footnote1 "SAS Packages Framework, version 20241207";
proc print
data = &filesWithCodes.(drop=base folderRef fileRef rc folderid _abort_ fileId additionalContent)
@@ -3155,7 +3235,7 @@ data _null_;
%end;
put +(-1) '`.;''' /
' !! '' %put The macro generated: '' !! put(dtCASLudf, E8601DT19.-L) !! ";"' /
' !! '' %put with the SAS Packages Framework version 20241129.;''' /
' !! '' %put with the SAS Packages Framework version 20241207.;''' /
' !! '' %put ****************************************************************************;''' /
' !! '' %GOTO theEndOfTheMacro;''' /
' !! '' %end;''' ;
@@ -3320,7 +3400,7 @@ data _null_;
%end;
put +(-1) '`.; '' !!' /
''' %put The macro generated: ''' " !! put(dtIML, E8601DT19.-L) !! " '''; '' !!' /
''' %put with the SAS Packages Framework version 20241129.; '' !! ' /
''' %put with the SAS Packages Framework version 20241207.; '' !! ' /
''' %put ****************************************************************************; '' !! ' /
''' %GOTO theEndOfTheMacro; '' !! ' /
''' %end; '' !! ' /
@@ -4127,7 +4207,7 @@ data _null_;
%end;
put 'put " " / @3 "--------------------------------------------------------------------" / " ";'
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20241129`*";'
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20241207`*";'
/ 'put " " / @3 "--------------------------------------------------------------------";';
put 'run; ' /;
@@ -5165,7 +5245,7 @@ data &filesWithCodes.markdown;
%end;
put " " / "--------------------------------------------------------------------" / " "
/ "*SAS package generated by SAS Package Framework, version `20241129`*"
/ "*SAS package generated by SAS Package Framework, version `20241207`*"
/ " " / "--------------------------------------------------------------------" / " ";
put "# The `&packageName.` package content";
@@ -5443,7 +5523,7 @@ TODO: (in Polish)
*/
)/secure
/*** HELP END ***/
des = 'Macro to load multiple SAS packages at one run, version 20241129. Run %loadPackages() for help info.'
des = 'Macro to load multiple SAS packages at one run, version 20241207. Run %loadPackages() for help info.'
parmbuff
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
@@ -5459,7 +5539,7 @@ parmbuff
%put ### This is short help information for the `loadPackageS` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro wrapper for the loadPackage macro, version `20241129` #;
%put # Macro wrapper for the loadPackage macro, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5556,7 +5636,7 @@ parmbuff
hashing_file() function, SAS 9.4M6 */
)/secure
/*** HELP END ***/
des = 'Macro to verify SAS package with the hash digest, version 20241129. Run %verifyPackage() for help info.'
des = 'Macro to verify SAS package with the hash digest, version 20241207. Run %verifyPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -5571,7 +5651,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20241129. Run %
%put ### This is short help information for the `verifyPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to verify SAS package with it hash digest, version `20241129` #;
%put # Macro to verify SAS package with it hash digest, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5751,7 +5831,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20241129. Run %
*/
)/secure
/*** HELP END ***/
des = 'Macro to preview content of a SAS package, version 20241129. Run %previewPackage() for help info.'
des = 'Macro to preview content of a SAS package, version 20241207. Run %previewPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -5766,7 +5846,7 @@ des = 'Macro to preview content of a SAS package, version 20241129. Run %preview
%put ### This is short help information for the `previewPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get preview of a SAS packages, version `20241129` #;
%put # Macro to get preview of a SAS packages, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5896,7 +5976,7 @@ des = 'Macro to preview content of a SAS package, version 20241129. Run %preview
when empty the "packages" value is used */
)/secure
/*** HELP END ***/
des = 'Macro to list directories pointed by "packages" fileref, version 20241129. Run %extendPackagesFileref(HELP) for help info.'
des = 'Macro to list directories pointed by "packages" fileref, version 20241207. Run %extendPackagesFileref(HELP) for help info.'
;
%if %QUPCASE(&packages.) = HELP %then
@@ -5912,7 +5992,7 @@ des = 'Macro to list directories pointed by "packages" fileref, version 20241129
%put ### This is short help information for the `extendPackagesFileref` macro #;
%put #-----------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to list directories pointed by 'packages' fileref, version `20241129` #;
%put # Macro to list directories pointed by 'packages' fileref, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -5946,7 +6026,7 @@ des = 'Macro to list directories pointed by "packages" fileref, version 20241129
%put # Run the following code in your SAS session: #;
%put ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas;
%put %nrstr( filename packages ("C:/SAS_PK1" "C:/SAS_PK2"); %%* setup a directory for packages; );
%put %nrstr( %%include packages(SPFinit.sas); %%* enable the framework; );
%put %nrstr( %%include packages(SPFinit.sas); %%* enable the framework; );
%put ;
%put %nrstr( filename packages ("D:/NEW_DIR" %%extendPackagesFileref()); %%* add new directory; );
%put ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
@@ -6013,7 +6093,7 @@ filename packages list;
is provided in required version */
)/secure
/*** HELP END ***/
des = 'Macro to load additional content for a SAS package, version 20241129. Run %loadPackageAddCnt() for help info.'
des = 'Macro to load additional content for a SAS package, version 20241207. Run %loadPackageAddCnt() for help info.'
minoperator
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
@@ -6029,7 +6109,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 `20241129` #;
%put # Macro to *load* additional content for a SAS package, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -6387,7 +6467,7 @@ minoperator
,nobs=0 /* technical parameter */
)
/*** HELP START ***/
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20241129. Run %splitCodeForPackage() for help info.'
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20241207. Run %splitCodeForPackage() for help info.'
;
/*%macro _();%mend _;*/
%if (%superq(codeFile) = ) OR (%qupcase(&codeFile.) = HELP) %then
@@ -6404,7 +6484,7 @@ minoperator
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Utility macro to *split* single file with SAS package code into multiple #;
%put # files with separate snippets, version `20241129` #;
%put # files with separate snippets, version `20241207` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -6781,7 +6861,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 20241129. */';
put '/* File generated with help of SAS Packages Framework, version 20241207. */';
firstLine[j]=0;
end;
put _infile_;