mirror of
https://github.com/yabwon/SAS_PACKAGES.git
synced 2026-01-09 07:50:06 +00:00
update in version checking
update in version checking
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/*** HELP START ***/
|
||||
/*** HELP START ***/
|
||||
|
||||
/**############################################################################**/
|
||||
/* */
|
||||
@@ -538,7 +538,7 @@ data _null_;
|
||||
packageReqPackages = lowcase(symget('packageReqPackages'));
|
||||
/* try to load required packages */
|
||||
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 ' do; ';
|
||||
put ' do until(EOF); ';
|
||||
@@ -550,19 +550,24 @@ data _null_;
|
||||
|
||||
put ' declare hash LP(); ';
|
||||
put ' LP.defineKey("name"); ';
|
||||
put ' LP.defineData("vers"); ';
|
||||
put ' LP.defineDone(); ';
|
||||
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 ' end; ';
|
||||
|
||||
put ' do req = ' / packageReqPackages / ' ; ';
|
||||
put ' name = lowcase(strip(scan(req, 1, " "))); ';
|
||||
put ' vers = lowcase(compress(scan(req,-1, " "), ".", "KD")); ';
|
||||
put ' if LP.check() ne 0 then ';
|
||||
/* put ' req = compress(req, "(.)", "KDF"); ';*/
|
||||
put ' name = lowcase(strip(scan(req, 1, "("))); ';
|
||||
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 ' 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 ' stop; ';
|
||||
@@ -581,21 +586,26 @@ data _null_;
|
||||
|
||||
put ' declare hash LP(); ';
|
||||
put ' LP.defineKey("name"); ';
|
||||
put ' LP.defineData("vers"); ';
|
||||
put ' LP.defineDone(); ';
|
||||
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 ' end; ';
|
||||
|
||||
put ' missingPackagr = 0; ';
|
||||
put ' do req = ' / packageReqPackages / ' ; ';
|
||||
put ' name = lowcase(strip(scan(req, 1, " "))); ';
|
||||
put ' vers = lowcase(compress(scan(req,-1, " "), ".", "KD")); ';
|
||||
put ' if LP.check() ne 0 then ';
|
||||
/* put ' req = compress(req, "(.)", "KDF"); ';*/
|
||||
put ' name = lowcase(strip(scan(req, 1, "("))); ';
|
||||
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 ' missingPackagr = 1; ';
|
||||
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 ' if missingPackagr then call symputX("packageRequiredErrors", 1, "L"); ';
|
||||
@@ -605,8 +615,8 @@ data _null_;
|
||||
put ' put "ERROR: No package loaded!"; ';
|
||||
put ' call symputX("packageRequiredErrors", 1, "L"); ';
|
||||
put ' do req = ' / packageReqPackages / ' ; ';
|
||||
put ' name = lowcase(strip(scan(req, 1, " "))); ';
|
||||
put ' vers = lowcase(compress(scan(req,-1, " "), ".", "KD")); ';
|
||||
put ' name = lowcase(strip(scan(req, 1, "("))); ';
|
||||
put ' vers = lowcase(compress(scan(req,-1, "("), ".", "KD")); ';
|
||||
put ' put "ERROR: SAS package " req "is missing! Download it and" ; ';
|
||||
put ' put ''ERROR- use %loadPackage('' name ", requiredVersion = " vers ") to load it." ; ';
|
||||
put ' end ; ';
|
||||
@@ -673,31 +683,31 @@ data _null_;
|
||||
end;
|
||||
|
||||
/* update SYSloadedPackages global macrovariable */
|
||||
put ' data _null_ ; ';
|
||||
put ' length SYSloadedPackages $ 32767; ';
|
||||
put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then ';
|
||||
put ' do; ';
|
||||
put ' do until(EOF); ';
|
||||
put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; ';
|
||||
put ' substr(SYSloadedPackages, 1+offset, 200) = value; ';
|
||||
put ' end; ';
|
||||
put ' SYSloadedPackages = cats("#", translate(strip(SYSloadedPackages), "#", " "), "#"); ';
|
||||
put ' data _null_ ; ';
|
||||
put ' length SYSloadedPackages $ 32767; ';
|
||||
put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then ';
|
||||
put ' do; ';
|
||||
put ' do until(EOF); ';
|
||||
put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; ';
|
||||
put ' substr(SYSloadedPackages, 1+offset, 200) = value; ';
|
||||
put ' end; ';
|
||||
put ' SYSloadedPackages = cats("#", translate(strip(SYSloadedPackages), "#", " "), "#"); ';
|
||||
|
||||
put " if INDEX(lowcase(SYSloadedPackages), '#%lowcase(&packageName.)#') = 0 then ";
|
||||
put ' do; ';
|
||||
put " SYSloadedPackages = catx('#', SYSloadedPackages, '&packageName.'); ";
|
||||
put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); ';
|
||||
put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); ';
|
||||
put ' put "NOTE: " SYSloadedPackages = ; ';
|
||||
put ' end ; ';
|
||||
put ' end; ';
|
||||
put ' else ';
|
||||
put ' do; ';
|
||||
put " call symputX('SYSloadedPackages', '&packageName.', 'G'); ";
|
||||
put " put 'NOTE: SYSloadedPackages = &packageName.'; ";
|
||||
put ' end; ';
|
||||
put ' stop; ';
|
||||
put 'run; ' / ;
|
||||
put " if INDEX(lowcase(SYSloadedPackages), '#%lowcase(&packageName.(&packageVersion.))#') = 0 then ";
|
||||
put ' do; ';
|
||||
put " SYSloadedPackages = catx('#', SYSloadedPackages, '&packageName.(&packageVersion.)'); ";
|
||||
put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); ';
|
||||
put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); ';
|
||||
put ' put "NOTE: " SYSloadedPackages = ; ';
|
||||
put ' end ; ';
|
||||
put ' end; ';
|
||||
put ' else ';
|
||||
put ' do; ';
|
||||
put " call symputX('SYSloadedPackages', '&packageName.(&packageVersion.)', 'G'); ";
|
||||
put " put 'NOTE: SYSloadedPackages = &packageName.(&packageVersion.)'; ";
|
||||
put ' end; ';
|
||||
put ' stop; ';
|
||||
put 'run; ' / ;
|
||||
|
||||
put '%put NOTE- ;';
|
||||
put '%put NOTE: '"Loading package &packageName., version &packageVersion., license &packageLicense.;";
|
||||
@@ -862,13 +872,13 @@ data _null_;
|
||||
%do;
|
||||
length packageReqPackages $ 32767;
|
||||
packageReqPackages = lowcase(symget('packageReqPackages'));
|
||||
/* try to load required packages */
|
||||
/* note to unload required packages */
|
||||
put 'data _null_ ; ';
|
||||
put ' length req name $ 64; ';
|
||||
put ' put "NOTE-" / "NOTE: To unload additional required SAS packages execute: " / "NOTE-"; ';
|
||||
put ' do req = ' / packageReqPackages / ' ; ';
|
||||
put ' name = strip(scan(req, 1, " ")); ';
|
||||
put ' put ''NOTE- %unloadPackage( '' name ")" ; ';
|
||||
put ' name = strip(scan(req, 1, "(")); ';
|
||||
put ' put '' %unloadPackage( '' name ")" ; ';
|
||||
put ' end ; ';
|
||||
put ' put "NOTE-" / "NOTE-"; stop; ';
|
||||
put 'run; ';
|
||||
@@ -876,26 +886,26 @@ data _null_;
|
||||
|
||||
|
||||
/* update SYSloadedPackages global macrovariable */
|
||||
put ' data _null_ ; ';
|
||||
put ' length SYSloadedPackages $ 32767; ';
|
||||
put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then ';
|
||||
put ' do; ';
|
||||
put ' do until(EOF); ';
|
||||
put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; ';
|
||||
put ' substr(SYSloadedPackages, 1+offset, 200) = value; ';
|
||||
put ' end; ';
|
||||
put ' SYSloadedPackages = cats("#", translate(strip(SYSloadedPackages), "#", " "), "#"); ';
|
||||
put ' data _null_ ; ';
|
||||
put ' length SYSloadedPackages $ 32767; ';
|
||||
put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then ';
|
||||
put ' do; ';
|
||||
put ' do until(EOF); ';
|
||||
put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; ';
|
||||
put ' substr(SYSloadedPackages, 1+offset, 200) = value; ';
|
||||
put ' end; ';
|
||||
put ' SYSloadedPackages = cats("#", translate(strip(SYSloadedPackages), "#", " "), "#"); ';
|
||||
|
||||
put " if INDEX(lowcase(SYSloadedPackages), '#%lowcase(&packageName.)#') > 0 then ";
|
||||
put ' do; ';
|
||||
put " SYSloadedPackages = tranwrd(SYSloadedPackages, '#&packageName.#', '##'); ";
|
||||
put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); ';
|
||||
put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); ';
|
||||
put ' put "NOTE: " SYSloadedPackages = ; ';
|
||||
put ' end ; ';
|
||||
put ' end; ';
|
||||
put ' stop; ';
|
||||
put 'run; ' / ;
|
||||
put " if INDEX(lowcase(SYSloadedPackages), '#%lowcase(&packageName.(&packageVersion.))#') > 0 then ";
|
||||
put ' do; ';
|
||||
put " SYSloadedPackages = tranwrd(SYSloadedPackages, '#&packageName.(&packageVersion.)#', '##'); ";
|
||||
put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); ';
|
||||
put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); ';
|
||||
put ' put "NOTE: " SYSloadedPackages = ; ';
|
||||
put ' end ; ';
|
||||
put ' end; ';
|
||||
put ' stop; ';
|
||||
put 'run; ' / ;
|
||||
|
||||
|
||||
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 ' end; ';
|
||||
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; ' /;
|
||||
|
||||
/* license info */
|
||||
|
||||
Reference in New Issue
Block a user