Releases: yabwon/SAS_PACKAGES
SAS Packages Framework, version 20241129
SAS Packages Framework, version 20241129
Bug Fixes:
Three minor bug fixes in the %generatePackage()
macro and one bug fix in the %splitCodeForPackage()
macro.
SAS Packages Framework, version 20241102
SAS Packages Framework, version 20241102
Changes
In the %loadPackage()
, the %ICEloadPackage()
, and the %loadPackageAddCnt()
macros version of a package can be provided with a comparison condition.
If the required version is provided with a comparison operator, e.g., <=
, =
, or >
, then the operator is used to compare required
and provided
versions.
The following example:
%loadPackage(myPackage
,requiredVersion=1.2.2=
)
will force to load the package only if the required version is exactly equal to the provided one.
Comparison is done in form "req. comparison prov.
".
The Documentation and Hands-on-Workshops materials were updated.
SAS Packages Framework, version 20241027
SAS Packages Framework, version 20241027
Changes
New simple utility macro: %splitCodeForPackage()
added to the framework. Now we have a dozen!
The macro is a "helping-hand" for those developers who have a "one-big-code" file and want to turn it into a package structure (separate files in subdirectories) but are to lazy to do it manually. Whit help of additional tags
the macro automatically splits the code file according to the developer's wish.
Run:
%splitCodeForPackage(HELP)
to see more details or, probably even better, visit the Documentation and Hands-on-Workshops materials to learn how %splitCodeForPackage()
works .
Example:
Let's assume that the myPackageCode.sas
file is located in the C:/lazy/
folder and contain the following code and tags:
/*##$##-code-block-start-##$## 01_macro(abc) */
%macro abc();
%put I am "abc".;
%mend abc;
/*##$##-code-block-end-##$## 01_macro(abc) */
/*##$##-code-block-start-##$## 01_macro(efg) */
%macro efg();
%put I am "efg".;
%mend efg;
/*##$##-code-block-end-##$## 01_macro(efg) */
proc FCMP outlib=work.f.p;
/*##$##-code-block-start-##$## 02_functions(xyz) */
function xyz(n);
return(n**2 + n + 1)
endfunc;
/*##$##-code-block-end-##$## 02_functions(xyz) */
quit;
and we want results in C:/split/
folder. We run the following:
filename packages "C:/SAS_PACKAGES"; %* a directory for the framework and packages;
%include packages(SPFinit.sas); %* enable the framework;
%splitCodeForPackage(
codeFile=C:/lazy/myPackageCode.sas
,packagePath=C:/split/ )
As a result two subdirectories 01_macro
and 02_functions
are created inside C:/split/
. The first contains two files: abc.sas
and efg.sas
with corresponding macros definitions, the second contains xyz.sas
file with definition of the xyz
function.
Nesting, overlapping, and multiple file redirection is supported.
SAS Packages Framework, version 20241014
SAS Packages Framework, version 20241014
Changes
The %generatePackage() macro accepts two new code types:
DS2PCK
for Proc DS2 packages, andDS2THR
for Proc DS2 threads.
Those two new types allow to add PROC DS2
threads and packages to a SAS package.
The %loadPackage() macro has new parameter:
DS2force
- when set to1
an existing data set named the same as thread or package is overwritten by DS2 file.
While loading a package that contains PRCO DS2
code, by default, if there already exist a SAS data set with the same name (which is not a DS2 thread or package file) a warning is issued in the log and the thread/package data set is not generated. To force overwrite, set the DS2force=
parameter of the %loadPackage()
macro to 1.
Minor updates and fixes:
- Proc
sql
"drop table" replaced withfedsqsl
's for data sets deletion. - Proc
iml
,fcmp
, andproto
code blocks end withquit;
statement.
Documentation and Hands-on-Workshops materials updated.
SAS Packages Framework, version 20240927
SAS Packages Framework, version 20240927
Changes
- Aesthetic changes in log when running the
%installPackage()
macro, notes about successful/failed installation. - New parameter
SFRCVN
added to the%installPackage()
macro,SFRCVN
provides a name for a macro variable to store value of the success-failure return code of the installation process. Return value has the following form:<number of successes>.<number of failures>
The macro variable is created as a global macro variable. - Documentation updated.
The BasePlus package [ver. 2.1.0]
The BasePlus package [ver. 2.1.0]
Changes:
Update to the
%rainCloudPlot()
macro, new whiskerScale=
parameter added.
See documentation for details.
SHA256 digest for BasePlus: F*DFA83F8E0D7424DEB63D49620392068BC68D766552E2804CB6B01DE8E5A87769
Example.
%rainCloudPlot(
sashelp.class
,sex
,height
,whiskerScale=0.5
)
The BasePlus package [ver. 2.0.1]
The BasePlus package [ver. 2.0.1]
This release is dedicated to all dyslexics in the world.
Changes:
New macros:
%expandDataSetsList()
allowing to expand data set lists of the form:a1-a3
,b_:
, mixed, and_all_
;%unifyVarsCaseSize()
allowing to convert all variables in a list of datasets to all-low-case or all-upcase letters.
Both macros are result of recent discussions at SAS-L
and communities.sas.com
.
New format/informats:
bpklength.
bplength.
- Bug fix in spelling (
lenght
vslength
).
See documentation for details.
SHA256 digest for BasePlus: F*FB102C9B12E870666C15A651017D48E0141E47D64C11437350D0EC75A7E9E609
Example 1. New macros.
data a1 a2 a3 b_x b_y b_z;
set sashelp.class(obs=1);
run;
%put #%expandDataSetsList(lib=work,datasets=a1-a3 b_:)#;
proc print data=a1;
proc print data=b_x;
run;
%unifyVarsCaseSize(work,a1-a3 b_:)
proc print data=a1;
proc print data=b_x;
run;
Example 2. New formats/informats:
data _null_;
x = input('żółw', bpklength.);
y = input('żółw', bplength.);
put x= y=;
run;
x=4 y=7
The BasePlus package [ver. 2.0.0]
The BasePlus package [ver. 2.0.0]
Changes:
New macros:
%expandDataSetsList()
allowing to expand data set lists of the form:a1-a3
,b_:
, mixed, and_all_
;%unifyVarsCaseSize()
allowing to convert all variables in a list of datasets to all-low-case or all-upcase letters.
Both macros are result of recent discussions at SAS-L
and communities.sas.com
.
New format/informats:
See documentation for details.
SHA256 digest for BasePlus: F*0730DD793516E5C193842126A7EC9D339ADADD19F0F40B071F938CABDE4E66AD
Example 1. New macros.
data a1 a2 a3 b_x b_y b_z;
set sashelp.class(obs=1);
run;
%put #%expandDataSetsList(lib=work,datasets=a1-a3 b_:)#;
proc print data=a1;
proc print data=b_x;
run;
%unifyVarsCaseSize(work,a1-a3 b_:)
proc print data=a1;
proc print data=b_x;
run;
Example 2. New formats/informats:
data _null_;
x = input('żółw', bpklenght.);
y = input('żółw', bplenght.);
put x= y=;
run;
x=4 y=7
The BasePlus package [ver. 1.43.0]
The BasePlus package [ver. 1.43.0]
Changes:
Update to %getVars()
and %qgetVars()
macros.
New parameter ignoreCases=
added. It is an optional parameter.
It indicates if variables names search should be case insensitive.
With default value 1
, the search is case insensitive.
See documentation for details.
SHA256 digest for BasePlus: F*68BB953CD732EB43119A3339656670292317FE1C3B764EC57484C7D5C9DF23EB
The BasePlus package [ver. 1.42.1]
The BasePlus package [ver. 1.42.1]
Changes:
Update to the
%rainCloudPlot()
macro, input parameters checks added.
See documentation for details.
SHA256 digest for BasePlus: F*2129F372D72A34A4FB1F368A581EA33D64AD4D8F3707213D5B9553F3C3122003