Skip to content

Releases: yabwon/SAS_PACKAGES

SAS Packages Framework, version 20241129

29 Nov 16:06
Compare
Choose a tag to compare

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

02 Nov 21:26
Compare
Choose a tag to compare

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

28 Oct 09:33
Compare
Choose a tag to compare

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

14 Oct 19:43
Compare
Choose a tag to compare

SAS Packages Framework, version 20241014

Changes


The %generatePackage() macro accepts two new code types:

  • DS2PCK for Proc DS2 packages, and
  • DS2THR 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 to 1 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 with fedsqsl's for data sets deletion.
  • Proc iml, fcmp, and proto code blocks end with quit; statement.

Documentation and Hands-on-Workshops materials updated.


SAS Packages Framework, version 20240927

27 Sep 09:26
Compare
Choose a tag to compare

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]

09 Sep 11:22
Compare
Choose a tag to compare

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]

24 Jul 06:12
Compare
Choose a tag to compare

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:

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]

23 Jul 20:18
Compare
Choose a tag to compare

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]

22 Jul 07:07
Compare
Choose a tag to compare

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]

19 Jul 08:31
Compare
Choose a tag to compare

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