mirror of
https://github.com/yabwon/SAS_PACKAGES.git
synced 2026-06-08 19:30:20 +00:00
SAS Packages Framework, version 20260514
# SAS Packages Framework, version `20260514` Code cleaning and fixes in user input verification.
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
,packagesRef=packages
|
||||
,ods= /* data set for report file */
|
||||
)/
|
||||
des='Macro to create a bundle of SAS packages, version 20260411. Run %bundlePackages(HELP) for help info.'
|
||||
des='Macro to create a bundle of SAS packages, version 20260514. Run %bundlePackages(HELP) for help info.'
|
||||
secure minoperator
|
||||
;
|
||||
|
||||
@@ -25,7 +25,7 @@ secure minoperator
|
||||
%put ### This is short help information for the `bundlePackages` macro #;
|
||||
%put #-------------------------------------------------------------------------------#;
|
||||
%put # #;
|
||||
%put # Macro to *create bundles* of SAS packages, version `20260411` #;
|
||||
%put # Macro to *create bundles* of SAS packages, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
@@ -62,7 +62,7 @@ secure minoperator
|
||||
%put # - `packagesRef=` *Optional.* Fileref to location of packages for the #;
|
||||
%put # bundle. Default value is `packages`. #;
|
||||
%put # #;
|
||||
%put # - `ods=` *Optional.* Name of SAS data set for the report. #;
|
||||
%put # - `ods=` *Optional.* V7 style name of SAS data set for report. #;
|
||||
%put # #;
|
||||
%put #-------------------------------------------------------------------------------#;
|
||||
%put # #;
|
||||
@@ -126,6 +126,13 @@ secure minoperator
|
||||
%let datetime = %sysfunc(datetime());
|
||||
%let reportFile = WORK.tmpbundlefile%sysfunc(int(&datetime.), b8601dt15.)_;
|
||||
|
||||
%if NOT %sysevalf(%superq(ods)=,BOOLEAN) %then %do;
|
||||
data _null_; /* verify ods= value */
|
||||
%SPFinit_intrnl_forceV7DSname(ods);
|
||||
call symputX("ods",ods,"L");
|
||||
run;
|
||||
%end;
|
||||
|
||||
data _null_ %if %superq(ods) NE %then %do; &ods. %end;
|
||||
%else %do; &reportFile.1 %end;
|
||||
;
|
||||
@@ -399,8 +406,8 @@ put "INFO: The " bundleName "bundle creation ended.";
|
||||
;
|
||||
format datetime e8601dt.;
|
||||
output
|
||||
%if %superq(ods) NE %then %do; %scan(&ods.,1,()) %end;
|
||||
%else %do; &reportFile.1 %end;
|
||||
%if %superq(ods) NE %then %do; &ods. %end;
|
||||
%else %do; &reportFile.1 %end;
|
||||
;
|
||||
put " ";
|
||||
rc=sleep(1,1);
|
||||
@@ -408,13 +415,13 @@ stop;
|
||||
run;
|
||||
|
||||
title2 "Summary of the bundle file";;
|
||||
proc print
|
||||
data= %if %superq(ods) NE %then %do; %scan(&ods.,1,()) %end;
|
||||
%else %do; &reportFile.1 %end;
|
||||
noObs label;
|
||||
proc print noObs label
|
||||
data= %if %superq(ods) NE %then %do; &ods. %end;
|
||||
%else %do; &reportFile.1 %end;
|
||||
;
|
||||
var bundleName datetime BundleSHA256 path;
|
||||
run;
|
||||
%if %superq(ods) NE %then %do; %put INFO: Report file: %scan(&ods.,1,()); %end;
|
||||
%if %superq(ods) NE %then %do; %put INFO: Report file: &ods.; %end;
|
||||
%else %do; proc delete data=&reportFile.1; run; %end;
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
when empty the "packages" value is used */
|
||||
)/secure
|
||||
/*** HELP END ***/
|
||||
des = 'Macro to list directories pointed by "packages" fileref, version 20260411. Run %extendPackagesFileref(HELP) for help info.'
|
||||
des = 'Macro to list directories pointed by "packages" fileref, version 20260514. 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 20260411
|
||||
%put ### This is short help information for the `extendPackagesFileref` macro #;
|
||||
%put #-----------------------------------------------------------------------------------------#;;
|
||||
%put # #;
|
||||
%put # Macro to list directories pointed by 'packages' fileref, version `20260411` #;
|
||||
%put # Macro to list directories pointed by 'packages' fileref, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
when empty takes buildLocation */
|
||||
)/ secure minoperator
|
||||
/*** HELP END ***/
|
||||
des = 'Macro to generate SAS packages, version 20260411. Run %generatePackage() for help info.'
|
||||
des = 'Macro to generate SAS packages, version 20260514. Run %generatePackage() for help info.'
|
||||
;
|
||||
%if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then
|
||||
%do;
|
||||
@@ -68,7 +68,7 @@ des = 'Macro to generate SAS packages, version 20260411. Run %generatePackage()
|
||||
%put ### This is short help information for the `generatePackage` macro #;
|
||||
%put #------------------------------------------------------------------------------------#;
|
||||
%put # #;
|
||||
%put # Macro to generate SAS packages, version `20260411` #;
|
||||
%put # Macro to generate SAS packages, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
@@ -950,7 +950,7 @@ title6 "MD5 hashed fileref of package lowcase name: &_PackageFileref_.";
|
||||
title&_titleNumber_. "Package ZIP file location is: &buildLocation.";
|
||||
%end;
|
||||
|
||||
footnote1 "SAS Packages Framework, version 20260411";
|
||||
footnote1 "SAS Packages Framework, version 20260514";
|
||||
|
||||
proc print
|
||||
data = &filesWithCodes.(drop=base build folderRef fileRef rc folderid _abort_ fileId additionalContent)
|
||||
@@ -1775,7 +1775,7 @@ data _null_;
|
||||
%end;
|
||||
put +(-1) '`.;'''
|
||||
/ ' !! '' %put The macro generated: '' !! put(dtCASLudf, E8601DT19.-L) !! ";"'
|
||||
/ ' !! '' %put with the SAS Packages Framework version 20260411.;'''
|
||||
/ ' !! '' %put with the SAS Packages Framework version 20260514.;'''
|
||||
/ ' !! '' %put ****************************************************************************;'''
|
||||
/ ' !! '' %GOTO theEndOfTheMacro;'''
|
||||
/ ' !! '' %end;''' ;
|
||||
@@ -1939,7 +1939,7 @@ data _null_;
|
||||
%end;
|
||||
put +(-1) '`.; '' !!' /
|
||||
''' %put The macro generated: ''' " !! put(dtIML, E8601DT19.-L) !! " '''; '' !! ' /
|
||||
''' %put with the SAS Packages Framework version 20260411.; '' !! ' /
|
||||
''' %put with the SAS Packages Framework version 20260514.; '' !! ' /
|
||||
''' %put ****************************************************************************; '' !! ' /
|
||||
''' %GOTO theEndOfTheMacro; '' !! ' /
|
||||
''' %end; '' !! ' /
|
||||
@@ -2811,7 +2811,7 @@ data _null_;
|
||||
%end;
|
||||
|
||||
put 'put " " / @3 "---------------------------------------------------------------------" / " ";'
|
||||
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20260411`*";'
|
||||
/ 'put @3 "*SAS package generated by SAS Package Framework, version `20260514`*";'
|
||||
/ "put @3 '*under `&sysscp.`(`&sysscpl.`) operating system,*';"
|
||||
/ "put @3 '*using SAS release: `&sysvlong4.`.*';"
|
||||
/ 'put " " / @3 "---------------------------------------------------------------------";';
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
*/
|
||||
)/secure
|
||||
/*** HELP END ***/
|
||||
des = 'Macro to get help about SAS package, version 20260411. Run %helpPackage() for help info.'
|
||||
des = 'Macro to get help about SAS package, version 20260514. 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 20260411. Run %helpPackage()
|
||||
%put ### This is short help information for the `helpPackage` macro #;
|
||||
%put #-------------------------------------------------------------------------------#;
|
||||
%put # #;
|
||||
%put # Macro to get help about SAS packages, version `20260411` #;
|
||||
%put # Macro to get help about SAS packages, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
/secure
|
||||
minoperator
|
||||
/*** HELP END ***/
|
||||
des = 'Macro to install SAS package, version 20260411. Run %%installPackage() for help info.'
|
||||
des = 'Macro to install SAS package, version 20260514. Run %%installPackage() for help info.'
|
||||
;
|
||||
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
|
||||
%do;
|
||||
@@ -45,7 +45,7 @@ des = 'Macro to install SAS package, version 20260411. Run %%installPackage() fo
|
||||
%put ### This is short help information for the `installPackage` macro #;
|
||||
%put #--------------------------------------------------------------------------------------------#;;
|
||||
%put # #;
|
||||
%put # Macro to install SAS packages, version `20260411` #;
|
||||
%put # Macro to install SAS packages, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
vERRb /* indicates if macro should be verbose and report errors */
|
||||
)
|
||||
/ minoperator PARMBUFF
|
||||
des = 'Macro to check if the PACKAGES fileref is "correct", type %isPackagesFilerefOK(HELP) for help, version 20260411.'
|
||||
des = 'Macro to check if the PACKAGES fileref is "correct", type %isPackagesFilerefOK(HELP) for help, version 20260514.'
|
||||
;
|
||||
/*** HELP END ***/
|
||||
%if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then
|
||||
@@ -20,7 +20,7 @@ des = 'Macro to check if the PACKAGES fileref is "correct", type %isPackagesFile
|
||||
%put ### This is short help information for the `isPackagesFilerefOK` macro #;
|
||||
%put #-----------------------------------------------------------------------------------------#;;
|
||||
%put # #;
|
||||
%put # Macro to check if the `packages` fileref is "correct", version `20260411` #;
|
||||
%put # Macro to check if the `packages` fileref is "correct", version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
|
||||
+13
-10
@@ -25,7 +25,7 @@
|
||||
listDataSet /* Name of a data set to save results */
|
||||
, quiet = 0 /* Indicate if results should be printed in log */
|
||||
)/secure parmbuff
|
||||
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20260411.'
|
||||
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20260514.'
|
||||
;
|
||||
%if (%QUPCASE(&listDataSet.) = HELP) %then
|
||||
%do;
|
||||
@@ -40,7 +40,7 @@ des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HE
|
||||
%put ### This is short help information for the `listPackages` macro #;
|
||||
%put #-----------------------------------------------------------------------------------------#;;
|
||||
%put # #;
|
||||
%put # Macro to list available SAS packages, version `20260411` #;
|
||||
%put # Macro to list available SAS packages, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
@@ -101,14 +101,17 @@ des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HE
|
||||
|
||||
options NOnotes NOsource ls=MAX ps=MAX;
|
||||
|
||||
data _null_;
|
||||
length listDataSet $ 41;
|
||||
listDataSet = strip(scan(symget('listDataSet'),1,'( )'));
|
||||
call symputX('listDataSet',listDataSet,"L");
|
||||
if not (listDataSet = " ") then
|
||||
call symputX('listDataSetCheck',1,"L");
|
||||
else call symputX('quiet',0,"L");
|
||||
run;
|
||||
%if %superq(listDataSet) NE %then
|
||||
%do;
|
||||
data _null_; /* verify listDataSet compatibility with V7 naming */
|
||||
%SPFinit_intrnl_forceV7DSname(listDataSet);
|
||||
|
||||
call symputX('listDataSet',listDataSet,"L");
|
||||
if not (listDataSet = " ") then
|
||||
call symputX('listDataSetCheck',1,"L");
|
||||
else call symputX('quiet',0,"L");
|
||||
run;
|
||||
%end;
|
||||
|
||||
data _null_
|
||||
%if 1=&listDataSetCheck. %then
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
*/
|
||||
)/secure
|
||||
/*** HELP END ***/
|
||||
des = 'Macro to load SAS package, version 20260411. Run %loadPackage() for help info.'
|
||||
des = 'Macro to load SAS package, version 20260514. 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 `20260411` #;
|
||||
%put # Macro to *load* SAS packages, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
is provided in required version */
|
||||
)/secure
|
||||
/*** HELP END ***/
|
||||
des = 'Macro to load additional content for a SAS package, version 20260411. Run %loadPackageAddCnt() for help info.'
|
||||
des = 'Macro to load additional content for a SAS package, version 20260514. 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 `20260411` #;
|
||||
%put # Macro to *load* additional content for a SAS package, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
)/secure
|
||||
/*** HELP END ***/
|
||||
des = 'Macro to load multiple SAS packages at one run, version 20260411. Run %loadPackages() for help info.'
|
||||
des = 'Macro to load multiple SAS packages at one run, version 20260514. 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 `20260411` #;
|
||||
%put # Macro wrapper for the loadPackage macro, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
*/
|
||||
)/secure
|
||||
/*** HELP END ***/
|
||||
des = 'Macro to preview content of a SAS package, version 20260411. Run %previewPackage() for help info.'
|
||||
des = 'Macro to preview content of a SAS package, version 20260514. 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 20260411. Run %preview
|
||||
%put ### This is short help information for the `previewPackage` macro #;
|
||||
%put #-------------------------------------------------------------------------------#;
|
||||
%put # #;
|
||||
%put # Macro to get preview of a SAS packages, version `20260411` #;
|
||||
%put # Macro to get preview of a SAS packages, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
,psMAX=MAX /* pageSise in case executed inside DoSubL() */
|
||||
,ods= /* a data set for results, e.g., work.relocatePackageReport */
|
||||
)
|
||||
/ des = 'Utility macro that locally Copies or Moves Packages, version 20260411. Run %relocatePackage() for help info.'
|
||||
/ des = 'Utility macro that locally Copies or Moves Packages, version 20260514. Run %relocatePackage() for help info.'
|
||||
secure
|
||||
minoperator
|
||||
;
|
||||
@@ -33,7 +33,7 @@
|
||||
%put ### This is short help information for the `relocatePackage` macro #;
|
||||
%put #-------------------------------------------------------------------------------#;
|
||||
%put # #;
|
||||
%put # Macro to *locally copy or move* (relocate) SAS packages, version `20260411` #;
|
||||
%put # Macro to *locally copy or move* (relocate) SAS packages, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
@@ -185,7 +185,14 @@
|
||||
%put WARNING: Checksum verification impossible! Minimum SAS version required for the process is 9.4M6. ;
|
||||
%end;
|
||||
|
||||
data _null_ %if %superq(ods) NE %then %do; &ods. %end;
|
||||
%if NOT %sysevalf(%superq(ods)=,BOOLEAN) %then %do;
|
||||
data _null_; /* verify ods= value */
|
||||
%SPFinit_intrnl_forceV7DSname(ods);
|
||||
call symputX("ods",ods,"L");
|
||||
run;
|
||||
%end;
|
||||
|
||||
data _null_ &ods. /* the &ods. will be used if not missing */
|
||||
;
|
||||
putlog 52*"*" 24*"=" 52*"*";
|
||||
length packages source target $ 32767 sDevice tDevice $ 32;
|
||||
@@ -565,7 +572,7 @@
|
||||
/ "WARNING- Source is: " s_HASHING
|
||||
/ "WARNING- Target is: " t_HASHING
|
||||
/ "WARNING- There could be errors during copying. Check your files.";
|
||||
%if %superq(ods) NE %then %do; output %scan(&ods.,1,()) ; %end;
|
||||
output &ods.; /* the &ods. will be used if not missing */
|
||||
end;
|
||||
%end;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ SPFmacroName /* space separated list of names */
|
||||
/
|
||||
minoperator
|
||||
secure
|
||||
des = 'Macro to provide help notes about SAS Packages Framework macros, version 20260411. Run %SasPackagesFrameworkNotes(HELP) for help info.'
|
||||
des = 'Macro to provide help notes about SAS Packages Framework macros, version 20260514. Run %SasPackagesFrameworkNotes(HELP) for help info.'
|
||||
;
|
||||
%local list N i element;
|
||||
%let list=
|
||||
@@ -51,7 +51,7 @@ SasPackagesFrameworkNotes
|
||||
%put ### This is short help information for the `SasPackagesFrameworkNotes` macro #;
|
||||
%put #-------------------------------------------------------------------------------#;
|
||||
%put # #;
|
||||
%put # Macro prints help notes for SAS Packages Framework macros, version `20260411` #;
|
||||
%put # Macro prints help notes for SAS Packages Framework macros, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
/*+SPFinit_intrnl_forceV7DSname+*/
|
||||
%macro SPFinit_intrnl_forceV7DSname(
|
||||
mcParam /* name of a macro parameter holding user provided data set name */
|
||||
)/secure minoperator
|
||||
des='SAS Packages Framework internal macro. Executable only inside selected SPF macros. Macro generates 4GL code that forces V7 compatybility for user provided data set names. Version 20260514.';
|
||||
/* The macro can be called only inside a data step. */
|
||||
/****************************************************************************
|
||||
### Parameters:
|
||||
|
||||
`mcParam` - name of a macro parameter holding user provided data set name
|
||||
|
||||
### Behavior:
|
||||
|
||||
Description:
|
||||
The 4GL code SYMGETs macro variable value, SCANs only first
|
||||
part of the string in case there are parenthesis "()" in it.
|
||||
Then it COMPRESSes the string and keep _only_ digits, letters,
|
||||
underscore, and period. All periods are TRANSLATEd to spaces.
|
||||
If created string is not empty its last chunk is SCANned for
|
||||
data set name, the second to last chunk is SCANned for libname
|
||||
(if empty then "work" is used). First character of LIB and DS
|
||||
variables is checked, if it is a digit, then underscore is added.
|
||||
At the end the LIB and DS are concatenated and casted to upper
|
||||
case letters.
|
||||
|
||||
Examples:
|
||||
|
||||
abc.xyz -> ABC.XYZ
|
||||
ABC.XYZ(obs=42) -> ABC.XYZ
|
||||
XYZ -> WORK.XYZ
|
||||
abc. -> WORK.ABC
|
||||
.XYZ -> WORK.XYZ
|
||||
123.456 -> _123._456
|
||||
A#B.x$y -> AB.XY
|
||||
|
||||
Usecase:
|
||||
Inside a macro for value check
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||
%macro A(ods);
|
||||
data _null_;
|
||||
%SPDinit_intrnl_forceV7DSname(ods);
|
||||
call symputX("ods",ods,"L");
|
||||
run;
|
||||
|
||||
%if %superq(ods) ne %then
|
||||
%do;
|
||||
data &ods.;
|
||||
...
|
||||
run;
|
||||
%end;
|
||||
%mend;
|
||||
|
||||
%A()
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
****************************************************************************/
|
||||
%local allowedSPFmacrosList;
|
||||
%let allowedSPFmacrosList=LISTPACKAGES RELOCATEPACKAGE UNBUNDLEPACKAGES BUNDLEPACKAGES;
|
||||
%if %sysmexecname(%sysmexecdepth-1) in (&allowedSPFmacrosList.) %then
|
||||
%do;
|
||||
/*=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=*/
|
||||
length &mcParam. $ 41 lib $ 8 ds $ 32;
|
||||
/* force only V7 valid symbols */
|
||||
&mcParam. = symget("&mcParam.");
|
||||
if NOT (&mcParam. = " ") then
|
||||
do;
|
||||
/* drop every illegal character */
|
||||
&mcParam. = compress(scan(&mcParam,1,'()'),'_.','kad');
|
||||
&mcParam. = cats(translate(&mcParam.," ","."));
|
||||
if NOT (&mcParam.=" ") then
|
||||
do;
|
||||
/* use 2 last blocks of symbols */
|
||||
lib = coalescec(scan(&mcParam.,-2),"work");
|
||||
ds = scan(&mcParam.,-1);
|
||||
/* check first symbol, in case leading digit add _ */
|
||||
if ("0" <=: lib <=: "9")
|
||||
then lib=cats("_",lib);
|
||||
if ("0" <=: ds <=: "9")
|
||||
then ds=cats("_",ds);
|
||||
|
||||
&mcParam. = upcase(catx(".",lib,ds));
|
||||
end;
|
||||
end;
|
||||
/*=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=*/
|
||||
%end;
|
||||
%else
|
||||
%do;
|
||||
%put INFO: SAS Packages Framework internal macro.;
|
||||
%put INFO: Executable only inside &allowedSPFmacrosList. macros.;
|
||||
%end;
|
||||
%mend SPFinit_intrnl_forceV7DSname;
|
||||
|
||||
/* end of SPFinit.sas file */
|
||||
@@ -1,6 +1,6 @@
|
||||
/*+SPFint_gnPckg_arch+*/
|
||||
%macro SPFint_gnPckg_arch()/secure minoperator
|
||||
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the archive version generation part of the process. Version 20260411.';
|
||||
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the archive version generation part of the process. Version 20260514.';
|
||||
/* macro picks up all macrovariables from external scope, so from the %generatePackage() macro */
|
||||
%if %sysmexecname(%sysmexecdepth-1) in (GENERATEPACKAGE) %then
|
||||
%do;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*+SPFint_gnPckg_markdown+*/
|
||||
%macro SPFint_gnPckg_markdown()/secure minoperator
|
||||
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the markdown documentation part of the process. Version 20260411.';
|
||||
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the markdown documentation part of the process. Version 20260514.';
|
||||
/* macro picks up all macrovariables from external scope, so from the %generatePackage() macro */
|
||||
%if %sysmexecname(%sysmexecdepth-1) in (GENERATEPACKAGE) %then
|
||||
%do;
|
||||
@@ -112,7 +112,7 @@ data &filesWithCodes.markdown;
|
||||
%end;
|
||||
|
||||
put " " / "---------------------------------------------------------------------" / " "
|
||||
/ "*SAS package generated by SAS Package Framework, version `20260411`,*"
|
||||
/ "*SAS package generated by SAS Package Framework, version `20260514`,*"
|
||||
/ "*under `&sysscp.`(`&sysscpl.`) operating system,*"
|
||||
/ "*using SAS release: `&sysvlong4.`.*"
|
||||
/ " " / "---------------------------------------------------------------------" / " ";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*+SPFint_gnPckg_tests+*/
|
||||
%macro SPFint_gnPckg_tests()/secure minoperator
|
||||
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the test part of the process. Version 20260411.';
|
||||
des='SAS Packages Framework internal macro. Executable only inside the %generatePackage() macro. The macro encapsulates the test part of the process. Version 20260514.';
|
||||
/* macro picks up all macrovariables from external scope, so from the %generatePackage() macro */
|
||||
%if %sysmexecname(%sysmexecdepth-1) in (GENERATEPACKAGE) %then
|
||||
%do;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
,nobs=0 /* technical parameter */
|
||||
)
|
||||
/*** HELP END ***/
|
||||
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20260411. Run %splitCodeForPackage() for help info.'
|
||||
/ des = 'Utility macro to split "one big" code into multiple files for a SAS package, version 20260514. Run %splitCodeForPackage() for help info.'
|
||||
;
|
||||
%if (%superq(codeFile) = ) OR (%qupcase(&codeFile.) = HELP) %then
|
||||
%do;
|
||||
@@ -24,7 +24,7 @@
|
||||
%put #-------------------------------------------------------------------------------#;
|
||||
%put # #;
|
||||
%put # Utility macro to *split* single file with SAS package code into multiple #;
|
||||
%put # files with separate snippets, version `20260411` #;
|
||||
%put # files with separate snippets, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
,ods= /* data set for report file */
|
||||
,verify=0
|
||||
)/
|
||||
des='Macro to extract a bundle of SAS packages, version 20260411. Run %unbundlePackages(HELP) for help info.'
|
||||
des='Macro to extract a bundle of SAS packages, version 20260514. Run %unbundlePackages(HELP) for help info.'
|
||||
secure
|
||||
minoperator
|
||||
;
|
||||
@@ -26,7 +26,7 @@ minoperator
|
||||
%put ### This is short help information for the `unbundlePackages` macro #;
|
||||
%put #-------------------------------------------------------------------------------#;
|
||||
%put # #;
|
||||
%put # Macro to *extract* SAS packages from a bundle, version `20260411` #;
|
||||
%put # Macro to *extract* SAS packages from a bundle, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
@@ -58,7 +58,7 @@ minoperator
|
||||
%put # - `packagesRef=` *Optional.* Fileref to location where packages will #;
|
||||
%put # be extracted. Default value is `packages`. #;
|
||||
%put # #;
|
||||
%put # - `ods=` *Optional.* Name of SAS data set for the report. #;
|
||||
%put # - `ods=` *Optional.* V7 style name of SAS data set for report. #;
|
||||
%put # #;
|
||||
%put # - `verify=` *Optional.* Indicates if verification code should #;
|
||||
%put # be executed after bundle extraction. #;
|
||||
@@ -128,6 +128,13 @@ minoperator
|
||||
%let datetime = %sysfunc(datetime());
|
||||
%let reportFile = WORK.tmpbundlefile%sysfunc(int(&datetime.), b8601dt15.)_;
|
||||
|
||||
%if NOT %sysevalf(%superq(ods)=,BOOLEAN) %then %do;
|
||||
data _null_; /* verify ods= value */
|
||||
%SPFinit_intrnl_forceV7DSname(ods);
|
||||
call symputX("ods",ods,"L");
|
||||
run;
|
||||
%end;
|
||||
|
||||
data _null_;
|
||||
datetime=symgetn('datetime');
|
||||
|
||||
@@ -289,7 +296,12 @@ else
|
||||
packagesList = catx(" ", packagesList, package);
|
||||
end;
|
||||
|
||||
rc = Q.output(dataset:"&reportFile.1");
|
||||
|
||||
rc = Q.output(dataset: /* create propper tag */
|
||||
%if %superq(ods) NE %then %do; "&ods." %end;
|
||||
%else %do; "&reportFile.1" %end;
|
||||
);
|
||||
|
||||
|
||||
/* code executed for unbundling */
|
||||
length code1 code2 $ 32767;
|
||||
@@ -321,16 +333,14 @@ put " ";
|
||||
rc=sleep(1,1);
|
||||
|
||||
rc = doSubL("title 'Summary of the extracted bundle file';" !!
|
||||
"proc print data=" !!
|
||||
"proc print label data=" !!
|
||||
%if %superq(ods) NE %then %do; "&ods." %end;
|
||||
%else %do; "&reportFile.1" %end; !!
|
||||
"; var package pckVer pckDtm hash; run;" !!
|
||||
%if %superq(ods) NE %then
|
||||
%do; "%scan(&ods.,1,())" %end;
|
||||
%do; %put INFO: Report file: &ods.; %end;
|
||||
%else
|
||||
%do; "&reportFile.1" %end; !!
|
||||
" label; var package pckVer pckDtm hash; run;" !!
|
||||
%if %superq(ods) NE %then
|
||||
%do; %put INFO: Report file: %scan(&ods.,1,()); %end;
|
||||
%else
|
||||
%do; "proc delete data=&reportFile.1; run;" %end; !!
|
||||
%do; "proc delete data=&reportFile.1; run;" !! %end;
|
||||
"title;");
|
||||
|
||||
stop;
|
||||
@@ -359,6 +369,7 @@ options mprint;
|
||||
,path=R:\
|
||||
,packagesPath=R:\check2
|
||||
,verify=1
|
||||
,ods=WORK.bundlenametest124_reportDS
|
||||
)
|
||||
|
||||
%unbundlePackages(
|
||||
@@ -384,4 +395,4 @@ options mprint;
|
||||
|
||||
*/
|
||||
|
||||
/* end of SPFinit.sas file */
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
*/
|
||||
)/secure
|
||||
/*** HELP END ***/
|
||||
des = 'Macro to unload SAS package, version 20260411. Run %unloadPackage() for help info.'
|
||||
des = 'Macro to unload SAS package, version 20260514. 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 20260411. Run %unloadPackage() for h
|
||||
%put ### This is short help information for the `unloadPackage` macro #;
|
||||
%put #-------------------------------------------------------------------------------#;
|
||||
%put # #;
|
||||
%put # Macro to unload SAS packages, version `20260411` #;
|
||||
%put # Macro to unload SAS packages, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
hashing_file() function, SAS 9.4M6 */
|
||||
)/secure
|
||||
/*** HELP END ***/
|
||||
des = 'Macro to verify SAS package with the hash digest, version 20260411. Run %verifyPackage() for help info.'
|
||||
des = 'Macro to verify SAS package with the hash digest, version 20260514. 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 20260411. Run %
|
||||
%put ### This is short help information for the `verifyPackage` macro #;
|
||||
%put #-------------------------------------------------------------------------------#;
|
||||
%put # #;
|
||||
%put # Macro to verify SAS package with it hash digest, version `20260411` #;
|
||||
%put # Macro to verify SAS package with it hash digest, version `20260514` #;
|
||||
%put # #;
|
||||
%put # A SAS package is a zip file containing a group #;
|
||||
%put # of SAS codes (macros, functions, data steps generating #;
|
||||
|
||||
Reference in New Issue
Block a user