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