update in version checking

update in version checking
This commit is contained in:
yabwon
2019-11-10 16:56:36 +01:00
parent e617cbe005
commit f69a2a8da1
6 changed files with 1260 additions and 60 deletions

BIN
dfa.zip

Binary file not shown.

Binary file not shown.

View File

@@ -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 */

1167
generatePackage.sas_bckp2 Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.