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:
Binary file not shown.
@@ -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 */
|
||||||
|
|||||||
1167
generatePackage.sas_bckp2
Normal file
1167
generatePackage.sas_bckp2
Normal file
File diff suppressed because it is too large
Load Diff
BIN
macroarray.zip
BIN
macroarray.zip
Binary file not shown.
BIN
sqlinds.zip
BIN
sqlinds.zip
Binary file not shown.
Reference in New Issue
Block a user