mirror of
https://github.com/yabwon/SAS_PACKAGES.git
synced 2026-01-06 22:50:05 +00:00
version 20200730
version 20200730, change list:
1) All elements of the SAS Packages Framework were moved to the SPFinit.sas file in directory SPF [SAS Packages Framework].
2) The public repository reordered [two new folders] and location link in the %installPackages() macro changed.
3) New directories: SPF [for SAS Packages Framework content and documentation] and packages [for packages repository]
4) Package FunctionsImissinBASE renamed to BasePlus.
5) All packages recompiled with new setup.
6) Help info improved and spellings corrected.
This commit is contained in:
308
SPF/SPFinit.sas
308
SPF/SPFinit.sas
@@ -46,7 +46,7 @@
|
|||||||
See examples below.
|
See examples below.
|
||||||
|
|
||||||
A SAS package is a zip file containing a group of files
|
A SAS package is a zip file containing a group of files
|
||||||
with SAS code (macros, functions, datasteps generating
|
with SAS code (macros, functions, data steps generating
|
||||||
data, etc.) wrapped up together and %INCLUDEed by
|
data, etc.) wrapped up together and %INCLUDEed by
|
||||||
a single load.sas file (also embedded inside the zip).
|
a single load.sas file (also embedded inside the zip).
|
||||||
*/
|
*/
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
, path = %sysfunc(pathname(packages)) /* location of a package,
|
, path = %sysfunc(pathname(packages)) /* location of a package,
|
||||||
by default it looks for
|
by default it looks for
|
||||||
location of "packages" fileref */
|
location of "packages" fileref */
|
||||||
, options = %str(LOWCASE_MEMNAME) /* posible options for ZIP filename */
|
, options = %str(LOWCASE_MEMNAME) /* possible options for ZIP filename */
|
||||||
, source2 = /*source2*/ /* option to print out details,
|
, source2 = /*source2*/ /* option to print out details,
|
||||||
null by default */
|
null by default */
|
||||||
, requiredVersion = . /* option to test if loaded package
|
, requiredVersion = . /* option to test if loaded package
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
means "load all datasets" */
|
means "load all datasets" */
|
||||||
, zip = zip /* standard package is zip (lowcase),
|
, zip = zip /* standard package is zip (lowcase),
|
||||||
e.g. %loadPackage(PiPackage)
|
e.g. %loadPackage(PiPackage)
|
||||||
if the zip is not avaliable use a folder
|
if the zip is not available use a folder
|
||||||
unpack data to "pipackage.disk" folder
|
unpack data to "pipackage.disk" folder
|
||||||
and use loadPackage in the form:
|
and use loadPackage in the form:
|
||||||
%loadPackage(PiPackage, zip=disk, options=)
|
%loadPackage(PiPackage, zip=disk, options=)
|
||||||
@@ -93,10 +93,13 @@ des = 'Macro to load SAS package, version 20200730. Run %loadPackage() for help
|
|||||||
%put # Macro to load SAS packages, version 20200730 #;
|
%put # Macro to load SAS packages, version 20200730 #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # A SAS package is a zip file containing a group #;
|
%put # A SAS package is a zip file containing a group #;
|
||||||
%put # of SAS codes (macros, functions, datasteps generating #;
|
%put # of SAS codes (macros, functions, data steps generating #;
|
||||||
%put # data, etc.) wrapped up together and included by #;
|
%put # data, etc.) wrapped up together and included by #;
|
||||||
%put # a single load.sas file (also embedded inside the zip). #;
|
%put # a single load.sas file (also embedded inside the zip). #;
|
||||||
%put # #;
|
%put # #;
|
||||||
|
%put # The %nrstr(%%loadPackage()) macro loads package content, i.e. macros, #;
|
||||||
|
%put # functions, formats, etc., from the zip into the SAS session. #;
|
||||||
|
%put # #;
|
||||||
%put # Parameters: #;
|
%put # Parameters: #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # packageName Name of a package, e.g. myPackage, #;
|
%put # packageName Name of a package, e.g. myPackage, #;
|
||||||
@@ -108,7 +111,7 @@ des = 'Macro to load SAS package, version 20200730. Run %loadPackage() for help
|
|||||||
%put # location of the "packages" fileref, i.e. #;
|
%put # location of the "packages" fileref, i.e. #;
|
||||||
%put # %nrstr(%%sysfunc(pathname(packages))) #;
|
%put # %nrstr(%%sysfunc(pathname(packages))) #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # options= Posible options for ZIP filename, #;
|
%put # options= Possible options for ZIP filename, #;
|
||||||
%put # default value: LOWCASE_MEMNAME #;
|
%put # default value: LOWCASE_MEMNAME #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # source2= Option to print out details, null by default. #;
|
%put # source2= Option to print out details, null by default. #;
|
||||||
@@ -120,27 +123,51 @@ des = 'Macro to load SAS package, version 20200730. Run %loadPackage() for help
|
|||||||
%put # lazyData= A list of names of lazy datasets to be loaded. #;
|
%put # lazyData= A list of names of lazy datasets to be loaded. #;
|
||||||
%put # If not null datasets from the list are loaded #;
|
%put # If not null datasets from the list are loaded #;
|
||||||
%put # instead of the package. #;
|
%put # instead of the package. #;
|
||||||
%put # Asterisk (*) means "load all datasets". #;
|
%put # Asterisk (*) means "load all lazy datasets". #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # zip=zip Standard package is zip (lowcase), #;
|
%put # zip=zip Standard package is zip (lowcase), #;
|
||||||
%put # e.g. %nrstr(%%loadPackage(PiPackage)). #;
|
%put # e.g. %nrstr(%%loadPackage(PiPackage)). #;
|
||||||
%put # If the zip is not avaliable use a folder. #;
|
%put # If the zip is not available use a folder. #;
|
||||||
%put # Unpack data to "pipackage.disk" folder #;
|
%put # Unpack data to "pipackage.disk" folder #;
|
||||||
%put # and use loadPackage in the following form: #;
|
%put # and use loadPackage in the following form: #;
|
||||||
%put # %nrstr(%%loadPackage(PiPackage, zip=disk, options=)) #;
|
%put # %nrstr(%%loadPackage(PiPackage, zip=disk, options=)) #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put ###############################################################################;
|
%put ###############################################################################;
|
||||||
|
%put # #;
|
||||||
|
%put # Visit: https://github.com/yabwon/SAS_PACKAGES/tree/master/SPF/Documentation #;
|
||||||
|
%put # to learn more. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Example #####################################################################;
|
||||||
|
%put # #;
|
||||||
|
%put # Enabling the SAS Package Framework #;
|
||||||
|
%put # from the local directory and installing & loading #;
|
||||||
|
%put # the SQLinDS package from the Internet. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Assume that the SPFinit.sas file #;
|
||||||
|
%put # is located in the "C:/SAS_PACKAGES/" folder. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Run the following code in your SAS session: #;
|
||||||
|
%put ;
|
||||||
|
%put %nrstr( filename packages "C:/SAS_PACKAGES"; %%* setup a directory for packages; );
|
||||||
|
%put %nrstr( %%include packages(SPFinit.sas); %%* enable the framework; );
|
||||||
|
%put ;
|
||||||
|
%put %nrstr( %%installPackage(SQLinDS) %%* install the package from the Internet; );
|
||||||
|
%put %nrstr( %%helpPackage(SQLinDS) %%* get help about the package; );
|
||||||
|
%put %nrstr( %%loadPackage(SQLinDS) %%* load the package content into the SAS session; );
|
||||||
|
%put %nrstr( %%unloadPackage(SQLinDS) %%* unload the package content from the SAS session; );
|
||||||
|
%put ;
|
||||||
|
%put ###############################################################################;
|
||||||
%put ;
|
%put ;
|
||||||
%GOTO ENDloadPackage;
|
%GOTO ENDloadPackage;
|
||||||
%end;
|
%end;
|
||||||
%local ls_tmp ps_tmp notes_tmp source_tmp fullstimer_tmp stimer_tmp msglevel_tmp;
|
%local ls_tmp ps_tmp notes_tmp source_tmp fullstimer_tmp stimer_tmp msglevel_tmp;
|
||||||
%let ls_tmp = %sysfunc(getoption(ls));
|
%let ls_tmp = %sysfunc(getoption(ls));
|
||||||
%let ps_tmp = %sysfunc(getoption(ps));
|
%let ps_tmp = %sysfunc(getoption(ps));
|
||||||
%let notes_tmp = %sysfunc(getoption(notes));
|
%let notes_tmp = %sysfunc(getoption(notes));
|
||||||
%let source_tmp = %sysfunc(getoption(source));
|
%let source_tmp = %sysfunc(getoption(source));
|
||||||
%let stimer_tmp = %sysfunc(getoption(stimer));
|
%let stimer_tmp = %sysfunc(getoption(stimer));
|
||||||
%let fullstimer_tmp = %sysfunc(getoption(fullstimer));
|
%let fullstimer_tmp = %sysfunc(getoption(fullstimer));
|
||||||
%let msglevel_tmp = %sysfunc(getoption(msglevel));
|
%let msglevel_tmp = %sysfunc(getoption(msglevel));
|
||||||
options NOnotes NOsource ls=MAX ps=MAX NOfullstimer NOstimer msglevel=N;
|
options NOnotes NOsource ls=MAX ps=MAX NOfullstimer NOstimer msglevel=N;
|
||||||
%local _PackageFileref_;
|
%local _PackageFileref_;
|
||||||
%let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.);
|
%let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.);
|
||||||
@@ -164,7 +191,7 @@ des = 'Macro to load SAS package, version 20200730. Run %loadPackage() for help
|
|||||||
|
|
||||||
options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.;
|
options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.;
|
||||||
filename &_PackageFileref_. &ZIP.
|
filename &_PackageFileref_. &ZIP.
|
||||||
"&path./%lowcase(&packageName.).&zip." %unquote(&options.)
|
"&path./%lowcase(&packageName.).&zip." %unquote(&options.)
|
||||||
ENCODING =
|
ENCODING =
|
||||||
%if %bquote(&packageEncoding.) NE %then &packageEncoding. ;
|
%if %bquote(&packageEncoding.) NE %then &packageEncoding. ;
|
||||||
%else utf8 ;
|
%else utf8 ;
|
||||||
@@ -204,7 +231,7 @@ des = 'Macro to load SAS package, version 20200730. Run %loadPackage() for help
|
|||||||
null by default */
|
null by default */
|
||||||
, zip = zip /* standard package is zip (lowcase),
|
, zip = zip /* standard package is zip (lowcase),
|
||||||
e.g. %unloadPackage(PiPackage)
|
e.g. %unloadPackage(PiPackage)
|
||||||
if the zip is not avaliable use a folder
|
if the zip is not available use a folder
|
||||||
unpack data to "pipackage.disk" folder
|
unpack data to "pipackage.disk" folder
|
||||||
and use unloadPackage in the form:
|
and use unloadPackage in the form:
|
||||||
%unloadPackage(PiPackage, zip=disk, options=)
|
%unloadPackage(PiPackage, zip=disk, options=)
|
||||||
@@ -223,10 +250,13 @@ des = 'Macro to unload SAS package, version 20200730. Run %unloadPackage() for h
|
|||||||
%put # Macro to unload SAS packages, version 20200730 #;
|
%put # Macro to unload SAS packages, version 20200730 #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # A SAS package is a zip file containing a group #;
|
%put # A SAS package is a zip file containing a group #;
|
||||||
%put # of SAS codes (macros, functions, datasteps generating #;
|
%put # of SAS codes (macros, functions, data steps generating #;
|
||||||
%put # data, etc.) wrapped up together and included by #;
|
%put # data, etc.) wrapped up together and included by #;
|
||||||
%put # a single load.sas file (also embedded inside the zip). #;
|
%put # a single load.sas file (also embedded inside the zip). #;
|
||||||
%put # #;
|
%put # #;
|
||||||
|
%put # The %nrstr(%%unloadPackage()) macro clears the package content #;
|
||||||
|
%put # from the SAS session. #;
|
||||||
|
%put # #;
|
||||||
%put # Parameters: #;
|
%put # Parameters: #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # packageName Name of a package, e.g. myPackage, #;
|
%put # packageName Name of a package, e.g. myPackage, #;
|
||||||
@@ -238,28 +268,52 @@ des = 'Macro to unload SAS package, version 20200730. Run %unloadPackage() for h
|
|||||||
%put # location of the "packages" fileref, i.e. #;
|
%put # location of the "packages" fileref, i.e. #;
|
||||||
%put # %nrstr(%%sysfunc(pathname(packages))) #;
|
%put # %nrstr(%%sysfunc(pathname(packages))) #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # options= Posible options for ZIP filename, #;
|
%put # options= Possible options for ZIP filename, #;
|
||||||
%put # default value: LOWCASE_MEMNAME #;
|
%put # default value: LOWCASE_MEMNAME #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # source2= Option to print out details, null by default. #;
|
%put # source2= Option to print out details, null by default. #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # zip=zip Standard package is zip (lowcase), #;
|
%put # zip=zip Standard package is zip (lowcase), #;
|
||||||
%put # e.g. %nrstr(%%unloadPackage(PiPackage)). #;
|
%put # e.g. %nrstr(%%unloadPackage(PiPackage)). #;
|
||||||
%put # If the zip is not avaliable use a folder. #;
|
%put # If the zip is not available use a folder. #;
|
||||||
%put # Unpack data to "pipackage.disk" folder #;
|
%put # Unpack data to "pipackage.disk" folder #;
|
||||||
%put # and use loadPackage in the following form: #;
|
%put # and use loadPackage in the following form: #;
|
||||||
%put # %nrstr(%%unloadPackage(PiPackage, zip=disk, options=)) #;
|
%put # %nrstr(%%unloadPackage(PiPackage, zip=disk, options=)) #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put ###############################################################################;
|
%put ###############################################################################;
|
||||||
|
%put # #;
|
||||||
|
%put # Visit: https://github.com/yabwon/SAS_PACKAGES/tree/master/SPF/Documentation #;
|
||||||
|
%put # to learn more. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Example #####################################################################;
|
||||||
|
%put # #;
|
||||||
|
%put # Enabling the SAS Package Framework #;
|
||||||
|
%put # from the local directory and installing & loading #;
|
||||||
|
%put # the SQLinDS package from the Internet. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Assume that the SPFinit.sas file #;
|
||||||
|
%put # is located in the "C:/SAS_PACKAGES/" folder. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Run the following code in your SAS session: #;
|
||||||
|
%put ;
|
||||||
|
%put %nrstr( filename packages "C:/SAS_PACKAGES"; %%* setup a directory for packages; );
|
||||||
|
%put %nrstr( %%include packages(SPFinit.sas); %%* enable the framework; );
|
||||||
|
%put ;
|
||||||
|
%put %nrstr( %%installPackage(SQLinDS) %%* install the package from the Internet; );
|
||||||
|
%put %nrstr( %%helpPackage(SQLinDS) %%* get help about the package; );
|
||||||
|
%put %nrstr( %%loadPackage(SQLinDS) %%* load the package content into the SAS session; );
|
||||||
|
%put %nrstr( %%unloadPackage(SQLinDS) %%* unload the package content from the SAS session; );
|
||||||
|
%put ;
|
||||||
|
%put ###############################################################################;
|
||||||
%put ;
|
%put ;
|
||||||
%GOTO ENDunloadPackage;
|
%GOTO ENDunloadPackage;
|
||||||
%end;
|
%end;
|
||||||
%local ls_tmp ps_tmp notes_tmp source_tmp msglevel_tmp;
|
%local ls_tmp ps_tmp notes_tmp source_tmp msglevel_tmp;
|
||||||
%let ls_tmp = %sysfunc(getoption(ls));
|
%let ls_tmp = %sysfunc(getoption(ls));
|
||||||
%let ps_tmp = %sysfunc(getoption(ps));
|
%let ps_tmp = %sysfunc(getoption(ps));
|
||||||
%let notes_tmp = %sysfunc(getoption(notes));
|
%let notes_tmp = %sysfunc(getoption(notes));
|
||||||
%let source_tmp = %sysfunc(getoption(source));
|
%let source_tmp = %sysfunc(getoption(source));
|
||||||
%let msglevel_tmp = %sysfunc(getoption(msglevel));
|
%let msglevel_tmp = %sysfunc(getoption(msglevel));
|
||||||
options NOnotes NOsource ls=MAX ps=MAX msglevel=N;
|
options NOnotes NOsource ls=MAX ps=MAX msglevel=N;
|
||||||
%local _PackageFileref_;
|
%local _PackageFileref_;
|
||||||
%let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.);
|
%let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.);
|
||||||
@@ -274,7 +328,7 @@ des = 'Macro to unload SAS package, version 20200730. Run %unloadPackage() for h
|
|||||||
filename &_PackageFileref_. clear;
|
filename &_PackageFileref_. clear;
|
||||||
options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.;
|
options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.;
|
||||||
filename &_PackageFileref_. &ZIP.
|
filename &_PackageFileref_. &ZIP.
|
||||||
"&path./%lowcase(&packageName.).&zip." %unquote(&options.)
|
"&path./%lowcase(&packageName.).&zip." %unquote(&options.)
|
||||||
ENCODING =
|
ENCODING =
|
||||||
%if %bquote(&packageEncoding.) NE %then &packageEncoding. ;
|
%if %bquote(&packageEncoding.) NE %then &packageEncoding. ;
|
||||||
%else utf8 ;
|
%else utf8 ;
|
||||||
@@ -306,7 +360,7 @@ des = 'Macro to unload SAS package, version 20200730. Run %unloadPackage() for h
|
|||||||
null by default */
|
null by default */
|
||||||
, zip = zip /* standard package is zip (lowcase),
|
, zip = zip /* standard package is zip (lowcase),
|
||||||
e.g. %helpPackage(PiPackage,*)
|
e.g. %helpPackage(PiPackage,*)
|
||||||
if the zip is not avaliable use a folder
|
if the zip is not available use a folder
|
||||||
unpack data to "pipackage.disk" folder
|
unpack data to "pipackage.disk" folder
|
||||||
and use helpPackage in the form:
|
and use helpPackage in the form:
|
||||||
%helpPackage(PiPackage, *, zip=disk, options=)
|
%helpPackage(PiPackage, *, zip=disk, options=)
|
||||||
@@ -325,10 +379,13 @@ des = 'Macro to get help about SAS package, version 20200730. Run %helpPackage()
|
|||||||
%put # Macro to get help about SAS packages, version 20200730 #;
|
%put # Macro to get help about SAS packages, version 20200730 #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # A SAS package is a zip file containing a group #;
|
%put # A SAS package is a zip file containing a group #;
|
||||||
%put # of SAS codes (macros, functions, datasteps generating #;
|
%put # of SAS codes (macros, functions, data steps generating #;
|
||||||
%put # data, etc.) wrapped up together and included by #;
|
%put # data, etc.) wrapped up together and included by #;
|
||||||
%put # a single load.sas file (also embedded inside the zip). #;
|
%put # a single load.sas file (also embedded inside the zip). #;
|
||||||
%put # #;
|
%put # #;
|
||||||
|
%put # The %nrstr(%%helpPackage()) macro prints in the SAS log help #;
|
||||||
|
%put # information about the package provided by the developer. #;
|
||||||
|
%put # #;
|
||||||
%put # Parameters: #;
|
%put # Parameters: #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # packageName Name of a package, e.g. myPackage, #;
|
%put # packageName Name of a package, e.g. myPackage, #;
|
||||||
@@ -345,28 +402,52 @@ des = 'Macro to get help about SAS package, version 20200730. Run %helpPackage()
|
|||||||
%put # location of the "packages" fileref, i.e. #;
|
%put # location of the "packages" fileref, i.e. #;
|
||||||
%put # %nrstr(%%sysfunc(pathname(packages))) #;
|
%put # %nrstr(%%sysfunc(pathname(packages))) #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # options= Posible options for ZIP filename, #;
|
%put # options= Possible options for ZIP filename, #;
|
||||||
%put # default value: LOWCASE_MEMNAME #;
|
%put # default value: LOWCASE_MEMNAME #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # source2= Option to print out details, null by default. #;
|
%put # source2= Option to print out details, null by default. #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # zip=zip Standard package is zip (lowcase), #;
|
%put # zip=zip Standard package is zip (lowcase), #;
|
||||||
%put # e.g. %nrstr(%%helpPackage(PiPackage)). #;
|
%put # e.g. %nrstr(%%helpPackage(PiPackage)). #;
|
||||||
%put # If the zip is not avaliable use a folder. #;
|
%put # If the zip is not available use a folder. #;
|
||||||
%put # Unpack data to "pipackage.disk" folder #;
|
%put # Unpack data to "pipackage.disk" folder #;
|
||||||
%put # and use loadPackage in the following form: #;
|
%put # and use loadPackage in the following form: #;
|
||||||
%put # %nrstr(%%helpPackage(PiPackage, zip=disk, options=)) #;
|
%put # %nrstr(%%helpPackage(PiPackage, zip=disk, options=)) #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put ###############################################################################;
|
%put ###############################################################################;
|
||||||
|
%put # #;
|
||||||
|
%put # Visit: https://github.com/yabwon/SAS_PACKAGES/tree/master/SPF/Documentation #;
|
||||||
|
%put # to learn more. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Example #####################################################################;
|
||||||
|
%put # #;
|
||||||
|
%put # Enabling the SAS Package Framework #;
|
||||||
|
%put # from the local directory and installing & loading #;
|
||||||
|
%put # the SQLinDS package from the Internet. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Assume that the SPFinit.sas file #;
|
||||||
|
%put # is located in the "C:/SAS_PACKAGES/" folder. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Run the following code in your SAS session: #;
|
||||||
|
%put ;
|
||||||
|
%put %nrstr( filename packages "C:/SAS_PACKAGES"; %%* setup a directory for packages; );
|
||||||
|
%put %nrstr( %%include packages(SPFinit.sas); %%* enable the framework; );
|
||||||
|
%put ;
|
||||||
|
%put %nrstr( %%installPackage(SQLinDS) %%* install the package from the Internet; );
|
||||||
|
%put %nrstr( %%helpPackage(SQLinDS) %%* get help about the package; );
|
||||||
|
%put %nrstr( %%loadPackage(SQLinDS) %%* load the package content into the SAS session; );
|
||||||
|
%put %nrstr( %%unloadPackage(SQLinDS) %%* unload the package content from the SAS session; );
|
||||||
|
%put ;
|
||||||
|
%put ###############################################################################;
|
||||||
%put ;
|
%put ;
|
||||||
%GOTO ENDhelpPackage;
|
%GOTO ENDhelpPackage;
|
||||||
%end;
|
%end;
|
||||||
%local ls_tmp ps_tmp notes_tmp source_tmp msglevel_tmp;
|
%local ls_tmp ps_tmp notes_tmp source_tmp msglevel_tmp;
|
||||||
%let ls_tmp = %sysfunc(getoption(ls));
|
%let ls_tmp = %sysfunc(getoption(ls));
|
||||||
%let ps_tmp = %sysfunc(getoption(ps));
|
%let ps_tmp = %sysfunc(getoption(ps));
|
||||||
%let notes_tmp = %sysfunc(getoption(notes));
|
%let notes_tmp = %sysfunc(getoption(notes));
|
||||||
%let source_tmp = %sysfunc(getoption(source));
|
%let source_tmp = %sysfunc(getoption(source));
|
||||||
%let msglevel_tmp = %sysfunc(getoption(msglevel));
|
%let msglevel_tmp = %sysfunc(getoption(msglevel));
|
||||||
options NOnotes NOsource ls=MAX ps=MAX msglevel=N;
|
options NOnotes NOsource ls=MAX ps=MAX msglevel=N;
|
||||||
%local _PackageFileref_;
|
%local _PackageFileref_;
|
||||||
%let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.);
|
%let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.);
|
||||||
@@ -381,7 +462,7 @@ des = 'Macro to get help about SAS package, version 20200730. Run %helpPackage()
|
|||||||
filename &_PackageFileref_. clear;
|
filename &_PackageFileref_. clear;
|
||||||
options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.;
|
options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.;
|
||||||
filename &_PackageFileref_. &ZIP.
|
filename &_PackageFileref_. &ZIP.
|
||||||
"&path./%lowcase(&packageName.).&zip." %unquote(&options.)
|
"&path./%lowcase(&packageName.).&zip." %unquote(&options.)
|
||||||
ENCODING =
|
ENCODING =
|
||||||
%if %bquote(&packageEncoding.) NE %then &packageEncoding. ;
|
%if %bquote(&packageEncoding.) NE %then &packageEncoding. ;
|
||||||
%else utf8 ;
|
%else utf8 ;
|
||||||
@@ -401,9 +482,9 @@ TODO:
|
|||||||
- add MD5(&packageName.) value hash instead "package" word in filenames [DONE]
|
- add MD5(&packageName.) value hash instead "package" word in filenames [DONE]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Macros to install SAS packages, version 20200603 */
|
/* Macros to install SAS packages, version 20200730 */
|
||||||
/* A SAS package is a zip file containing a group of files
|
/* A SAS package is a zip file containing a group of files
|
||||||
with SAS code (macros, functions, datasteps generating
|
with SAS code (macros, functions, data steps generating
|
||||||
data, etc.) wrapped up together and %INCLUDEed by
|
data, etc.) wrapped up together and %INCLUDEed by
|
||||||
a single load.sas file (also embedded inside the zip).
|
a single load.sas file (also embedded inside the zip).
|
||||||
*/
|
*/
|
||||||
@@ -428,10 +509,14 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
%put # Macro to install SAS packages, version 20200730 #;
|
%put # Macro to install SAS packages, version 20200730 #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # A SAS package is a zip file containing a group #;
|
%put # A SAS package is a zip file containing a group #;
|
||||||
%put # of SAS codes (macros, functions, datasteps generating #;
|
%put # of SAS codes (macros, functions, data steps generating #;
|
||||||
%put # data, etc.) wrapped up together and included by #;
|
%put # data, etc.) wrapped up together and included by #;
|
||||||
%put # a single load.sas file (also embedded inside the zip). #;
|
%put # a single load.sas file (also embedded inside the zip). #;
|
||||||
%put # #;
|
%put # #;
|
||||||
|
%put # The %nrstr(%%installPackage()) macro installs the package zip #;
|
||||||
|
%put # in the packages folder. The process of installation is equivalent with #;
|
||||||
|
%put # manual downloading the package zip file into the packages folder. #;
|
||||||
|
%put # #;
|
||||||
%put # Parameters: #;
|
%put # Parameters: #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # packageName Name of a package, e.g. myPackage, #;
|
%put # packageName Name of a package, e.g. myPackage, #;
|
||||||
@@ -442,23 +527,47 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
%put # sourcePath= Location of the package, e.g. "www.some.web.page/" #;
|
%put # sourcePath= Location of the package, e.g. "www.some.web.page/" #;
|
||||||
%put # Mind the "/" at the end of the path! #;
|
%put # Mind the "/" at the end of the path! #;
|
||||||
%put # Current default location: #;
|
%put # Current default location: #;
|
||||||
%put # https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/master/packages/ #;
|
%put # https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/master/packages/ #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # replace= With default value of 1 it causes existing package file #;
|
%put # replace= With default value of 1 it causes existing package file #;
|
||||||
%put # to be replaceed by new downloaded file. #;
|
%put # to be replaceed by new downloaded file. #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put ########################################################################################;
|
%put ########################################################################################;
|
||||||
|
%put # #;
|
||||||
|
%put # Visit: https://github.com/yabwon/SAS_PACKAGES/tree/master/SPF/Documentation #;
|
||||||
|
%put # to learn more. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Example ##############################################################################;
|
||||||
|
%put # #;
|
||||||
|
%put # Enabling the SAS Package Framework #;
|
||||||
|
%put # from the local directory and installing & loading #;
|
||||||
|
%put # the SQLinDS package from the Internet. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Assume that the SPFinit.sas file #;
|
||||||
|
%put # is located in the "C:/SAS_PACKAGES/" folder. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Run the following code in your SAS session: #;
|
||||||
|
%put ;
|
||||||
|
%put %nrstr( filename packages "C:/SAS_PACKAGES"; %%* setup a directory for packages; );
|
||||||
|
%put %nrstr( %%include packages(SPFinit.sas); %%* enable the framework; );
|
||||||
|
%put ;
|
||||||
|
%put %nrstr( %%installPackage(SQLinDS) %%* install the package from the Internet; );
|
||||||
|
%put %nrstr( %%helpPackage(SQLinDS) %%* get help about the package; );
|
||||||
|
%put %nrstr( %%loadPackage(SQLinDS) %%* load the package content into the SAS session; );
|
||||||
|
%put %nrstr( %%unloadPackage(SQLinDS) %%* unload the package content from the SAS session; );
|
||||||
|
%put ;
|
||||||
|
%put ########################################################################################;
|
||||||
%put ;
|
%put ;
|
||||||
%GOTO ENDinstallPackage;
|
%GOTO ENDinstallPackage;
|
||||||
%end;
|
%end;
|
||||||
%local ls_tmp ps_tmp notes_tmp source_tmp fullstimer_tmp stimer_tmp msglevel_tmp;
|
%local ls_tmp ps_tmp notes_tmp source_tmp fullstimer_tmp stimer_tmp msglevel_tmp;
|
||||||
%let ls_tmp = %sysfunc(getoption(ls));
|
%let ls_tmp = %sysfunc(getoption(ls));
|
||||||
%let ps_tmp = %sysfunc(getoption(ps));
|
%let ps_tmp = %sysfunc(getoption(ps));
|
||||||
%let notes_tmp = %sysfunc(getoption(notes));
|
%let notes_tmp = %sysfunc(getoption(notes));
|
||||||
%let source_tmp = %sysfunc(getoption(source));
|
%let source_tmp = %sysfunc(getoption(source));
|
||||||
%let stimer_tmp = %sysfunc(getoption(stimer));
|
%let stimer_tmp = %sysfunc(getoption(stimer));
|
||||||
%let fullstimer_tmp = %sysfunc(getoption(fullstimer));
|
%let fullstimer_tmp = %sysfunc(getoption(fullstimer));
|
||||||
%let msglevel_tmp = %sysfunc(getoption(msglevel));
|
%let msglevel_tmp = %sysfunc(getoption(msglevel));
|
||||||
options NOnotes NOsource ls=MAX ps=MAX NOfullstimer NOstimer msglevel=N;
|
options NOnotes NOsource ls=MAX ps=MAX NOfullstimer NOstimer msglevel=N;
|
||||||
|
|
||||||
%local in out;
|
%local in out;
|
||||||
@@ -466,7 +575,7 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
%let out = o%sysfunc(md5(&packageName.),hex7.);
|
%let out = o%sysfunc(md5(&packageName.),hex7.);
|
||||||
|
|
||||||
/*options MSGLEVEL=i;*/
|
/*options MSGLEVEL=i;*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Reference:
|
Reference:
|
||||||
https://blogs.sas.com/content/sasdummy/2011/06/17/how-to-use-sas-data-step-to-copy-a-file-from-anywhere/
|
https://blogs.sas.com/content/sasdummy/2011/06/17/how-to-use-sas-data-step-to-copy-a-file-from-anywhere/
|
||||||
@@ -493,7 +602,7 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
if filein = 0 then
|
if filein = 0 then
|
||||||
put "ERROR: Source file:" /
|
put "ERROR: Source file:" /
|
||||||
"ERROR- " in_path /
|
"ERROR- " in_path /
|
||||||
"ERROR- is unavaliable!";
|
"ERROR- is unavailable!";
|
||||||
if filein > 0;
|
if filein > 0;
|
||||||
|
|
||||||
put @2 "Source information:";
|
put @2 "Source information:";
|
||||||
@@ -558,7 +667,7 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
since it may affect stability of the framework.
|
since it may affect stability of the framework.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
/* Example 1: Enabeling the SAS Package Framework
|
/* Example 1: Enabling the SAS Package Framework
|
||||||
and loading the SQLinDS package from the local directory.
|
and loading the SQLinDS package from the local directory.
|
||||||
|
|
||||||
Assume that the SPFinit.sas file and the SQLinDS
|
Assume that the SPFinit.sas file and the SQLinDS
|
||||||
@@ -571,11 +680,11 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
%include packages(SPFinit.sas); %* enable the framework;
|
%include packages(SPFinit.sas); %* enable the framework;
|
||||||
|
|
||||||
%helpPackage(SQLinDS) %* get help about the package;
|
%helpPackage(SQLinDS) %* get help about the package;
|
||||||
%loadpackage(SQLinDS) %* load the package content into the SAS session;
|
%loadPackage(SQLinDS) %* load the package content into the SAS session;
|
||||||
%unloadPackage(SQLinDS) %* unload the package content from the SAS session;
|
%unloadPackage(SQLinDS) %* unload the package content from the SAS session;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Example 2: Enabeling the SAS Package Framework
|
/* Example 2: Enabling the SAS Package Framework
|
||||||
from the local directory and installing & loading
|
from the local directory and installing & loading
|
||||||
the SQLinDS package from the Internet.
|
the SQLinDS package from the Internet.
|
||||||
|
|
||||||
@@ -589,11 +698,11 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
|
|
||||||
%installPackage(SQLinDS) %* install the package from the Internet;
|
%installPackage(SQLinDS) %* install the package from the Internet;
|
||||||
%helpPackage(SQLinDS) %* get help about the package;
|
%helpPackage(SQLinDS) %* get help about the package;
|
||||||
%loadpackage(SQLinDS) %* load the package content into the SAS session;
|
%loadPackage(SQLinDS) %* load the package content into the SAS session;
|
||||||
%unloadPackage(SQLinDS) %* unload the package content from the SAS session;
|
%unloadPackage(SQLinDS) %* unload the package content from the SAS session;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Example 3: Enabeling the SAS Package Framework
|
/* Example 3: Enabling the SAS Package Framework
|
||||||
and installing & loading the SQLinDS package
|
and installing & loading the SQLinDS package
|
||||||
from the Internet.
|
from the Internet.
|
||||||
|
|
||||||
@@ -606,7 +715,7 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
|
|
||||||
%installPackage(SQLinDS) %* install the package from the Internet;
|
%installPackage(SQLinDS) %* install the package from the Internet;
|
||||||
%helpPackage(SQLinDS) %* get help about the package;
|
%helpPackage(SQLinDS) %* get help about the package;
|
||||||
%loadpackage(SQLinDS) %* load the package content into the SAS session;
|
%loadPackage(SQLinDS) %* load the package content into the SAS session;
|
||||||
%unloadPackage(SQLinDS) %* unload the package content from the SAS session;
|
%unloadPackage(SQLinDS) %* unload the package content from the SAS session;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -626,7 +735,7 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Example 5: Enabeling the SAS Package Framework from the local directory
|
/* Example 5: Enabling the SAS Package Framework from the local directory
|
||||||
and installing the SQLinDS package from the Internet.
|
and installing the SQLinDS package from the Internet.
|
||||||
|
|
||||||
Assume that the SPFinit.sas file is located in
|
Assume that the SPFinit.sas file is located in
|
||||||
@@ -636,8 +745,8 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
%include packages(SPFinit.sas); %* enable the framework;
|
%include packages(SPFinit.sas); %* enable the framework;
|
||||||
|
|
||||||
%installPackage(SQLinDS); %* install package;
|
%installPackage(SQLinDS); %* install package;
|
||||||
%installPackage(SQLinDS); %* overwrite already instaled package;
|
%installPackage(SQLinDS); %* overwrite already installed package;
|
||||||
%installPackage(SQLinDS,replace=0); %* prevent overwrite instaled package;
|
%installPackage(SQLinDS,replace=0); %* prevent overwrite installed package;
|
||||||
|
|
||||||
|
|
||||||
%installPackage(NotExistingPackage); %* handling with not existing package;
|
%installPackage(NotExistingPackage); %* handling with not existing package;
|
||||||
@@ -646,7 +755,7 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
|
|
||||||
/*** HELP END ***/
|
/*** HELP END ***/
|
||||||
|
|
||||||
/* optional - obsolite - deprecated;
|
/* optional - obsolete - deprecated;
|
||||||
|
|
||||||
libname packages "C:/SAS_PACKAGES/";
|
libname packages "C:/SAS_PACKAGES/";
|
||||||
%include "%sysfunc(pathname(packages))/loadpackage.sas";
|
%include "%sysfunc(pathname(packages))/loadpackage.sas";
|
||||||
@@ -665,7 +774,7 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
Version 20200730
|
Version 20200730
|
||||||
|
|
||||||
A SAS package is a zip file containing a group
|
A SAS package is a zip file containing a group
|
||||||
of SAS codes (macros, functions, datasteps generating
|
of SAS codes (macros, functions, data steps generating
|
||||||
data, etc.) wrapped up together and %INCLUDEed by
|
data, etc.) wrapped up together and %INCLUDEed by
|
||||||
a single load.sas file (also embedded inside the zip).
|
a single load.sas file (also embedded inside the zip).
|
||||||
*/
|
*/
|
||||||
@@ -682,17 +791,17 @@ des = 'Macro to install SAS package, version 20200730. Run %%installPackage() fo
|
|||||||
|
|
||||||
|
|
||||||
%macro listPackages()/
|
%macro listPackages()/
|
||||||
des = 'Macro to list SAS package from `package` fileref, version 20200730.'
|
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages() to run it, version 20200730.'
|
||||||
;
|
;
|
||||||
|
|
||||||
%local ls_tmp ps_tmp notes_tmp source_tmp;
|
%local ls_tmp ps_tmp notes_tmp source_tmp;
|
||||||
%let filesWithCodes = WORK._%sysfunc(datetime(), hex16.)_;
|
%let filesWithCodes = WORK._%sysfunc(datetime(), hex16.)_;
|
||||||
|
|
||||||
%local ls_tmp ps_tmp notes_tmp source_tmp;
|
%local ls_tmp ps_tmp notes_tmp source_tmp;
|
||||||
%let ls_tmp = %sysfunc(getoption(ls));
|
%let ls_tmp = %sysfunc(getoption(ls));
|
||||||
%let ps_tmp = %sysfunc(getoption(ps));
|
%let ps_tmp = %sysfunc(getoption(ps));
|
||||||
%let notes_tmp = %sysfunc(getoption(notes));
|
%let notes_tmp = %sysfunc(getoption(notes));
|
||||||
%let source_tmp = %sysfunc(getoption(source));
|
%let source_tmp = %sysfunc(getoption(source));
|
||||||
options NOnotes NOsource ls=MAX ps=MAX;
|
options NOnotes NOsource ls=MAX ps=MAX;
|
||||||
|
|
||||||
data _null_;
|
data _null_;
|
||||||
@@ -700,7 +809,7 @@ data _null_;
|
|||||||
|
|
||||||
if base = " " then
|
if base = " " then
|
||||||
do;
|
do;
|
||||||
put "NOTE: The filereference PACKAGES is not assigned.";
|
put "NOTE: The file reference PACKAGES is not assigned.";
|
||||||
stop;
|
stop;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -758,15 +867,14 @@ options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.;
|
|||||||
%mend listPackages;
|
%mend listPackages;
|
||||||
|
|
||||||
|
|
||||||
/*** HELP START ***/
|
/*** HELP START ***/
|
||||||
|
|
||||||
/* Macros to generate SAS packages.
|
/* Macro to generate SAS packages.
|
||||||
|
|
||||||
Version 20200730
|
Version 20200730
|
||||||
|
|
||||||
|
|
||||||
A SAS package is a zip file containing a group
|
A SAS package is a zip file containing a group
|
||||||
of SAS codes (macros, functions, datasteps generating
|
of SAS codes (macros, functions, data steps generating
|
||||||
data, etc.) wrapped up together and %INCLUDEed by
|
data, etc.) wrapped up together and %INCLUDEed by
|
||||||
a single load.sas file (also embedded inside the zip).
|
a single load.sas file (also embedded inside the zip).
|
||||||
|
|
||||||
@@ -798,10 +906,18 @@ des = 'Macro to generate SAS packages, version 20200730. Run %generatePackage()
|
|||||||
%put # Macro to generate SAS packages, version 20200730 #;
|
%put # Macro to generate SAS packages, version 20200730 #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # A SAS package is a zip file containing a group #;
|
%put # A SAS package is a zip file containing a group #;
|
||||||
%put # of SAS codes (macros, functions, datasteps generating #;
|
%put # of SAS codes (macros, functions, data steps generating #;
|
||||||
%put # data, etc.) wrapped up together and included by #;
|
%put # data, etc.) wrapped up together and included by #;
|
||||||
%put # a single load.sas file (also embedded inside the zip). #;
|
%put # a single load.sas file (also embedded inside the zip). #;
|
||||||
%put # #;
|
%put # #;
|
||||||
|
%put # The %nrstr(%%generatePackage()) macro generates SAS packages. #;
|
||||||
|
%put # It wraps-up the package content, i.e. macros, functions, formats, etc., #;
|
||||||
|
%put # into the zip file and generate all metadata content required by other #;
|
||||||
|
%put # macros from the SAS Packages Framework. #;
|
||||||
|
%put # #;
|
||||||
|
%put # Visit: https://github.com/yabwon/SAS_PACKAGES/tree/master/SPF/Documentation #;
|
||||||
|
%put # to read about the details of package generation process. #;
|
||||||
|
%put # #;
|
||||||
%put # Parameters: #;
|
%put # Parameters: #;
|
||||||
%put # #;
|
%put # #;
|
||||||
%put # filesLocation= Location of package files, example value: #;
|
%put # filesLocation= Location of package files, example value: #;
|
||||||
@@ -894,7 +1010,7 @@ filename &_LIC_. "&filesLocation./license.sas" lrecl = 256;
|
|||||||
%do;
|
%do;
|
||||||
%put ERROR: Package name is more than 24 characters long.;
|
%put ERROR: Package name is more than 24 characters long.;
|
||||||
%put ERROR- The name is used for functions%str(%') dataset name;
|
%put ERROR- The name is used for functions%str(%') dataset name;
|
||||||
%put ERROR- and for formats%str(%') cataloge name (with suffix).;
|
%put ERROR- and for formats%str(%') catalog name (with suffix).;
|
||||||
%put ERROR- The length is %sysfunc(lengthn(&packageName.)). Try something shorter.;
|
%put ERROR- The length is %sysfunc(lengthn(&packageName.)). Try something shorter.;
|
||||||
%abort;
|
%abort;
|
||||||
%end;
|
%end;
|
||||||
@@ -908,7 +1024,7 @@ filename &_LIC_. "&filesLocation./license.sas" lrecl = 256;
|
|||||||
%do;
|
%do;
|
||||||
%put ERROR: Package name contains illegal symbols.;
|
%put ERROR: Package name contains illegal symbols.;
|
||||||
%put ERROR- The name is used for functions%str(%') dataset name;
|
%put ERROR- The name is used for functions%str(%') dataset name;
|
||||||
%put ERROR- and for formats%str(%') cataloge name.;
|
%put ERROR- and for formats%str(%') catalog name.;
|
||||||
%put ERROR- Only English letters, underscore(_), and digits are allowed.;
|
%put ERROR- Only English letters, underscore(_), and digits are allowed.;
|
||||||
%put ERROR- Try something else. Maybe: %qsysfunc(compress(&packageName.,,KDF)) will do?;
|
%put ERROR- Try something else. Maybe: %qsysfunc(compress(&packageName.,,KDF)) will do?;
|
||||||
%abort;
|
%abort;
|
||||||
@@ -962,13 +1078,13 @@ filename &zipReferrence. ZIP "&filesLocation./%lowcase(&packageName.).zip";
|
|||||||
--------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------
|
||||||
>> **HEADER** <<
|
>> **HEADER** <<
|
||||||
Type: Package
|
Type: Package
|
||||||
Package: ShortPackageName
|
Package: ShortPackageName
|
||||||
Title: A title/brief info for log note about your packages
|
Title: A title/brief info for log note about your packages
|
||||||
Version: X.Y
|
Version: X.Y
|
||||||
Author: Firstname1 Lastname1 (xxxxxx1@yyyyy.com), Firstname2 Lastname2 (xxxxxx2@yyyyy.com)
|
Author: Firstname1 Lastname1 (xxxxxx1@yyyyy.com), Firstname2 Lastname2 (xxxxxx2@yyyyy.com)
|
||||||
Maintainer: Firstname Lastname (xxxxxx@yyyyy.com)
|
Maintainer: Firstname Lastname (xxxxxx@yyyyy.com)
|
||||||
License: MIT
|
License: MIT
|
||||||
Encoding: UTF8
|
Encoding: UTF8
|
||||||
|
|
||||||
Required: "Base SAS Software" :%*optional, COMMA separated, QUOTED list, names of required SAS products, values must be like from proc setinit;run; output *;
|
Required: "Base SAS Software" :%*optional, COMMA separated, QUOTED list, names of required SAS products, values must be like from proc setinit;run; output *;
|
||||||
ReqPackages: "macroArray (0.1)", "DFA (0.1)" :%*optional, COMMA separated, QUOTED list, names of required packages *;
|
ReqPackages: "macroArray (0.1)", "DFA (0.1)" :%*optional, COMMA separated, QUOTED list, names of required packages *;
|
||||||
@@ -1071,7 +1187,7 @@ DESCRIPTION END:
|
|||||||
/* collect the data */
|
/* collect the data */
|
||||||
data &filesWithCodes.;
|
data &filesWithCodes.;
|
||||||
base = "&filesLocation.";
|
base = "&filesLocation.";
|
||||||
length folder file lowcase_name $ 256 folderRef fileRef $ 8;
|
length folder file lowcase_name $ 256 folderRef fileRef $ 8;
|
||||||
drop lowcase_name;
|
drop lowcase_name;
|
||||||
|
|
||||||
folderRef = "_%sysfunc(datetime(), hex6.)0";
|
folderRef = "_%sysfunc(datetime(), hex6.)0";
|
||||||
@@ -1135,7 +1251,7 @@ title4 " ______________________________ ";
|
|||||||
title5 "List of files for package: &packageName. (version &packageVersion.), license: &packageLicense.";
|
title5 "List of files for package: &packageName. (version &packageVersion.), license: &packageLicense.";
|
||||||
title6 "MD5 hashed fileref of package lowcase name: &_PackageFileref_.";
|
title6 "MD5 hashed fileref of package lowcase name: &_PackageFileref_.";
|
||||||
%if (%bquote(&packageRequired.) ne )
|
%if (%bquote(&packageRequired.) ne )
|
||||||
or (%bquote(&packageReqPackages.) ne )
|
or (%bquote(&packageReqPackages.) ne )
|
||||||
%then
|
%then
|
||||||
%do;
|
%do;
|
||||||
title7 "Required SAS licences: %qsysfunc(compress(%bquote(&packageRequired.), %str(%'%")))" ; /* ' */
|
title7 "Required SAS licences: %qsysfunc(compress(%bquote(&packageRequired.), %str(%'%")))" ; /* ' */
|
||||||
@@ -1208,11 +1324,11 @@ data _null_;
|
|||||||
put ' data _null_; '; /* simple "%local" returns error while loading package */
|
put ' data _null_; '; /* simple "%local" returns error while loading package */
|
||||||
put ' call symputX("packageName", " ", "L");';
|
put ' call symputX("packageName", " ", "L");';
|
||||||
put ' call symputX("packageVersion", " ", "L");';
|
put ' call symputX("packageVersion", " ", "L");';
|
||||||
put ' call symputX("packageTitle", " ", "L");';
|
put ' call symputX("packageTitle", " ", "L");';
|
||||||
put ' call symputX("packageAuthor", " ", "L");';
|
put ' call symputX("packageAuthor", " ", "L");';
|
||||||
put ' call symputX("packageMaintainer", " ", "L");';
|
put ' call symputX("packageMaintainer", " ", "L");';
|
||||||
put ' call symputX("packageEncoding", " ", "L");';
|
put ' call symputX("packageEncoding", " ", "L");';
|
||||||
put ' call symputX("packageLicense", " ", "L");';
|
put ' call symputX("packageLicense", " ", "L");';
|
||||||
put ' run; ';
|
put ' run; ';
|
||||||
|
|
||||||
put ' %let packageName =' "&packageName.;";
|
put ' %let packageName =' "&packageName.;";
|
||||||
@@ -1228,7 +1344,7 @@ data _null_;
|
|||||||
run;
|
run;
|
||||||
|
|
||||||
/* emergency ICEloadPackage macro to load package when loadPackage()
|
/* emergency ICEloadPackage macro to load package when loadPackage()
|
||||||
is unavaliable for some reasons, example of use:
|
is unavailable for some reasons, example of use:
|
||||||
1) point to a zip file,
|
1) point to a zip file,
|
||||||
2) include iceloadpackage.sas
|
2) include iceloadpackage.sas
|
||||||
3) point to package folder,
|
3) point to package folder,
|
||||||
@@ -1985,7 +2101,7 @@ data _null_;
|
|||||||
put ' set WORK._last_ end = EOFDS nobs = NOBS; ';
|
put ' set WORK._last_ end = EOFDS nobs = NOBS; ';
|
||||||
put ' length memberX $ 1024; ';
|
put ' length memberX $ 1024; ';
|
||||||
put ' memberX = cats("_",folder,".",file); ';
|
put ' memberX = cats("_",folder,".",file); ';
|
||||||
/* inner datastep in call execute to read each embedded file */
|
/* inner data step in call execute to read each embedded file */
|
||||||
put ' call execute("data _null_; ");';
|
put ' call execute("data _null_; ");';
|
||||||
put " call execute('infile &_PackageFileref_.(' || strip(memberX) || ') end = EOF; ');";
|
put " call execute('infile &_PackageFileref_.(' || strip(memberX) || ') end = EOF; ');";
|
||||||
put ' call execute(" printer = 0; ");';
|
put ' call execute(" printer = 0; ");';
|
||||||
@@ -2030,16 +2146,16 @@ data _null_;
|
|||||||
set &filesWithCodes. nobs = NOBS;
|
set &filesWithCodes. nobs = NOBS;
|
||||||
if (upcase(type) not in: ('TEST')); /* test files are not to be copied */
|
if (upcase(type) not in: ('TEST')); /* test files are not to be copied */
|
||||||
|
|
||||||
call execute(cat ('filename _IN_ "', catx('/', base, folder, file), '";'));
|
call execute(cat ('filename _SPFIN_ "', catx('/', base, folder, file), '";'));
|
||||||
call execute(cats("filename _OUT_ ZIP '", base, "/%lowcase(&packageName.).zip' member='_", folder, ".", file, "';") );
|
call execute(cats("filename _SPFOUT_ ZIP '", base, "/%lowcase(&packageName.).zip' member='_", folder, ".", file, "';") );
|
||||||
/* copy code file into the zip */
|
/* copy code file into the zip */
|
||||||
call execute('data _null_;');
|
call execute('data _null_;');
|
||||||
call execute(' rc = fcopy("_IN_", "_OUT_");');
|
call execute(' rc = fcopy("_SPFIN_", "_SPFOUT_");');
|
||||||
call execute('run;');
|
call execute('run;');
|
||||||
/* test file content for help tags */
|
/* test file content for help tags */
|
||||||
call execute('data _null_;');
|
call execute('data _null_;');
|
||||||
call execute(' retain test .;');
|
call execute(' retain test .;');
|
||||||
call execute(' infile _IN_ lrecl=32767 dlm="0a0d"x end=EOF;');
|
call execute(' infile _SPFIN_ lrecl=32767 dlm="0a0d"x end=EOF;');
|
||||||
call execute(' input;');
|
call execute(' input;');
|
||||||
call execute(' if upcase(strip(_infile_)) = cat("/","*** ","HELP START"," ***","/") then test + (+1); ');
|
call execute(' if upcase(strip(_infile_)) = cat("/","*** ","HELP START"," ***","/") then test + (+1); ');
|
||||||
call execute(' if upcase(strip(_infile_)) = cat("/","*** ","HELP END", " ***","/") then test + (-1); ');
|
call execute(' if upcase(strip(_infile_)) = cat("/","*** ","HELP END", " ***","/") then test + (-1); ');
|
||||||
@@ -2051,14 +2167,16 @@ data _null_;
|
|||||||
call execute(' if (EOF and test=.) then put "WARN" "ING: no HELP tags in the file." ; ');
|
call execute(' if (EOF and test=.) then put "WARN" "ING: no HELP tags in the file." ; ');
|
||||||
call execute('run;');
|
call execute('run;');
|
||||||
|
|
||||||
call execute('filename _IN_ clear;');
|
call execute('filename _SPFIN_ clear;');
|
||||||
call execute('filename _OUT_ clear;');
|
call execute('filename _SPFOUT_ clear;');
|
||||||
run;
|
run;
|
||||||
/*
|
/*
|
||||||
proc sql;
|
proc sql;
|
||||||
drop table &filesWithCodes.;
|
drop table &filesWithCodes.;
|
||||||
quit;
|
quit;
|
||||||
*/
|
*/
|
||||||
|
filename &_DESCR_. clear;
|
||||||
|
filename &_LIC_. clear;
|
||||||
filename &zipReferrence. clear;
|
filename &zipReferrence. clear;
|
||||||
|
|
||||||
/* tests of package are executed by default */
|
/* tests of package are executed by default */
|
||||||
@@ -2076,6 +2194,7 @@ filename &zipReferrence. clear;
|
|||||||
|
|
||||||
|
|
||||||
/* locate sas binaries */
|
/* locate sas binaries */
|
||||||
|
%local SASROOT SASEXE SASWORK;
|
||||||
filename sasroot "!SASROOT";
|
filename sasroot "!SASROOT";
|
||||||
%let SASROOT=%sysfunc(PATHNAME(sasroot));
|
%let SASROOT=%sysfunc(PATHNAME(sasroot));
|
||||||
filename sasroot;
|
filename sasroot;
|
||||||
@@ -2099,15 +2218,19 @@ filename currdir list;
|
|||||||
|
|
||||||
/* if your package uses any other packages this points to their location */
|
/* if your package uses any other packages this points to their location */
|
||||||
/* test if packages fileref exists and if do then use it */
|
/* test if packages fileref exists and if do then use it */
|
||||||
/* if no one is provided the filesLocation is used as a repalacement */
|
/* if no one is provided the filesLocation is used as a replacement */
|
||||||
%if %bquote(&packages.)= %then %let packages=%sysfunc(pathname(packages));
|
%if %bquote(&packages.)= %then %let packages=%sysfunc(pathname(packages));
|
||||||
%if %bquote(&packages.)= %then %let packages=&filesLocation.;
|
%if %bquote(&packages.)= %then %let packages=&filesLocation.;
|
||||||
filename packages "&packages.";
|
%put NOTE- ;
|
||||||
filename packages list;
|
%put NOTE: The following location path for packages will be used during the testing:;
|
||||||
|
%put *&packages.*;
|
||||||
|
/* filename packages "&packages."; */
|
||||||
|
/* filename packages list;*/
|
||||||
|
|
||||||
/* replace current dir with the temporary one for tests */
|
/* replace current dir with the temporary one for tests */
|
||||||
%put *NOTE: changing current folder to:*;
|
%put NOTE- ;
|
||||||
%put *%sysfunc(DLGCDIR(&dirForTest.))*;
|
%put NOTE: changing current folder to:;
|
||||||
|
%put *%sysfunc(DLGCDIR(&dirForTest.))*;
|
||||||
|
|
||||||
/* the first test is for loading package, testing help and unloading */
|
/* the first test is for loading package, testing help and unloading */
|
||||||
/*-1-*/
|
/*-1-*/
|
||||||
@@ -2198,6 +2321,9 @@ data _null_;
|
|||||||
|
|
||||||
call symputX(cats("TEST_", test), fileshort, "L");
|
call symputX(cats("TEST_", test), fileshort, "L");
|
||||||
call symputX("numberOfTests", test, "L");
|
call symputX("numberOfTests", test, "L");
|
||||||
|
|
||||||
|
_RC_ = filename(cats("_TIN_",test));
|
||||||
|
_RC_ = filename(cats("_TOUT_",test));
|
||||||
run;
|
run;
|
||||||
|
|
||||||
/* each test is executed with autoexec loading the package */
|
/* each test is executed with autoexec loading the package */
|
||||||
@@ -2284,7 +2410,7 @@ title;
|
|||||||
|
|
||||||
%put *NOTE: changing current folder to:*;
|
%put *NOTE: changing current folder to:*;
|
||||||
%put *%sysfunc(DLGCDIR(%sysfunc(pathname(currdir))))*;
|
%put *%sysfunc(DLGCDIR(%sysfunc(pathname(currdir))))*;
|
||||||
|
filename CURRDIR clear;
|
||||||
|
|
||||||
/* if you do not want any test to be executed */
|
/* if you do not want any test to be executed */
|
||||||
%NOTESTING:
|
%NOTESTING:
|
||||||
@@ -2341,7 +2467,7 @@ TODO: (in Polish)
|
|||||||
|
|
||||||
/*** HELP START ***/
|
/*** HELP START ***/
|
||||||
|
|
||||||
/* Example 1: Enabeling the SAS Package Framework
|
/* Example 1: Enabling the SAS Package Framework
|
||||||
and generating the SQLinDS package from the local directory.
|
and generating the SQLinDS package from the local directory.
|
||||||
|
|
||||||
Assume that the SPFinit.sas file and the SQLinDS
|
Assume that the SPFinit.sas file and the SQLinDS
|
||||||
|
|||||||
Reference in New Issue
Block a user