The macroArray package [ver. 1.3.0]
Changes:
- Four new parameters in the `%do_over()` macro: `check`, `rephrase`, `trigger`, and `unq`.
- Minor updates in the `%array()` macro.
- Documentation updated and cleaned.
SHA256 digest for the latest version macroArray: F*C6C2B5507B6590365222FC764076E294CCE3AAE99971D9CAA942F8BAEBEFAE24
The macroArray package [ver. 1.3.0]
Changes:
- Four new parameters in the `%do_over()` macro: `check`, `rephrase`, `trigger`, and `unq`.
- Minor updates in the `%array()` macro.
- Documentation updated.
SHA256 digest for the latest version macroArray: F*9B51F1B434742F08166F28DE40D64F16E9BC5ED8D1926AE7148A48116F7BDBA0
SAS Packages Framework, version 20251231
Changes:
- New macro: %bundlePackages().
- New macro: %unbundlePackages().
- Bug fix in %verifyPackage() macro.
- Minor updates in %generatePackage(), %listPackages(), and %relocatePackage() macros.
- Documentation updated.
SAS Packages Framework, version 20251231
Changes:
- New macro: %bundlePackages().
- New macro: %unbundlePackages().
- Bug fix in %verifyPackage() macro.
- Minor updates in %generatePackage(), %listPackages(), and %relocatePackage() macros.
- Documentation updated.
SAS Packages Framework, version `20251228`:
Two new parameters were added to the `%generatePackage()`:
- `buildLocation=`,
- `archLocation=`.
The `easyArch=` option is independent.
Three technical sub-macros were extracted from the `%generatePackage()`.
Minor code housekeeping.
Documentation updated.
---
Code cleaning and new parameters are results of collaboration and discussion with Ken Nakamatsu (https://github.com/k-nkmt). Thanks Ken!
SAS Packages Framework, version 20251221
Changes:
- 3 new macros: `%relocatePackage()`, `%SasPackagesFrameworkNotes()`, and `%isPackagesFilerefOK()` added.
- Documentation updated.
SAS Packages Framework, version 20251221
Changes:
- 3 new macros: `%relocatePackage()`, `%SasPackagesFrameworkNotes()`, and `%isPackagesFilerefOK()` added.
- Documentation updated.
SAS Packages Framework, version 20251126
Changes:
- Automatic documentation generator in the %generatePackage() macro can now exclude files generated by `%splitCodeForPackage()` macro.
SAS Packages Framework, version 20251122
Changes:
- When a package is generated with the `%generatePackage()` macro, additional info about operating system and SAS release are added to the help notes.
- Documentation updated.
The SQLinDS package [ver. 2.3.1]
Package regenerated with SAS Packages Framework, version 20251122. No functional changes, documentation cleaned up.
The BasePlus package [ver. 3.1.1]
Update:
- Minor updates `%dirsAndFiles()` macro.
- File SHA256: `F*6394CE27FBCF48D475F682CBCF8CA8B4FDD6D40D2672EF571F4A561BDDF274A6` for this version
- Content SHA256: `C*3CA28DF8F3E6D6670D7FD44788D347452F24F4BCF18115873E7EBC742FE30CA4` for this version
The BasePlus package [ver. 3.1.0]
Update:
- Update in macro `%findDSwithVarVal()`. To handle bigger range of engines, when a library is assigned with different engine than: "BASE","SPDE","V6","V7","V8","V9","CVP" observation number is not returned.
- File SHA256: `F*9FFBC40A2B7FC51161C7D6D120DADC3ACEF8087E4EB43BB1A3F0FBC1F1CBD5AC` for this version
- Content SHA256: `C*76C55A9F392EAB938D199144CC834EF332CD78BA8B98565FA003DEA509A33A3E` for this version
SAS Packages Framework, version 20251017
Changes:
- New parameters `workInTestResults=` and `testWorkPath=` added to the `%generatePackage()` macro.
- Documentation updated.
The BasePlus package [ver. 3.0.0]
New:
- New utility macro `%workLib()`, created in collaboration with Ryo Nakaya, added.
- File SHA256: `F*B9F6D8F1EDD1ECDA89F4BE327C4F4202649475D1D9DFB476279B633D9F14125D` for this version
- Content SHA256: `C*680412F6B403870A3A8975FC17300F7C92AEDECA48D3F242B5BC4E545DC6D313` for this version
The BasePlus package [ver. 2.4.1]
Fix:
- Fix engine recognition code in `%splitDSintoBlocks()` macro.
- File SHA256: `F*DB0811D8F207641BD45FCE30CB75D03CDF8D06849EBEA268BB575358FAA4E76C` for this version
- Content SHA256: `C*27861ABABB412E8229FE25CD5EEA868F49BB3CBD805CCE65F321ADBC522FAC4E` for this version
The BasePlus package [ver. 2.4.0]
Changes:
- new parameter `backslashSens=` added to the `%dirsAndFiles()` macro.
- File SHA256: `F*19FE220C82DE4B9990B4AC352A9D9DEF5FAF2FD601BE756B2F3A2AC39CDAF381` for this version
- Content SHA256: `C*83DEF0C93481B1C77494531E5CE9F8EB8E4C15AB3CC48D1E9C0223C13A84DB3F` for this version
The BasePlus package [ver. 2.3.1]
Changes:
Fix in log notes produced by `%getVars()` and `%QgetVars()`.
- File SHA256: `F*B2D318DD9708D74E5A7C419F7CAE1BF46D662B7F6AEE7E6B1B9D9B6858A5C41A` for this version
- Content SHA256: `C*C34B47FDC4A22C5F5EACA087FA5308B97C367E8B7C32C5B28D37B491C6DAA9A3` for this version
# The BasePlus package [ver. 2.3.0]
- File SHA256: `F*71DC1AFA709B2977E8AEA452721776F62EEC8240ABD658AC83AA6D4310FC49B6` for this version
- Content SHA256: `C*9CEDE8C64D2C619EBC27AC85B4904D2CE2423C832C6C313E526946FC1417EFD1` for this version
---
### Changes:
Update in macros:
- `%getVars()` and `%QgetVars()`
- New *optional* parameter `nlit=`. Introduced to improve `validvarname=ANY` handling. Indicates if the `NLITERAL()` function should be executed to cover spacial characters. Default value is `0`.
- Code simplification for the `mcArray=` parameter case.
- Situation when the `%getVars()` macro is called with `mcArray=` in `%put` or `%let` statements is handled more gracefully.
- `%zipEvalf()` and `%QzipEvalf()`
- If the list contains quoted blanks, they are respected now, i.e. `a "b c"` are considered 2 strings, `a` and `b c`.
See documentation for details.
---
SAS Packages Framework, version 20250728
Changes:
- The `mirror=3` parameter in the `%installPackage()` macro allows access `https://github.com/PharmaForest/`.
- Values `SASPAC` and `PharmaForest` are accepted by the `mirror=` parameter in the `%installPackage()` macro.
- Documentation updated.
SAS Packages Framework, version 20250710
Changes:
- Framework's code cleanup: all uses of the autocall `%lowcase()` macro were removed or replaced by `%sysfunc(lowcase(...))` call.
- Formatting of the default MIT license text in the `%generatePackage()` macro was changed.
- The `sourcePath=` parameter in the `%installPackage()` macro now allows both quoted and un-quoted address.
- Documentation updated.
SAS Packages Framework, version 20241207
Changes:
- New parameter `instDoc=` in the `%installPackage()` macro allows to download (if one is available) the `.md` documentation file for a package.
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:
```sas
%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.`".
Documentation and HoW-materials updated.
#SAS Packages Framework, version `20241014`
## Changes
---
The [%generatePackage()]{https://github.com/yabwon/SAS_PACKAGES/blob/main/SPF/SPFinit.md#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()]{https://github.com/yabwon/SAS_PACKAGES/blob/main/SPF/SPFinit.md#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]{https://github.com/yabwon/SAS_PACKAGES/tree/main/SPF/Documentation} and [Hands-on-Workshops materials]{https://github.com/yabwon/HoW-SASPackages} updated.
---
## 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.0.1]
This release is dedicated to all dyslexics in the world.
### Changes:
New macros:
- [`%expandDataSetsList()`](https://github.com/SASPAC/baseplus/blob/2.0.0/baseplus.md#expanddatasetslist-macro) allowing to expand data set lists of the form: `a1-a3`, `b_:`, mixed, and `_all_`;
- [`%unifyVarsCaseSize()`](https://github.com/SASPAC/baseplus/blob/2.0.0/baseplus.md#unifyvarscasesize-macro) 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.`](https://github.com/SASPAC/baseplus/blob/2.0.0/baseplus.md#bpklength-format)
- [`bplength.`](https://github.com/SASPAC/baseplus/blob/2.0.0/baseplus.md#bplength-format)
- Bug fix in spelling (`lenght` vs `length`).
See [documentation](https://github.com/SASPAC/baseplus/blob/main/baseplus.md) for details.
---
SHA256 digest for BasePlus: `F*FB102C9B12E870666C15A651017D48E0141E47D64C11437350D0EC75A7E9E609`
---
### Example 1. New macros.
~~~~sas
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:
~~~~sas
data _null_;
x = input('żółw', bpklength.);
y = input('żółw', bplength.);
put x= y=;
run;
~~~~
~~~~log
x=4 y=7
~~~~
## The BasePlus package [ver. 1.42.0]
### Changes:
New macro
[`%GenerateOneLiners()`](https://github.com/SASPAC/baseplus/blob/1.42.0/baseplus.md#generateoneliners-macro)
allowing to generate "one liner" functions of the form:
~~~~sas
%macro FUNCTION()/parmbuff;
%sysfunc(FUNCTION&syspbuff)
%mend FUNCTION;
~~~~
See [documentation](https://github.com/SASPAC/baseplus/blob/main/baseplus.md) for details.
---
SHA256 digest for BasePlus: `F*6012D1475AE22A4445C032D8EAE092BE515D8CD2AE390CC087F5987ACB8BCB13`
---
### Example
~~~~sas
%GenerateOneLiners(
listOfFunctions=SUM MEAN MEDIAN VAR
, prefix=_)
%put
%_SUM(1,2,3,4,5,6)
%_MEAN(1,2,3,4,5,6)
%_MEDIAN(1,2,3,4,5,6)
%_VAR(1,2,3,4,5,6)
;
~~~~
SAS Packages Framework, version `20240529`
Changes:
- aesthetic changes in log when running `%generatePackage()` macro,
- reshaped format of an automatic documentation header,
- and little bug fix for automatic documentation generation (for excluding file from documentation the `IN` operator should be used instead `IN:`).
---
BasePlus, version `1.39.0`
Changes:
- new parameter `DSout=` added in `%downloadFilesTo()` macro,
- file SHA256: `F*3C3A2050E3FF46E1FC0F936634A66FC3F294A3531EFE0A7DC9CE74F2EF17C687` for this version.
SAS Packages Framework, version `20240529`
Changes:
- aesthetic changes in log when running `%generatePackage()` macro,
- reshaped format of an automatic documentation header,
- and little bug fix for automatic documentation generation (for excluding file from documentation the `IN` operator should be used instead `IN:`).
---
BasePlus, version `1.39.0`
Changes:
- new parameter `DSout=` added in `%downloadFilesTo()` macro,
- file SHA256: `F*3C3A2050E3FF46E1FC0F936634A66FC3F294A3531EFE0A7DC9CE74F2EF17C687` for this version.
SAS Packages Framework, version 20240423
A minor aesthetic update in a log note about KMF snippets added to `%generatePackage()` macro. Does not change any functionality, just make it look nicer.
SAS Packages Framework, version 20240415
Features:
- In the `%generatePackage()` macro, when `markdownDoc=` parameters is used, packages files can be "excluded" from being used to produce documentation markdown file.
- Documentation updated.
The BasePlus package [ver. 1.38.0]
Update to the `%rainCloudPlot()` macro, new parameter for "vertical" plots added.
Documentation updated and "cleaned".
---
SHA256 digest for BasePlus: `F*209FB8198270DEAB6151CE31391A352A065B4EE2689F40433FA9550A7F4AAC18`
---
SAS Packages Framework, version 20231210
Changes:
- Two new parameters added for the `%generatePackage()` macro.
The parameters are:
- `markdownDoc=` - Indicates if a markdown file with documentation be generated from help information blocks.
- `easyArch=` - When creating documentation file (`markdownDoc=1`) it indicates if a copy of the zip and markdown files with the version number in the file name be created.
- The `HelloWorldPackage.md` example updated.
- Documentation updated.
The macroArray package [ver. 1.2.6]
Changes:
- Minor update in `%mcDictionary()` and `%mcHashTable()` macros. Restrictions for object names check updated.
- Documentation updated.
SHA256 digest for the latest version macroArray: F*3F3893F1FCD78719543703E4353F4CC19811D247C016F220FF729B283C1AD790
## SAS Packages Framework, version `20231123`
### Changes in SPF
- Minor update in log aesthetics for `%generatePackage()` macro.
---
### The macroArray package [ver. 1.2.3]
- Update in `q=` parameter for the `%array()` macro.
- Fix in data set existence for `ds=` parameter in the `%array()` macro.
- Documentation updated.
---
### Packages regenerated with the latest version of SPF:
- macroArray package [ver. 1.2.3]
SHA256 digests for packages:
- macroArray: `F*A0840B92EB9356EDB318DBE9B579A345C85ABF69E8D5F7C73C144C66F2F74FB4`
The BasePlus package [ver. 1.35.1]
New `%downloadFilesTo()` macro added (and fixed).
Macro allows conveniently download data from internet or local locations to a directory pointed by user.
Documentation updated.
---
SHA256 digest for BasePlus: `F*BCD89EDF856762EB8E441BC53933774483258453D1F7D74185F8A1861E414B0E`
The BasePlus package [ver. 1.35.1]
New `%downloadFilesTo()` macro added (and fixed).
Macro allows conveniently download data from internet or local locations to a directory pointed by user.
Documentation updated.
---
SHA256 digest for BasePlus: `F*17A6D788704E33C3C2AE51BBAF881F8DE959548603BC95C05D3E165EE2D354E5`
The BasePlus package [ver. 1.35.0]
New `%downloadFilesTo()` macro added.
Macro allows conveniently download data from internet or local locations to a directory pointed by user.
Documentation updated.
---
SHA256 digest for BasePlus: `F*62344EAA8C0DD95CCB164B5C7A91B33865B3D19CD5A2A3EDAC4C31E0541D04C9`
The BasePlus package [ver. 1.35.0]
New `%downloadFilesTo()` macro added.
Macro allows conveniently download data from internet or local locations to a directory pointed by user.
Documentation updated.
---
SHA256 digest for BasePlus: `F*62344EAA8C0DD95CCB164B5C7A91B33865B3D19CD5A2A3EDAC4C31E0541D04C9`
## SAS Packages Framework, version `20231107`
Minor fix. An ugly note in log removed for `%loadPackageAddCnt()` macro.
## The BasePlus package [ver. 1.33.0]
- New macro [`%unzipArch()`](https://github.com/SASPAC/baseplus/blob/main/baseplus.md#unziparch-macro) added. The macro allows to extract ZIP archive file from SAS session and does not need `XCMD` (is OS independent).
- Documentation updated.
## The GSM package [ver. 0.22.0]
- Article explaining details of "macro hiding" added as an additional content to the package.
## The macroArray package [ver. 1.2.0]
- New parameters added to the [`%mcDictionary()`](https://github.com/SASPAC/macroarray/blob/main/macroarray.md#mcdictionary-macro) macro which allows to populate dictionary directly from a data set (see the last example in doc.).
- Documentation updated.
SAS Packages Framework version 20231024
Modification in `%generatePackage()` macro. Situation when dependencies for package are missing is now handled more gracefully. It's still an error message, but now it ends more elegant way.
The macroArray package [ver. 1.1.0]
New parameter in the `%array()` macro:
* `q=` - *Optional*, indicates (when set to `1`) if the value be surrounded by quotes. It uses `quote(cats(...))` combo under the hood. Default value is `0`. Ignored for `macarray=M`.
## SAS Packages Framework, version `20230904`
---
New features in this release are:
- in `%generatePackage()` macro - test for check of duplicated names of the same type was added to the package generation process.
- in `%loadPackage()` macro - User can now suppress running the `exec` type files during the loading process. Parameter name is `suppressExec=`.
- in `%helpPackage()` macro - User can now generate dataset `work.packageName_content` containing list of the package elements similar to the one printed in the log. Parameter name is `packageContentDS=`.
Documentation updated.
---
Packages regenerated with new version of the SPF:
- BasePlus package [ver. `1.29.1`]
- DFA package [ver. `0.5.6`]
- GSM package [ver. `0.21.1`]
- macroArray package [ver. `1.0.6`]
- SQLinDS package [ver. `2.2.7`]
- dynMacroArray package [ver. `0.2.6`]
The BasePlus package [ver. 1.29.0]
Three new macros:
- fmt
- infmt
- minclude
Documentation updated.
SHA256 for BasePlus: `F*9EEE4F4B99EA725B60141645AB6A50BFEBA32CE54848593F8D832D907D63CAD7`
The GSM package [ver. 0.21.0]
Changes:
- new debugging parameter `encrypt` added to the `%GSM()` macro
- annoying note on "automatic type conversion" fixed
The BasePlus package [ver. 1.26.1]
Updates:
- the `%RainCloudPlot()` has new parameter: `catAxisValueAttrs`,
- documentation was updated (refreshed example with plot).
The SHA256 hash digest for package BasePlus:
`F*D6DC5AD1B60A92AD300B639B3C361C1F7846EB01E5AB35BF4FDDA6E783408172`
# The BasePlus package [ver. 1.26.0]
### New Features:
Two new macros were introduces in the release:
- `%findDSwithVarVal()`
- `%getTitle()`
Documentation updated.
# The BasePlus package [ver. 1.26.0]
### New Features:
Two new macros were introduces in the release:
- `%findDSwithVarVal()`
- `%getTitle()`
Documentation updated.
The BasePlus package [ver. 1.24.2]
Updates:
- the `%RainCloudPlot()` has 2 new parameters: `catLabelAttrs` and `xLabelAttrs`,
- documentation was updated (new examples with plots), and
- some spellings were fixed.
The SHA256 hash digest for package BasePlus:
`F*2A4F3953EC56DB914024457F74286D565C23DCF220FF151040BDB704FD8DDB06`
SAS Packages Framework, version 20230520
Fixes:
- Bug fixes for the "Additional Content" feature. In the `%loadPackageAddCnt()` and `%generatePackage()` macros lengths of the "file path" variables were extended.
Packages:
- The `BasePlus` package, version `1.24.1` was regenerated with latest version of the framework.
- The `%RainCloudPlot()` macro from the `BasePlus` packages was updated with new parameters (see the documentation).
Documentation:
- Documentation updated.
The BasePlus package [ver. 1.24.0]
Six new utility macros for the BasePlus:
- `%letters()` - allows to print a list of Roman letters,
- `%filePath()` - from fileref returns path to a file,
- `%libPath()` - from libref returns path to a library,
- `%workPath()` - returns path to the `WORK` library,
- `%translate()` - a wrapper to translate() function,
- `%tranwrd()` - a wrapper to tranwrd() function.
Documentation updated.
The BasePlus package [ver. 1.23.0]
Three new utility macros for the BasePlus:
- `%intsList()` - prints a space separated list of integers,
- `%splitDSIntoBlocks()` - splits dataset into block of given size (and one[the last] possibly smaller)
- `%splitDSIntoParts()` - splits dataset into given number of parts (of approximately same size)
Macros `splitDSIntoBlocks` and `splitDSIntoParts` supports *BASE* and *SPDE* engines.
Documentation updated.
Link to "SAS Packages Framework - an easy code sharing medium for SAS" presentation at Warsaw IT Days 2023 added.
YT: https://youtu.be/T52Omisi0dk&t=0s
The BasePlus package [ver. 1.19.0]
New macro:
The `%dirsAndFiles()` macro allows to extract info about all files and subdirectories of a given `root` directory. The macro is based on Kurt Bremser's "*Talking to Your Host*" article presented at WUSS 2022 conference.
The SQLinDS package [ver. 2.2.5]
Mike Rhoads' article "Use the Full Power of SAS in Your Function-Style Macros" added to the additional content for the package.
SAS Packages Framework, version 20230207
News:
- "Additional Content" feature added to the framework.
Changes in the framework related to the new feature:
- new macro `%loadPackageAddCnt()`,
- modifications in the `%generatePackage()` macro,
- new parameter in `%loadPackage()` and `%installPackage()` macros,
- new code added in loading test.
Fixes:
- IML Modules loader utility macro rewritten,
- bug fixes.
Documentation:
- documentation updated,
- spelling fixes.
SAS Packages Framework, version 20230112
In the `%generatePackage()` macro:
- A `packageGenerated` macrovariable added to packages metadata.It contains timestamp when the package was generated in the ISO8601 form (`YYYY-MM-DDThh:mm:ss`) The variable is from now on used the log output for headers in lading, help, preview, etc.
- Diagnostic messages for loading required packages extended.
- Help info updated for macros dedicated to CASL UDFs and IML modules loading.
- SHA256 hash digest for the package is calculated in two versions(types). Type `F` generates digest for whole package zip file. Type `C` generates digest for package zip file content. For developer convenience both digests are generated and displayed. Details are available in the [documentation](https://github.com/yabwon/SAS_PACKAGES/tree/main/SPF/Documentation).
The `%verifyPackage()` macro adjusted to new digest types. For the backward compatibility verification works also of packages generated with previous versions of SPF.
Documentation updated.
SAS Packages Framework, version 20221215
Changes in the framework:
- Bug fix for `formats` and `proto` with cherry picking.
- Packages regenerated with the latest framework version:
- SQLinDS [2.2.4]
- DFA [0.5.4]
- macroArray [1.0.4]
- BasePlus [1.18.4]
- GSM [0.20.4]
- dynMacroArray [0.2.4]
- New macro `%bpPIPE()` in BasePlus package.
- Documentation updated.