diff --git a/packages/README.md b/packages/README.md
index 5733e26..06c58b2 100644
--- a/packages/README.md
+++ b/packages/README.md
@@ -86,7 +86,7 @@ SHA256 digest for macroArray: F*3F3893F1FCD78719543703E4353F4CC19811D247C016F220
---
-- **BasePlus**\[1.43.0\] adds a bunch of functionalities I am missing in BASE SAS, such as:
+- **BasePlus**\[2.0.0\] adds a bunch of functionalities I am missing in BASE SAS, such as:
```sas
call arrMissToRight(myArray);
call arrFillMiss(17, myArray);
@@ -115,8 +115,10 @@ format x bool.;
%put %date(yymmddn10.) %time(time5.) %datetime(e8601dt.);
%put %monthShift(2023,1,-5);
+
+%put #%expandDataSetsList(lib=sashelp,datasets=_all_)#;
```
-SHA256 digest for BasePlus: F*68BB953CD732EB43119A3339656670292317FE1C3B764EC57484C7D5C9DF23EB
+SHA256 digest for BasePlus: F*0730DD793516E5C193842126A7EC9D339ADADD19F0F40B071F938CABDE4E66AD
[Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus")
diff --git a/packages/SHA256_for_packages.txt b/packages/SHA256_for_packages.txt
index c49c4d2..ec4960c 100644
--- a/packages/SHA256_for_packages.txt
+++ b/packages/SHA256_for_packages.txt
@@ -1,3 +1,6 @@
+/* 20240722 */
+BasePlus: F*0730DD793516E5C193842126A7EC9D339ADADD19F0F40B071F938CABDE4E66AD
+
/* 20240722 */
BasePlus: F*68BB953CD732EB43119A3339656670292317FE1C3B764EC57484C7D5C9DF23EB
diff --git a/packages/baseplus.md b/packages/baseplus.md
index fd2b3f0..ba84be3 100644
--- a/packages/baseplus.md
+++ b/packages/baseplus.md
@@ -9,22 +9,22 @@
### Version information:
- Package: BasePlus
-- Version: 1.43.0
-- Generated: 2024-07-22T08:50:35
+- Version: 2.0.0
+- Generated: 2024-07-23T21:51:33
- Author(s): Bartosz Jablonski (yabwon@gmail.com), Quentin McMullen (qmcmullen@gmail.com)
- Maintainer(s): Bartosz Jablonski (yabwon@gmail.com)
- License: MIT
-- File SHA256: `F*68BB953CD732EB43119A3339656670292317FE1C3B764EC57484C7D5C9DF23EB` for this version
-- Content SHA256: `C*7436BD6446CDA2F57163B7BA45482750D460CA9AEFDCA4012253D742B8EE5E65` for this version
+- File SHA256: `F*0730DD793516E5C193842126A7EC9D339ADADD19F0F40B071F938CABDE4E66AD` for this version
+- Content SHA256: `C*0352F7BB04B99D620BEFD33FF1B1FF1835E6F8F21CC6A764D05EEE51E77E57E0` for this version
---
-# The `BasePlus` package, version: `1.43.0`;
+# The `BasePlus` package, version: `2.0.0`;
---
-# The BasePlus package [ver. 1.43.0] ###############################################
+# The BasePlus package [ver. 2.0.0] ###############################################
The **BasePlus** package implements useful
functions and functionalities I miss in the BASE SAS.
@@ -368,6 +368,25 @@ run;
%put &=y.;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**EXAMPLE 28** Converting variables names to lowercases:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~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;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
---
---
@@ -439,38 +458,42 @@ The `BasePlus` package consists of the following content:
46. [`deldataset()` function ](#deldataset-functions-46 )
47. [`semicolonc()` function ](#semicolonc-functions-47 )
48. [`semicolonn()` function ](#semicolonn-functions-48 )
-49. [`$brackets.` format/informat ](#brackets-format-49 )
-50. [`$semicolon.` format/informat ](#semicolon-format-50 )
-51. [`qsortincbyprocproto()` proto ](#qsortincbyprocproto-proto-51 )
-52. [`frommissingtonumberbs()` function ](#frommissingtonumberbs-functions-52 )
-53. [`fromnumbertomissing()` function ](#fromnumbertomissing-functions-53 )
-54. [`quicksort4notmiss()` function ](#quicksort4notmiss-functions-54 )
-55. [`quicksorthash()` function ](#quicksorthash-functions-55 )
-56. [`quicksorthashsddv()` function ](#quicksorthashsddv-functions-56 )
-57. [`quicksortlight()` function ](#quicksortlight-functions-57 )
-58. [`%date()` macro ](#date-macro-58 )
-59. [`%datetime()` macro ](#datetime-macro-59 )
-60. [`%downloadfilesto()` macro ](#downloadfilesto-macro-60 )
-61. [`%filepath()` macro ](#filepath-macro-61 )
-62. [`%finddswithvarval()` macro ](#finddswithvarval-macro-62 )
-63. [`%fmt()` macro ](#fmt-macro-63 )
-64. [`%generateoneliners()` macro ](#generateoneliners-macro-64 )
-65. [`%gettitle()` macro ](#gettitle-macro-65 )
-66. [`%iffunc()` macro ](#iffunc-macro-66 )
-67. [`%infmt()` macro ](#infmt-macro-67 )
-68. [`%letters()` macro ](#letters-macro-68 )
-69. [`%libpath()` macro ](#libpath-macro-69 )
-70. [`%minclude()` macro ](#minclude-macro-70 )
-71. [`%monthshift()` macro ](#monthshift-macro-71 )
-72. [`%replist()` macro ](#replist-macro-72 )
-73. [`%time()` macro ](#time-macro-73 )
-74. [`%today()` macro ](#today-macro-74 )
-75. [`%translate()` macro ](#translate-macro-75 )
-76. [`%tranwrd()` macro ](#tranwrd-macro-76 )
-77. [`%workpath()` macro ](#workpath-macro-77 )
+49. [`$bpklenght.` format/informat ](#bpklenght-formats-49 )
+50. [`$bplenght.` format/informat ](#bplenght-formats-50 )
+51. [`$brackets.` format/informat ](#brackets-formats-51 )
+52. [`$semicolon.` format/informat ](#semicolon-formats-52 )
+53. [`qsortincbyprocproto()` proto ](#qsortincbyprocproto-proto-53 )
+54. [`frommissingtonumberbs()` function ](#frommissingtonumberbs-functions-54 )
+55. [`fromnumbertomissing()` function ](#fromnumbertomissing-functions-55 )
+56. [`quicksort4notmiss()` function ](#quicksort4notmiss-functions-56 )
+57. [`quicksorthash()` function ](#quicksorthash-functions-57 )
+58. [`quicksorthashsddv()` function ](#quicksorthashsddv-functions-58 )
+59. [`quicksortlight()` function ](#quicksortlight-functions-59 )
+60. [`%date()` macro ](#date-macro-60 )
+61. [`%datetime()` macro ](#datetime-macro-61 )
+62. [`%downloadfilesto()` macro ](#downloadfilesto-macro-62 )
+63. [`%expanddatasetslist()` macro ](#expanddatasetslist-macro-63 )
+64. [`%filepath()` macro ](#filepath-macro-64 )
+65. [`%finddswithvarval()` macro ](#finddswithvarval-macro-65 )
+66. [`%fmt()` macro ](#fmt-macro-66 )
+67. [`%generateoneliners()` macro ](#generateoneliners-macro-67 )
+68. [`%gettitle()` macro ](#gettitle-macro-68 )
+69. [`%iffunc()` macro ](#iffunc-macro-69 )
+70. [`%infmt()` macro ](#infmt-macro-70 )
+71. [`%letters()` macro ](#letters-macro-71 )
+72. [`%libpath()` macro ](#libpath-macro-72 )
+73. [`%minclude()` macro ](#minclude-macro-73 )
+74. [`%monthshift()` macro ](#monthshift-macro-74 )
+75. [`%replist()` macro ](#replist-macro-75 )
+76. [`%time()` macro ](#time-macro-76 )
+77. [`%today()` macro ](#today-macro-77 )
+78. [`%translate()` macro ](#translate-macro-78 )
+79. [`%tranwrd()` macro ](#tranwrd-macro-79 )
+80. [`%unifyvarscasesize()` macro ](#unifyvarscasesize-macro-80 )
+81. [`%workpath()` macro ](#workpath-macro-81 )
-78. [License note](#license)
+82. [License note](#license)
---
@@ -4496,7 +4519,129 @@ semicolonN(X)
---
-## `$brackets.` format/informat ######
+## `$bpklenght.` format/informat ######
+
+## >>> `bpklenght` format/informat: <<< #######################
+
+The **bpklenght** format and informats uses the `klength()` function
+to count the number of letters in a word. For empty string returns 0.
+
+
+### EXAMPLES AND USECASES: ####################################################
+
+**Example 1.** Informats and format:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+data work.count_letters;
+ input x $ 32.;
+ n = input (x, bpklenght.);
+ c = input (x, $bpklenght.);
+ format x $bpklenght.;
+cards;
+ż
+żó
+żół
+żółć
+a
+ab
+abc
+abcd
+空
+空手
+空手道
+1
+12
+123
+1234
+12345
+123456
+1234567
+12345678
+123456789
+1234567890
+;
+run;
+proc print data=work.count_letters;
+run;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Example 2.** Format:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+data _null_;
+ length x $ 32767;
+ do i = 32767/3 to 0 by -1111, 10 to 0 by -1;
+ x=repeat("空",i);
+ put x $bpklenght.;
+ end;
+run;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+---
+
+
+---
+
+## `$bplenght.` format/informat ######
+
+## >>> `bplenght` format/informat: <<< #######################
+
+The **bplenght** format and informats use the `lengthn()` function
+to count the number of bytes in a word.
+
+
+### EXAMPLES AND USECASES: ####################################################
+
+**Example 1.** Informats and format:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+data work.count_bytes;
+ input x $ 32.;
+ n = input (x, bplenght.);
+ c = input (x, $bplenght.);
+ format x $bplenght.;
+cards;
+ż
+żó
+żół
+żółć
+a
+ab
+abc
+abcd
+空
+空手
+空手道
+1
+12
+123
+1234
+12345
+123456
+1234567
+12345678
+123456789
+1234567890
+;
+run;
+proc print data=work.count_bytes;
+run;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Example 2.** Format:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+data _null_;
+ length x $ 32767;
+ do i = 32767/3 to 0 by -1111, 10 to 0 by -1;
+ x=repeat("空",i);
+ put x $bplenght.;
+ end;
+run;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+---
+
+
+---
+
+## `$brackets.` format/informat ######
## >>> `brackets.` format: <<< #######################
@@ -4527,7 +4672,7 @@ run;
---
-## `$semicolon.` format/informat ######
+## `$semicolon.` format/informat ######
## >>> `semicolon.` format: <<< #######################
@@ -4551,7 +4696,7 @@ run;
---
-## `qsortincbyprocproto()` proto ######
+## `qsortincbyprocproto()` proto ######
## >>> `qsortInCbyProcProto()` proto function: <<< #######################
@@ -4613,7 +4758,7 @@ Based on the code from the following pages [2020.08.14]:
---
-## `frommissingtonumberbs()` function ######
+## `frommissingtonumberbs()` function ######
## >>> `fromMissingToNumberBS()` function: <<< #######################
@@ -4666,7 +4811,7 @@ fromMissingToNumberBS(x)
---
-## `fromnumbertomissing()` function ######
+## `fromnumbertomissing()` function ######
## >>> `fromNumberToMissing()` function: <<< #######################
@@ -4718,7 +4863,7 @@ fromNumberToMissing(x)
---
-## `quicksort4notmiss()` function ######
+## `quicksort4notmiss()` function ######
## >>> `quickSort4NotMiss()` subroutine: <<< #######################
@@ -4812,7 +4957,7 @@ call quickSort4NotMiss(A)
---
-## `quicksorthash()` function ######
+## `quicksorthash()` function ######
## >>> `quickSortHash()` subroutine: <<< #######################
@@ -5053,7 +5198,7 @@ call quickSortHash(A)
---
-## `quicksorthashsddv()` function ######
+## `quicksorthashsddv()` function ######
## >>> `quickSortHashSDDV()` subroutine: <<< #######################
@@ -5184,7 +5329,7 @@ call quickSortHashSDDV(A, SDDV)
---
-## `quicksortlight()` function ######
+## `quicksortlight()` function ######
## >>> `quickSortLight()` subroutine: <<< #######################
@@ -5393,7 +5538,7 @@ call quickSortLight(A)
---
-## `%date()` macro ######
+## `%date()` macro ######
## >>> `%date()` macro: <<< #######################
@@ -5436,7 +5581,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%datetime()` macro ######
+## `%datetime()` macro ######
## >>> `%datetime()` macro: <<< #######################
@@ -5493,7 +5638,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%downloadfilesto()` macro ######
+## `%downloadfilesto()` macro ######
## >>> `%downloadFilesTo()` macro: <<< #######################
@@ -5625,7 +5770,111 @@ run;
---
-## `%filepath()` macro ######
+## `%expanddatasetslist()` macro ######
+
+## >>> `%expandDataSetsList()` macro: <<< #######################
+
+The `%expandDataSetsList()` macro is dedicated to "lazy typers".
+
+It allows to expand data set names provides in form of a SAS list for a given library.
+
+See examples below for the details.
+
+The `%expandDataSetsList()` macro works as pure macro code.
+
+### SYNTAX: ###################################################################
+
+The basic syntax is the following, the `<...>` means optional parameters:
+~~~~~~~~~~~~~~~~~~~~~~~sas
+%expandDataSetsList(
+ lib
+ ,datasets
+ <,quote=>
+ <,views=>
+)
+~~~~~~~~~~~~~~~~~~~~~~~
+
+**Arguments description**:
+
+1. `lib` - *Required*, is a name of a library
+ where data sets are looked-up.
+
+2. `datasets` - *Required*, is a list of data sets or views
+ to be expanded. Can be named list (e.g. `x_:`),
+ can be enumerated list (e.g. `y_1-y_5`), or both.
+ Also the `_ALL_` value is accepted.
+
+*. `quote` - *Optional*, binary indicator (default `0` means "no").
+ Tells if data set names should be quoted.
+
+*. `views` - *Optional*, binary indicator (default `1` means "yes").
+ Tells if views names should be listed too.
+
+---
+
+
+### EXAMPLES AND USECASES: ####################################################
+
+**EXAMPLE 0.** Create data sets for tests:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+data x_a x_b x_c x_d x_e x_f;
+ x=17;
+run;
+data y1 y2 y3 y4 y9 y10 y11 y12;
+ y=42;
+run;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 1.** Display names of listed datasets, handle not existing too:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%PUT #%expandDataSetsList(lib=work,datasets=x_: y1-y4 y9)#;
+
+%PUT #%expandDataSetsList(lib=work,datasets=x_: y1-y4 notExist_1-notExist_10)#;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 2.** Display one and all datasets from `WORK`, names quoted:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%PUT %expandDataSetsList(lib=work,datasets=_ALL_, quote=1);
+
+%PUT %expandDataSetsList(lib=work,datasets=x_a, quote=1);
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 3.** In tandem with the `resolve()` function:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+data _null_;
+ test=resolve('%expandDataSetsList(lib=work,datasets=x_:, quote=1)');
+ put test / test hex72.;
+run;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 4.** Workaround for `proc delete` not working with colon operator,
+ observe a warning info for `x_:` list:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+proc delete lib=work data=%expandDataSetsList(lib=work,datasets=x_:)
+;
+run;
+
+%PUT #%expandDataSetsList(lib=work,datasets=x_: y1-y4 y9)#;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 5.** Including and excluding views:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%PUT %expandDataSetsList(lib=sashelp,datasets=_ALL_);
+
+%PUT %expandDataSetsList(lib=sashelp,datasets=_ALL_,views=0);
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+---
+
+
+---
+
+## `%filepath()` macro ######
## >>> `%filePath()` macro: <<< #######################
@@ -5665,7 +5914,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%finddswithvarval()` macro ######
+## `%finddswithvarval()` macro ######
## >>> `%findDSwithVarVal()` macro: <<< #######################
@@ -5793,7 +6042,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%fmt()` macro ######
+## `%fmt()` macro ######
## >>> `%fmt()` macro: <<< #######################
@@ -5862,7 +6111,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%generateoneliners()` macro ######
+## `%generateoneliners()` macro ######
## >>> `%GenerateOneLiners()` macro: <<< #######################
@@ -5980,7 +6229,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%gettitle()` macro ######
+## `%gettitle()` macro ######
## >>> `%getTitle()` macro: <<< #######################
@@ -6066,7 +6315,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%iffunc()` macro ######
+## `%iffunc()` macro ######
## >>> `%iffunc()` macro: <<< #######################
@@ -6267,7 +6516,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%infmt()` macro ######
+## `%infmt()` macro ######
## >>> `%infmt()` macro: <<< #######################
@@ -6324,7 +6573,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%letters()` macro ######
+## `%letters()` macro ######
## >>> `%letters()` macro: <<< #######################
@@ -6442,7 +6691,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%libpath()` macro ######
+## `%libpath()` macro ######
## >>> `%libPath()` macro: <<< #######################
@@ -6487,7 +6736,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%minclude()` macro ######
+## `%minclude()` macro ######
## >>> `%mInclude()` macro: <<< #######################
@@ -6700,7 +6949,7 @@ quit;
---
-## `%monthshift()` macro ######
+## `%monthshift()` macro ######
## >>> `%monthShift()` macro: <<< #######################
@@ -6849,7 +7098,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%replist()` macro ######
+## `%replist()` macro ######
## >>> `%repList()` macro: <<< #######################
@@ -6965,7 +7214,7 @@ run;
---
-## `%time()` macro ######
+## `%time()` macro ######
## >>> `%time()` macro: <<< #######################
@@ -7008,7 +7257,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%today()` macro ######
+## `%today()` macro ######
## >>> `%today()` macro: <<< #######################
@@ -7051,7 +7300,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%translate()` macro ######
+## `%translate()` macro ######
## >>> `%translate()` macro: <<< #######################
@@ -7115,7 +7364,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%tranwrd()` macro ######
+## `%tranwrd()` macro ######
## >>> `%tranwrd()` macro: <<< #######################
@@ -7182,7 +7431,118 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%workpath()` macro ######
+## `%unifyvarscasesize()` macro ######
+
+## >>> `%unifyVarsCaseSize()` macro: <<< #######################
+
+The `%unifyVarsCaseSize()` macro converts *all* variables names into low-case or
+upcase letters for given library and list of datasets. Only necessary conversion is
+done, i.e., variable `abc` will not be converted to low-case letters.
+
+See examples below for the details.
+
+The `%unifyVarsCaseSize()` macro works as pure macro code.
+
+[NOTE:] The macro internally uses the `%expandDataSetsList()` macro.
+
+### SYNTAX: ###################################################################
+
+The basic syntax is the following, the `<...>` means optional parameters:
+~~~~~~~~~~~~~~~~~~~~~~~sas
+%unifyVarsCaseSize(
+ lib
+ ,ds
+ <,case=>
+ <,debug=>
+)
+~~~~~~~~~~~~~~~~~~~~~~~
+
+**Arguments description**:
+
+1. `lib` - *Required*, is a name of a library
+ where data sets are looked-up.
+
+2. `ds` - *Required*, is a list of data sets
+ to be expanded. Can be named list (e.g. `x_:`),
+ can be enumerated list (e.g. `y_1-y_5`), or both.
+ Also the `_ALL_` value is accepted.
+
+*. `case` - *Optional*, single letter indicator (default `L` means "low-case").
+ Tells if variables names should low-cased (`l`,`L`) or upcased ("u", "U").
+
+*. `debug` - *Optional*, binary indicator (default `0` means "no").
+ Tells if processing notes should be printed.
+---
+
+
+### EXAMPLES AND USECASES: ####################################################
+
+**EXAMPLE 0.** Create data sets for tests:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+data aclass1 aclass2 aclass3 bclass4 bclass5 bclass6;
+ set sashelp.class(obs=6);
+ Nn=_N_;
+ if 1=_N_ then output aclass1;
+ if 2=_N_ then output aclass2;
+ if 3=_N_ then output aclass3;
+ if 4=_N_ then output bclass4;
+ if 5=_N_ then output bclass5;
+ if 6=_N_ then output bclass6;
+run;
+proc print data=aclass1;
+run;
+proc print data=bclass6;
+run;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 1.** Convert all variables names to low-case:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%unifyVarsCaseSize(work,aclass:)
+
+proc print data=aclass1;
+proc print data=aclass2;
+proc print data=aclass3;
+run;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 2.** Convert all variables names to upcase:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%unifyVarsCaseSize(work,bclass4-bclass6,case=U)
+
+proc print data=bclass4;
+proc print data=bclass5;
+proc print data=bclass6;
+run;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 3.** No conversion done:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+data work.abc;
+ abc=42;
+run;
+
+%unifyVarsCaseSize(work,abc,debug=1)
+
+proc print data=abc;
+run;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 4.** Variables in all data sets in `WORK` converted to upcase:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%unifyVarsCaseSize(work,_ALL_,case=L)
+%unifyVarsCaseSize(work,_ALL_,case=U)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+---
+
+
+---
+
+## `%workpath()` macro ######
## >>> `%workPath()` macro: <<< #######################
diff --git a/packages/baseplus.zip b/packages/baseplus.zip
index 4a93a72..bddaeb0 100644
Binary files a/packages/baseplus.zip and b/packages/baseplus.zip differ