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