diff --git a/packages/README.md b/packages/README.md index 9b0c790..5161334 100644 --- a/packages/README.md +++ b/packages/README.md @@ -86,7 +86,7 @@ SHA256 digest for macroArray: F*3F3893F1FCD78719543703E4353F4CC19811D247C016F220 --- -- **BasePlus**\[2.1.0\] adds a bunch of functionalities I am missing in BASE SAS, such as: +- **BasePlus**\[2.3.1\] adds a bunch of functionalities I am missing in BASE SAS, such as: ```sas call arrMissToRight(myArray); call arrFillMiss(17, myArray); @@ -118,7 +118,7 @@ format x bool.; %put #%expandDataSetsList(lib=sashelp,datasets=_all_)#; ``` -SHA256 digest for BasePlus: F*DFA83F8E0D7424DEB63D49620392068BC68D766552E2804CB6B01DE8E5A87769 +SHA256 digest for BasePlus: F*B2D318DD9708D74E5A7C419F7CAE1BF46D662B7F6AEE7E6B1B9D9B6858A5C41A [Documentation for BasePlus](https://github.com/SASPAC/blob/main/baseplus.md "Documentation for BasePlus") diff --git a/packages/SHA256_for_packages.txt b/packages/SHA256_for_packages.txt index d817259..d56eb18 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,3 +1,9 @@ +/* 20250805 */ +BasePlus: F*B2D318DD9708D74E5A7C419F7CAE1BF46D662B7F6AEE7E6B1B9D9B6858A5C41A + +/* 20250804 */ +BasePlus: F*71DC1AFA709B2977E8AEA452721776F62EEC8240ABD658AC83AA6D4310FC49B6 + /* 20240909 */ BasePlus: F*DFA83F8E0D7424DEB63D49620392068BC68D766552E2804CB6B01DE8E5A87769 diff --git a/packages/baseplus.md b/packages/baseplus.md index 1df12f7..1d0f359 100644 --- a/packages/baseplus.md +++ b/packages/baseplus.md @@ -9,22 +9,22 @@ ### Version information: - Package: BasePlus -- Version: 2.1.0 -- Generated: 2024-09-09T12:55:04 +- Version: 2.3.1 +- Generated: 2025-08-05T20:07:24 - Author(s): Bartosz Jablonski (yabwon@gmail.com), Quentin McMullen (qmcmullen@gmail.com) - Maintainer(s): Bartosz Jablonski (yabwon@gmail.com) - License: MIT -- File SHA256: `F*DFA83F8E0D7424DEB63D49620392068BC68D766552E2804CB6B01DE8E5A87769` for this version -- Content SHA256: `C*AB16F5B6538515607C3C254E401DC1ACA7293AB36990227F6E7792145CEEAB87` for this version +- File SHA256: `F*B2D318DD9708D74E5A7C419F7CAE1BF46D662B7F6AEE7E6B1B9D9B6858A5C41A` for this version +- Content SHA256: `C*C34B47FDC4A22C5F5EACA087FA5308B97C367E8B7C32C5B28D37B491C6DAA9A3` for this version --- -# The `BasePlus` package, version: `2.1.0`; +# The `BasePlus` package, version: `2.3.1`; --- -# The BasePlus package [ver. 2.1.0] ############################################### +# The BasePlus package [ver. 2.3.1] ############################################### The **BasePlus** package implements useful functions and functionalities I miss in the BASE SAS. @@ -403,7 +403,7 @@ localization (only if additional content was deployed during the installation pr -------------------------------------------------------------------- -*SAS package generated by SAS Package Framework, version `20240711`* +*SAS package generated by SAS Package Framework, version `20250729`* -------------------------------------------------------------------- @@ -989,7 +989,12 @@ The QgetVars() returns quoted value [by %superq()]. See examples below for the details. -The `%getVars()` macro executes like a pure macro code. +When `mcArray=` is not used the `%getVars()` macro executes like +a pure macro code. When `mcArray=` is not null (creation of a +macro variable array is requested) them a single semicolon is returned. + +When `validvarname=ANY` in set special care should be kept. +See dedicated examples below. ### SYNTAX: ################################################################### @@ -1003,6 +1008,7 @@ The basic syntax is the following, the `<...>` means optional parameters: <,quote=> <,mcArray=> <,ignoreCases> + <,nlit=> ) ~~~~~~~~~~~~~~~~~~~~~~~ @@ -1025,23 +1031,32 @@ The basic syntax is the following, the `<...>` means optional parameters: * `mcArray=` - *Optional*, default value is blank. 1) When *null* - the macro behaves like a macro function - and returns a text string with variables list. - 2) When *not null* - behaviour of the macro is altered. + and ban be used in the `%put` or `%let=` statements. + The returned text is a string with variables list. + 2) When *not null* - behavior of the macro is altered. In such case a macro array of selected variables, named with `mcArray` value as a prefix, is created. Furthermore a macro named as `mcArray` value is generated. (see the macroArray package for the details). When `mcArray=` parameter is active the `getVars` macro - cannot be called within the `%put` statement. Execution like: - `%put %getVars(..., mcArray=XXX);` will result with - an Explicit & Radical Refuse Of Run (aka ERROR). + should not be called within the `%put` or `%let=` statements. + A single semicolon is produced as the macro result, hence + execution like: `%put %getVars(..., mcArray=XXX) some text;` + will result with an Explicit & Radical Refuse Of Run (aka ERROR). -* `ignoreCases=` - *Optional*, default value is 1. +* `ignoreCases=` - *Optional*, default value is 1. Indicates if search should be case insensitive. +* `nlit=` - *Optional*, default value is 0. + Introduced to improve `validvarname=ANY` handling. + Indicates if the `NLITERAL()` function should be + executed to cover spacial characters. + ### EXAMPLES AND USECASES: #################################################### +**When `validvarname=` option is _not_ `ANY`.** + **EXAMPLE 1.** A list of all variables from the sashelp.class dataset: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas @@ -1267,6 +1282,44 @@ run; %put %do_over(XYZ); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +**When the `validvarname=ANY` option is set.** + +**EXAMPLE 12.** Get all variables and handle special characters. + Without `nlit=1` the code will fail. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + options validvarname = any; + data varnameANY; + set sashelp.class(obs=3); + + 'A&B'n=42; + 'space name'n=101; + '2025-08'n=234; + '2025%09'n=235; + "2025'10"n=236; + '2025"11'n=237; + run; + + %put %getVars(varnameANY, nlit=1); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 13.** Create macro variable array ABC for all variables. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %getVars(varnameANY, mcArray=ABC, nlit=1); + %put %ABC(1) %ABC(6) %ABC(7) %ABC(11); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 14.** Get only variables with illegal characters in names. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let notV7compliant = %getVars(varnameANY, pattern=[^a-z0-9_], nlit=1); + %put ¬V7compliant.; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 14.** Print variables starting with a digit. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %getVars(varnameANY, pattern=^\d, nlit=1); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + --- @@ -1929,6 +1982,11 @@ The basic syntax is the following, the `<...>` means optional parameters: * `ignoreCases=` - *Optional*, default value is 1. Indicates if search should be case insensitive. +* `nlit=` - *Optional*, default value is 0. + Introduced to improve `validvarname=ANY` handling. + Indicates if the `NLITERAL()` function should be + executed to cover spacial characters. + ### EXAMPLES AND USECASES: #################################################### @@ -6395,7 +6453,7 @@ The basic syntax is the following, the `<...>` means optional parameters: 3. `false` - *Required*, value returned when condition is false. -4 `v=` - *Optional*, v for verbose. If set to `1` extra notes +* `v=` - *Optional*, v for verbose. If set to `1` extra notes are printed. --- @@ -7598,7 +7656,7 @@ The basic syntax is the following, the `<...>` means optional parameters: # License ###### -Copyright (c) 2020 - 2024 Bartosz Jablonski +Copyright (c) 2020 - 2025 Bartosz Jablonski Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/baseplus.zip b/packages/baseplus.zip index b090ebc..b6a1e90 100644 Binary files a/packages/baseplus.zip and b/packages/baseplus.zip differ