mirror of
https://github.com/yabwon/SAS_PACKAGES.git
synced 2026-06-10 12:10:20 +00:00
update in version checking
update in version checking
This commit is contained in:
Binary file not shown.
+93
-60
@@ -1,4 +1,4 @@
|
|||||||
/*** HELP START ***/
|
/*** HELP START ***/
|
||||||
|
|
||||||
/**############################################################################**/
|
/**############################################################################**/
|
||||||
/* */
|
/* */
|
||||||
@@ -538,7 +538,7 @@ data _null_;
|
|||||||
packageReqPackages = lowcase(symget('packageReqPackages'));
|
packageReqPackages = lowcase(symget('packageReqPackages'));
|
||||||
/* try to load required packages */
|
/* try to load required packages */
|
||||||
put 'data _null_ ; ';
|
put 'data _null_ ; ';
|
||||||
put ' length req name $ 64 SYSloadedPackages $ 32767; ';
|
put ' length req name $ 64 vers verR 8 SYSloadedPackages $ 32767; ';
|
||||||
put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then ';
|
put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then ';
|
||||||
put ' do; ';
|
put ' do; ';
|
||||||
put ' do until(EOF); ';
|
put ' do until(EOF); ';
|
||||||
@@ -550,19 +550,24 @@ data _null_;
|
|||||||
|
|
||||||
put ' declare hash LP(); ';
|
put ' declare hash LP(); ';
|
||||||
put ' LP.defineKey("name"); ';
|
put ' LP.defineKey("name"); ';
|
||||||
|
put ' LP.defineData("vers"); ';
|
||||||
put ' LP.defineDone(); ';
|
put ' LP.defineDone(); ';
|
||||||
put ' do _N_ = 1 to countw(SYSloadedPackages); ';
|
put ' do _N_ = 1 to countw(SYSloadedPackages); ';
|
||||||
put ' name = scan(SYSloadedPackages, _N_); ';
|
put ' req = scan(SYSloadedPackages, _N_, " "); ';
|
||||||
|
put ' name = lowcase(strip(scan(req, 1, "("))); ';
|
||||||
|
put ' vers = input(compress(scan(req,-1, "("), ".", "KD"),best32.); ';
|
||||||
put ' _RC_ = LP.add(); ';
|
put ' _RC_ = LP.add(); ';
|
||||||
put ' end; ';
|
put ' end; ';
|
||||||
|
|
||||||
put ' do req = ' / packageReqPackages / ' ; ';
|
put ' do req = ' / packageReqPackages / ' ; ';
|
||||||
put ' name = lowcase(strip(scan(req, 1, " "))); ';
|
/* put ' req = compress(req, "(.)", "KDF"); ';*/
|
||||||
put ' vers = lowcase(compress(scan(req,-1, " "), ".", "KD")); ';
|
put ' name = lowcase(strip(scan(req, 1, "("))); ';
|
||||||
put ' if LP.check() ne 0 then ';
|
put ' verR = input(compress(scan(req,-1, "("), ".", "KD"),best32.); vers = .; ';
|
||||||
|
put ' LP_find = LP.find(); ';
|
||||||
|
put ' if (LP_find ne 0) or (LP_find = 0 and . < vers < verR) then ';
|
||||||
put ' do; ';
|
put ' do; ';
|
||||||
put ' put "NOTE: Trying to install required SAS package " req; ';
|
put ' put "NOTE: Trying to install required SAS package " req; ';
|
||||||
put ' call execute(cats(''%nrstr(%loadPackage('', name, ", requiredVersion = ", vers, "))")); ';
|
put ' call execute(cats(''%nrstr(%loadPackage('', name, ", requiredVersion = ", verR, "))")); ';
|
||||||
put ' end ; ';
|
put ' end ; ';
|
||||||
put ' end ; ';
|
put ' end ; ';
|
||||||
put ' stop; ';
|
put ' stop; ';
|
||||||
@@ -581,21 +586,26 @@ data _null_;
|
|||||||
|
|
||||||
put ' declare hash LP(); ';
|
put ' declare hash LP(); ';
|
||||||
put ' LP.defineKey("name"); ';
|
put ' LP.defineKey("name"); ';
|
||||||
|
put ' LP.defineData("vers"); ';
|
||||||
put ' LP.defineDone(); ';
|
put ' LP.defineDone(); ';
|
||||||
put ' do _N_ = 1 to countw(SYSloadedPackages); ';
|
put ' do _N_ = 1 to countw(SYSloadedPackages); ';
|
||||||
put ' name = scan(SYSloadedPackages, _N_); ';
|
put ' req = scan(SYSloadedPackages, _N_, " "); ';
|
||||||
|
put ' name = lowcase(strip(scan(req, 1, "("))); ';
|
||||||
|
put ' vers = input(compress(scan(req,-1, "("), ".", "KD"),best32.); ';
|
||||||
put ' _RC_ = LP.add(); ';
|
put ' _RC_ = LP.add(); ';
|
||||||
put ' end; ';
|
put ' end; ';
|
||||||
|
|
||||||
put ' missingPackagr = 0; ';
|
put ' missingPackagr = 0; ';
|
||||||
put ' do req = ' / packageReqPackages / ' ; ';
|
put ' do req = ' / packageReqPackages / ' ; ';
|
||||||
put ' name = lowcase(strip(scan(req, 1, " "))); ';
|
/* put ' req = compress(req, "(.)", "KDF"); ';*/
|
||||||
put ' vers = lowcase(compress(scan(req,-1, " "), ".", "KD")); ';
|
put ' name = lowcase(strip(scan(req, 1, "("))); ';
|
||||||
put ' if LP.check() ne 0 then ';
|
put ' verR = input(compress(scan(req,-1, "("), ".", "KD"),best32.); vers = .; ';
|
||||||
|
put ' LP_find = LP.find(); ';
|
||||||
|
put ' if (LP_find ne 0) or (LP_find = 0 and . < vers < verR) then ';
|
||||||
put ' do; ';
|
put ' do; ';
|
||||||
put ' missingPackagr = 1; ';
|
put ' missingPackagr = 1; ';
|
||||||
put ' put "ERROR: SAS package " req "is missing! Download it and" ; ';
|
put ' put "ERROR: SAS package " req "is missing! Download it and" ; ';
|
||||||
put ' put ''ERROR- use %loadPackage('' name ", requiredVersion = " vers ") to load it." ;';
|
put ' put ''ERROR- use %loadPackage('' name ", requiredVersion = " verR ") to load it." ;';
|
||||||
put ' end ; ';
|
put ' end ; ';
|
||||||
put ' end ; ';
|
put ' end ; ';
|
||||||
put ' if missingPackagr then call symputX("packageRequiredErrors", 1, "L"); ';
|
put ' if missingPackagr then call symputX("packageRequiredErrors", 1, "L"); ';
|
||||||
@@ -605,8 +615,8 @@ data _null_;
|
|||||||
put ' put "ERROR: No package loaded!"; ';
|
put ' put "ERROR: No package loaded!"; ';
|
||||||
put ' call symputX("packageRequiredErrors", 1, "L"); ';
|
put ' call symputX("packageRequiredErrors", 1, "L"); ';
|
||||||
put ' do req = ' / packageReqPackages / ' ; ';
|
put ' do req = ' / packageReqPackages / ' ; ';
|
||||||
put ' name = lowcase(strip(scan(req, 1, " "))); ';
|
put ' name = lowcase(strip(scan(req, 1, "("))); ';
|
||||||
put ' vers = lowcase(compress(scan(req,-1, " "), ".", "KD")); ';
|
put ' vers = lowcase(compress(scan(req,-1, "("), ".", "KD")); ';
|
||||||
put ' put "ERROR: SAS package " req "is missing! Download it and" ; ';
|
put ' put "ERROR: SAS package " req "is missing! Download it and" ; ';
|
||||||
put ' put ''ERROR- use %loadPackage('' name ", requiredVersion = " vers ") to load it." ; ';
|
put ' put ''ERROR- use %loadPackage('' name ", requiredVersion = " vers ") to load it." ; ';
|
||||||
put ' end ; ';
|
put ' end ; ';
|
||||||
@@ -673,31 +683,31 @@ data _null_;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
/* update SYSloadedPackages global macrovariable */
|
/* update SYSloadedPackages global macrovariable */
|
||||||
put ' data _null_ ; ';
|
put ' data _null_ ; ';
|
||||||
put ' length SYSloadedPackages $ 32767; ';
|
put ' length SYSloadedPackages $ 32767; ';
|
||||||
put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then ';
|
put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then ';
|
||||||
put ' do; ';
|
put ' do; ';
|
||||||
put ' do until(EOF); ';
|
put ' do until(EOF); ';
|
||||||
put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; ';
|
put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; ';
|
||||||
put ' substr(SYSloadedPackages, 1+offset, 200) = value; ';
|
put ' substr(SYSloadedPackages, 1+offset, 200) = value; ';
|
||||||
put ' end; ';
|
put ' end; ';
|
||||||
put ' SYSloadedPackages = cats("#", translate(strip(SYSloadedPackages), "#", " "), "#"); ';
|
put ' SYSloadedPackages = cats("#", translate(strip(SYSloadedPackages), "#", " "), "#"); ';
|
||||||
|
|
||||||
put " if INDEX(lowcase(SYSloadedPackages), '#%lowcase(&packageName.)#') = 0 then ";
|
put " if INDEX(lowcase(SYSloadedPackages), '#%lowcase(&packageName.(&packageVersion.))#') = 0 then ";
|
||||||
put ' do; ';
|
put ' do; ';
|
||||||
put " SYSloadedPackages = catx('#', SYSloadedPackages, '&packageName.'); ";
|
put " SYSloadedPackages = catx('#', SYSloadedPackages, '&packageName.(&packageVersion.)'); ";
|
||||||
put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); ';
|
put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); ';
|
||||||
put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); ';
|
put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); ';
|
||||||
put ' put "NOTE: " SYSloadedPackages = ; ';
|
put ' put "NOTE: " SYSloadedPackages = ; ';
|
||||||
put ' end ; ';
|
put ' end ; ';
|
||||||
put ' end; ';
|
put ' end; ';
|
||||||
put ' else ';
|
put ' else ';
|
||||||
put ' do; ';
|
put ' do; ';
|
||||||
put " call symputX('SYSloadedPackages', '&packageName.', 'G'); ";
|
put " call symputX('SYSloadedPackages', '&packageName.(&packageVersion.)', 'G'); ";
|
||||||
put " put 'NOTE: SYSloadedPackages = &packageName.'; ";
|
put " put 'NOTE: SYSloadedPackages = &packageName.(&packageVersion.)'; ";
|
||||||
put ' end; ';
|
put ' end; ';
|
||||||
put ' stop; ';
|
put ' stop; ';
|
||||||
put 'run; ' / ;
|
put 'run; ' / ;
|
||||||
|
|
||||||
put '%put NOTE- ;';
|
put '%put NOTE- ;';
|
||||||
put '%put NOTE: '"Loading package &packageName., version &packageVersion., license &packageLicense.;";
|
put '%put NOTE: '"Loading package &packageName., version &packageVersion., license &packageLicense.;";
|
||||||
@@ -862,13 +872,13 @@ data _null_;
|
|||||||
%do;
|
%do;
|
||||||
length packageReqPackages $ 32767;
|
length packageReqPackages $ 32767;
|
||||||
packageReqPackages = lowcase(symget('packageReqPackages'));
|
packageReqPackages = lowcase(symget('packageReqPackages'));
|
||||||
/* try to load required packages */
|
/* note to unload required packages */
|
||||||
put 'data _null_ ; ';
|
put 'data _null_ ; ';
|
||||||
put ' length req name $ 64; ';
|
put ' length req name $ 64; ';
|
||||||
put ' put "NOTE-" / "NOTE: To unload additional required SAS packages execute: " / "NOTE-"; ';
|
put ' put "NOTE-" / "NOTE: To unload additional required SAS packages execute: " / "NOTE-"; ';
|
||||||
put ' do req = ' / packageReqPackages / ' ; ';
|
put ' do req = ' / packageReqPackages / ' ; ';
|
||||||
put ' name = strip(scan(req, 1, " ")); ';
|
put ' name = strip(scan(req, 1, "(")); ';
|
||||||
put ' put ''NOTE- %unloadPackage( '' name ")" ; ';
|
put ' put '' %unloadPackage( '' name ")" ; ';
|
||||||
put ' end ; ';
|
put ' end ; ';
|
||||||
put ' put "NOTE-" / "NOTE-"; stop; ';
|
put ' put "NOTE-" / "NOTE-"; stop; ';
|
||||||
put 'run; ';
|
put 'run; ';
|
||||||
@@ -876,26 +886,26 @@ data _null_;
|
|||||||
|
|
||||||
|
|
||||||
/* update SYSloadedPackages global macrovariable */
|
/* update SYSloadedPackages global macrovariable */
|
||||||
put ' data _null_ ; ';
|
put ' data _null_ ; ';
|
||||||
put ' length SYSloadedPackages $ 32767; ';
|
put ' length SYSloadedPackages $ 32767; ';
|
||||||
put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then ';
|
put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then ';
|
||||||
put ' do; ';
|
put ' do; ';
|
||||||
put ' do until(EOF); ';
|
put ' do until(EOF); ';
|
||||||
put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; ';
|
put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; ';
|
||||||
put ' substr(SYSloadedPackages, 1+offset, 200) = value; ';
|
put ' substr(SYSloadedPackages, 1+offset, 200) = value; ';
|
||||||
put ' end; ';
|
put ' end; ';
|
||||||
put ' SYSloadedPackages = cats("#", translate(strip(SYSloadedPackages), "#", " "), "#"); ';
|
put ' SYSloadedPackages = cats("#", translate(strip(SYSloadedPackages), "#", " "), "#"); ';
|
||||||
|
|
||||||
put " if INDEX(lowcase(SYSloadedPackages), '#%lowcase(&packageName.)#') > 0 then ";
|
put " if INDEX(lowcase(SYSloadedPackages), '#%lowcase(&packageName.(&packageVersion.))#') > 0 then ";
|
||||||
put ' do; ';
|
put ' do; ';
|
||||||
put " SYSloadedPackages = tranwrd(SYSloadedPackages, '#&packageName.#', '##'); ";
|
put " SYSloadedPackages = tranwrd(SYSloadedPackages, '#&packageName.(&packageVersion.)#', '##'); ";
|
||||||
put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); ';
|
put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); ';
|
||||||
put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); ';
|
put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); ';
|
||||||
put ' put "NOTE: " SYSloadedPackages = ; ';
|
put ' put "NOTE: " SYSloadedPackages = ; ';
|
||||||
put ' end ; ';
|
put ' end ; ';
|
||||||
put ' end; ';
|
put ' end; ';
|
||||||
put ' stop; ';
|
put ' stop; ';
|
||||||
put 'run; ' / ;
|
put 'run; ' / ;
|
||||||
|
|
||||||
|
|
||||||
put '%put NOTE: '"Unloading package &packageName., version &packageVersion., license &packageLicense.;";
|
put '%put NOTE: '"Unloading package &packageName., version &packageVersion., license &packageLicense.;";
|
||||||
@@ -943,6 +953,29 @@ data _null_;
|
|||||||
put ' if upcase(strip(_infile_)) = "DESCRIPTION START:" then printer = 1; ';
|
put ' if upcase(strip(_infile_)) = "DESCRIPTION START:" then printer = 1; ';
|
||||||
put ' end; ';
|
put ' end; ';
|
||||||
put ' else stop; ';
|
put ' else stop; ';
|
||||||
|
|
||||||
|
%if %bquote(&packageReqPackages.) ne %then
|
||||||
|
%do;
|
||||||
|
length packageReqPackages $ 32767;
|
||||||
|
packageReqPackages = symget('packageReqPackages');
|
||||||
|
put ' length req $ 64; ';
|
||||||
|
put ' put ; put " Required SAS Packages: "; ';
|
||||||
|
put ' do req = ' / packageReqPackages / ' ; ';
|
||||||
|
put ' put " " req; ';
|
||||||
|
put ' end ; ';
|
||||||
|
%end;
|
||||||
|
|
||||||
|
%if %bquote(&packageRequired.) ne %then
|
||||||
|
%do;
|
||||||
|
length packageRequired $ 32767;
|
||||||
|
packageRequired = symget('packageRequired');
|
||||||
|
put ' length req $ 64; ';
|
||||||
|
put ' put ; put " Required SAS Components: "; ';
|
||||||
|
put ' do req = ' / packageRequired / ' ; ';
|
||||||
|
put ' put " " req; ';
|
||||||
|
put ' end ; ';
|
||||||
|
%end;
|
||||||
|
|
||||||
put 'run; ' /;
|
put 'run; ' /;
|
||||||
|
|
||||||
/* license info */
|
/* license info */
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user