diff --git a/packages/README.md b/packages/README.md
index 3bbd8b7..c1b5802 100644
--- a/packages/README.md
+++ b/packages/README.md
@@ -86,7 +86,7 @@ SHA256 digest for macroArray: F*3F3893F1FCD78719543703E4353F4CC19811D247C016F220
---
-- **BasePlus**\[1.40.0\] adds a bunch of functionalities I am missing in BASE SAS, such as:
+- **BasePlus**\[1.42.0\] adds a bunch of functionalities I am missing in BASE SAS, such as:
```sas
call arrMissToRight(myArray);
call arrFillMiss(17, myArray);
@@ -116,7 +116,7 @@ format x bool.;
%put %monthShift(2023,1,-5);
```
-SHA256 digest for BasePlus: F*BD0333B92D7CB639A136CD4994DE0C63F8396E449E45BC714D71D2E15318F42D
+SHA256 digest for BasePlus: F*6012D1475AE22A4445C032D8EAE092BE515D8CD2AE390CC087F5987ACB8BCB13
[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 6be99f0..9dd44f7 100644
--- a/packages/SHA256_for_packages.txt
+++ b/packages/SHA256_for_packages.txt
@@ -1,3 +1,9 @@
+/* 202406710 */
+BasePlus: F*6012D1475AE22A4445C032D8EAE092BE515D8CD2AE390CC087F5987ACB8BCB13
+
+/* 20240609 */
+BasePlus: F*6760DDF382E7CA9A1291F028FA7F2BACB68A3D31CEA3A85104E13EA08645AEF1
+
/* 20240606 */
BasePlus: F*BD0333B92D7CB639A136CD4994DE0C63F8396E449E45BC714D71D2E15318F42D
diff --git a/packages/baseplus.md b/packages/baseplus.md
index 3bf40de..58246d4 100644
--- a/packages/baseplus.md
+++ b/packages/baseplus.md
@@ -9,22 +9,22 @@
### Version information:
- Package: BasePlus
-- Version: 1.40.0
-- Generated: 2024-06-06T21:47:12
+- Version: 1.42.0
+- Generated: 2024-07-10T22:42:55
- Author(s): Bartosz Jablonski (yabwon@gmail.com), Quentin McMullen (qmcmullen@gmail.com)
- Maintainer(s): Bartosz Jablonski (yabwon@gmail.com)
- License: MIT
-- File SHA256: `F*BD0333B92D7CB639A136CD4994DE0C63F8396E449E45BC714D71D2E15318F42D` for this version
-- Content SHA256: `C*A35E716739EC4FF9767C363E840458FB7D5212605982276632F59FD26AB43594` for this version
+- File SHA256: `F*6012D1475AE22A4445C032D8EAE092BE515D8CD2AE390CC087F5987ACB8BCB13` for this version
+- Content SHA256: `C*3A52B9CB12C454868DAF29AE1E73F8E296E730EA6BF1B9CD22C1A990985EE191` for this version
---
-# The `BasePlus` package, version: `1.40.0`;
+# The `BasePlus` package, version: `1.42.0`;
---
-# The BasePlus package [ver. 1.40.0] ###############################################
+# The BasePlus package [ver. 1.42.0] ###############################################
The **BasePlus** package implements useful
functions and functionalities I miss in the BASE SAS.
@@ -453,20 +453,23 @@ The `BasePlus` package consists of the following content:
61. [`%filepath()` macro ](#filepath-macro-61 )
62. [`%finddswithvarval()` macro ](#finddswithvarval-macro-62 )
63. [`%fmt()` macro ](#fmt-macro-63 )
-64. [`%gettitle()` macro ](#gettitle-macro-64 )
-65. [`%iffunc()` macro ](#iffunc-macro-65 )
-66. [`%infmt()` macro ](#infmt-macro-66 )
-67. [`%letters()` macro ](#letters-macro-67 )
-68. [`%libpath()` macro ](#libpath-macro-68 )
-69. [`%minclude()` macro ](#minclude-macro-69 )
-70. [`%monthshift()` macro ](#monthshift-macro-70 )
-71. [`%replist()` macro ](#replist-macro-71 )
-72. [`%time()` macro ](#time-macro-72 )
-73. [`%today()` macro ](#today-macro-73 )
-74. [`%translate()` macro ](#translate-macro-74 )
-75. [`%tranwrd()` macro ](#tranwrd-macro-75 )
-76. [`%workpath()` macro ](#workpath-macro-76 )
-77. [License note](#license)
+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 )
+
+
+99. [License note](#license)
---
@@ -2018,6 +2021,9 @@ The basic syntax is the following, the `<...>` means optional parameters:
<,boxPlotSymbolSize=>
<,boxPlotLineSize=>
<,boxPlotFill=>
+ <,meanShiftLine=>
+ <,meanShiftStep=>
+ <,meanShiftColors=>
<,colorsList=>
<,monochrome=>
<,antialiasMax=>
@@ -2039,9 +2045,15 @@ The basic syntax is the following, the `<...>` means optional parameters:
<,catAxisValueAttrs=>
<,xaxisValueAttrs=>
<,xaxisTickstyle=>
+ <,xaxisValues=>
+ <,xaxisValuesDisplay=>
+ <,xaxisValuesFormat=>
+ <,xaxisValuesRotate=>
+ <,xaxisOther=>
<,sganno=>
<,odsGraphicsOptions=>
<,sgPlotOptions=>
+ <,vertical=>
<,VSCALE=>
<,KERNEL_K=>
@@ -2052,6 +2064,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
<,cleanTempData=>
<,codePreview=>
+ <,reuseN=>
)
~~~~~~~~~~~~~~~~~~~~~~~
@@ -2103,6 +2116,17 @@ The basic syntax is the following, the `<...>` means optional parameters:
Transparency of the box plot.
Ranges from 0.0 (opaque) to 1.0 (full translucent).
+* `meanShiftLine` - *Optional*, default value `0`.
+ Indicates if a line connecting mean symbol
+ on the Box Plot should be added.
+
+* `meanShiftStep` - *Optional*, default value `0.1`.
+ Sets how smooth gradient should be
+ on the "mean-shift" line.
+
+* `meanShiftColors` - *Optional*, default value is empty.
+ List of colours for plotting the "mean-shift" line.
+ Empty indicates that the `colorsList` value will be used.
* `colorsList` - *Optional*, default value is empty.
List of colours for plotting.
@@ -2134,7 +2158,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
For details see notes below.
* `xBothAxis` - *Optional*, default value is `1`.
- Indicates if both (top and bootom) axis (horizontal) should be printed.
+ Indicates if both (top and bottom) axis (horizontal) should be printed.
If not `1` then only bottom axis is displayed.
* `catLabelPos` - *Optional*, default value `DATACENTER`.
@@ -2183,11 +2207,34 @@ The basic syntax is the following, the `<...>` means optional parameters:
Allowed values are `OUTSIDE`, `INSIDE`, `ACROSS`, and `INBETWEEN`.
*For SAS previous to* **9.4M5** *set to missing!*
+* `xaxisValues` - *Optional*, default value is empty.
+ It is a wrapper to provide value for
+ the `XAXIS` statement, for `Values` option.
+
+* `xaxisValuesDisplay` - *Optional*, default value is empty.
+ It is a wrapper to provide value for
+ the `XAXIS` statement, for `ValuesDisplay` option.
+
+* `xaxisValuesFormat` - *Optional*, default value is empty.
+ It is a wrapper to provide value for
+ the `XAXIS` statement, for `ValuesFormat` option.
+ Instead using `w.d` format, use its alias `Fw.d`.
+
+* `xaxisValuesRotate` - *Optional*, default value is empty.
+ It is a wrapper to provide value for
+ the `XAXIS` statement, for `ValuesRotate` option.
+
+* `xaxisOther` - *Optional*, default value is empty.
+ It is a wrapper to provide value for
+ the `XAXIS` statement options not mentioned above.
+ You can use it to provide, e.g., `GRID`, 'MINOR',
+ `MINORGRID`, `GRIDATTRS=`, or `MINORGRIDATTRS=`.
+
* `sganno` - *Optional*, default value is empty.
keeps name of a data set for the `sganno=` option
of the SGPLOT procedure.
-* `sgPlotOptions` - *Optional*, default value is `noautolegend noborder`.
+* `sgPlotOptions` - *Optional*, default value is `noautolegend noborder subpixel`.
List of additional options values for SGPLOT procedure.
* `odsGraphicsOptions` - *Optional*, default value is empty.
@@ -2243,6 +2290,11 @@ The basic syntax is the following, the `<...>` means optional parameters:
* `codePreview` - *Optional*, default value `0`.
Indicates if source code should be MPRINTed to log.
+* `reuseN` - *Optional*, default value `6`.
+ Indicates how many times colours list should be repeated
+ so that colours could be reused in case the number of groups
+ is greater than the colours list length.
+
---
### NOTES: ###################################################################
@@ -5802,7 +5854,125 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%gettitle()` macro ######
+## `%generateoneliners()` macro ######
+
+## >>> `%GenerateOneLiners()` macro: <<< #######################
+
+The `%GenerateOneLiners()` macro is a "macro-generator" dedicated
+to "lazy typers".
+
+It allows to generate macro wrappers for functions
+that have the following form:
+
+~~~~~~~~~~~~~~~~~~~~~~~sas
+%macro FUNCTION()/parmbuff;
+%sysfunc(FUNCTION&syspbuff)
+%mend FUNCTION;
+
+%macro qFUNCTION()/parmbuff;
+%qsysfunc(FUNCTION&syspbuff)
+%mend qFUNCTION;
+~~~~~~~~~~~~~~~~~~~~~~~
+
+See examples below for the details.
+
+The `%GenerateOneLiners()` macro is not pure macro code.
+
+### SYNTAX: ###################################################################
+
+The basic syntax is the following, the `<...>` means optional parameters:
+~~~~~~~~~~~~~~~~~~~~~~~sas
+%GenerateOneLiners(
+ <,listOfFunctions=>
+ <,prefix=>
+)
+~~~~~~~~~~~~~~~~~~~~~~~
+
+**Arguments description**:
+
+1. `listOfFunctions` - *Required*, is a space separated list of
+ valid SAS functions. Default value is:
+ `CATX CATQ CATT CAT COMPRESS REVERSE REPEAT`.
+
+2. `prefix` - *Optional*, a prefix added to the name
+ of a created macro.
+
+---
+
+
+### EXAMPLES AND USECASES: ####################################################
+
+**EXAMPLE 1.** Create list of macrofunctions for
+ `CATX CATQ CATT CAT COMPRESS REVERSE REPEAT`:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%GenerateOneLiners(prefix=_)
+
+%let a = 1,2,3,4,5,6;
+%put %_CATX(%str( ),&a.);
+%put %_CATQ(2A,&a.);
+%put %_QCATQ(1AMD,%str(,),&a.);
+
+%let x=a 1 b 2 c 3 d 4 e 5 f 6 g;
+%put %_COMPRESS(&x.);
+%put %_COMPRESS(&x.,,ka);
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**EXAMPLE 2.** Create list of macrofunctions for
+ `SUM MEAN MEDIAN VAR STD USS CSS RANGE IQR MAD SUMABS`:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%GenerateOneLiners(
+ listOfFunctions=SUM MEAN MEDIAN VAR STD USS CSS RANGE IQR MAD SUMABS
+, 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)
+;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**EXAMPLE 3.** Some other lists:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%GenerateOneLiners(prefix=_
+, listOfFunctions=CDF PDF RAND QUANTILE SQUANTILE SDF logCDF logPDF logSDF RMS
+)
+
+%GenerateOneLiners(prefix=_
+, listOfFunctions=YEAR QTR MONTH WEEK DAY HOUR MINUTE SECOND
+)
+
+%GenerateOneLiners(prefix=_
+, listOfFunctions=PCTL1 PCTL2 PCTL3 PCTL4 PCTL5 PCTL
+)
+
+%GenerateOneLiners(prefix=_
+, listOfFunctions=YYQ MDY HMS INTCK INTNX SLEEP
+)
+
+%GenerateOneLiners(prefix=_
+, listOfFunctions=WHICHC WHICHN
+)
+
+%GenerateOneLiners(prefix=_
+, listOfFunctions=SYMEXIST SYMGLOBL SYMLOCAL
+)
+
+%GenerateOneLiners(prefix=_
+, listOfFunctions=PRXCHANGE PRXMATCH PRXPAREN PRXPARSE
+)
+
+%GenerateOneLiners(prefix=_
+, listOfFunctions=MD5 SHA256 HASHING
+)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+---
+
+
+---
+
+## `%gettitle()` macro ######
## >>> `%getTitle()` macro: <<< #######################
@@ -5888,7 +6058,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%iffunc()` macro ######
+## `%iffunc()` macro ######
## >>> `%iffunc()` macro: <<< #######################
@@ -6089,7 +6259,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%infmt()` macro ######
+## `%infmt()` macro ######
## >>> `%infmt()` macro: <<< #######################
@@ -6146,7 +6316,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%letters()` macro ######
+## `%letters()` macro ######
## >>> `%letters()` macro: <<< #######################
@@ -6264,7 +6434,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%libpath()` macro ######
+## `%libpath()` macro ######
## >>> `%libPath()` macro: <<< #######################
@@ -6309,7 +6479,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%minclude()` macro ######
+## `%minclude()` macro ######
## >>> `%mInclude()` macro: <<< #######################
@@ -6522,7 +6692,7 @@ quit;
---
-## `%monthshift()` macro ######
+## `%monthshift()` macro ######
## >>> `%monthShift()` macro: <<< #######################
@@ -6671,7 +6841,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%replist()` macro ######
+## `%replist()` macro ######
## >>> `%repList()` macro: <<< #######################
@@ -6787,7 +6957,7 @@ run;
---
-## `%time()` macro ######
+## `%time()` macro ######
## >>> `%time()` macro: <<< #######################
@@ -6830,7 +7000,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%today()` macro ######
+## `%today()` macro ######
## >>> `%today()` macro: <<< #######################
@@ -6873,7 +7043,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%translate()` macro ######
+## `%translate()` macro ######
## >>> `%translate()` macro: <<< #######################
@@ -6937,7 +7107,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%tranwrd()` macro ######
+## `%tranwrd()` macro ######
## >>> `%tranwrd()` macro: <<< #######################
@@ -7004,7 +7174,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
---
-## `%workpath()` macro ######
+## `%workpath()` macro ######
## >>> `%workPath()` macro: <<< #######################
diff --git a/packages/baseplus.zip b/packages/baseplus.zip
index 7625d4b..cb055ac 100644
Binary files a/packages/baseplus.zip and b/packages/baseplus.zip differ