diff --git a/packages/README.md b/packages/README.md
index ab654a5..5469745 100644
--- a/packages/README.md
+++ b/packages/README.md
@@ -86,7 +86,7 @@ SHA256 digest for macroArray: F*6A22A01868F4203862B3685F543D723C7DB8E9AB3C1A6357
---
-- **BasePlus**\[1.29.1\] adds a bunch of functionalities I am missing in BASE SAS, such as:
+- **BasePlus**\[1.30.0\] adds a bunch of functionalities I am missing in BASE SAS, such as:
```sas
call arrMissToRight(myArray);
call arrFillMiss(17, myArray);
@@ -110,7 +110,7 @@ format x bool.;
%put %repeatTxt(#,15,s=$) HELLO SAS! %repeatTxt(#,15,s=$);
```
-SHA256 digest for BasePlus: F*2FE68DD9B3692B9D46EF85B82F63C7E65010BF9E89D670FD1779F4670FA03F31
+SHA256 digest for BasePlus: F*B91771D45C781B6806DBB44A3B491A0784D7698B9F3BBBE1A86EE5594834315F
[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 368aa25..851f758 100644
--- a/packages/SHA256_for_packages.txt
+++ b/packages/SHA256_for_packages.txt
@@ -1,3 +1,6 @@
+/* 20230919 */
+BasePlus: F*B91771D45C781B6806DBB44A3B491A0784D7698B9F3BBBE1A86EE5594834315F
+
/* 20230906 */
macroArray: F*6A22A01868F4203862B3685F543D723C7DB8E9AB3C1A6357D2BFA030971B0D3C
diff --git a/packages/baseplus.md b/packages/baseplus.md
index f9b0a87..2e47556 100644
--- a/packages/baseplus.md
+++ b/packages/baseplus.md
@@ -52,6 +52,7 @@
* [`%bpPIPE()` macro](#bppipe-macro)
* [`%dirsAndFiles()` macro](#dirsandfiles-macro)
* [`%repeatTxt()` macro](#repeattxt-macro)
+ * [`%repList()` macro](#replist-macro)
* [`%intsList()` macro](#intslist-macro)
* [`%letters()` macro](#letters-macro)
* [`%splitDSIntoBlocks()` macro](#splitdsintoblocks-macro)
@@ -72,7 +73,7 @@
---
-# The BasePlus package [ver. 1.29.1] ###############################################
+# The BasePlus package [ver. 1.30.0] ###############################################
The **BasePlus** package implements useful
functions and functionalities I miss in the BASE SAS.
@@ -309,6 +310,33 @@ run;
run;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**EXAMPLE 22** Repeating texts and lists:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+options mprint;
+
+data work.A;
+ x=17;
+data work.B;
+ x=42;
+data work.C;
+ x=303;
+run;
+
+data work.test5;
+ set
+ %repeatTxt(work.A work.B work.C, 5)
+ ;
+run;
+
+
+data Times2_A3B4C5;
+ set
+ %repList(work.A work.B work.C, times = 2, each = 3 4 5)
+ ;
+run;
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
---
Package contains:
@@ -375,9 +403,11 @@ Package contains:
61. macro letters
62. macro libpath
63. macro minclude
-64. macro translate
-65. macro tranwrd
-66. macro workpath
+64. macro replist
+65. macro translate
+66. macro tranwrd
+67. macro workpath
+
@@ -388,7 +418,7 @@ localization (only if additional content was deployed during the installation pr
* SAS package generated by generatePackage, version 20230905 *
The SHA256 hash digest for package BasePlus:
-`F*2FE68DD9B3692B9D46EF85B82F63C7E65010BF9E89D670FD1779F4670FA03F31`
+`F*B91771D45C781B6806DBB44A3B491A0784D7698B9F3BBBE1A86EE5594834315F`
---
# Content description ############################################################################################
@@ -4399,6 +4429,118 @@ run;
---
+## >>> `%repList()` macro: <<< #######################
+
+The repList() macro function allows to repeat `T`
+times elements of a `L` list, possibly `E` times each element,
+separated by string `S`.
+
+See examples below for the details.
+
+The `%repList()` macro executes like a pure macro code.
+
+### SYNTAX: ###################################################################
+
+The basic syntax is the following, the `<...>` means optional parameters:
+~~~~~~~~~~~~~~~~~~~~~~~sas
+%repList(
+ list
+ <,times=>
+ <,each=>
+ <,lenghtOut=>
+ <,sep=>
+)
+~~~~~~~~~~~~~~~~~~~~~~~
+
+**Arguments description**:
+
+1. `list` - *Required*, a list of elements to be repeated.
+ List can be space or comma separated.
+ Elements can be in quotes.
+ For comma separated list add brackets
+ e.g., `%repList((A,B,C,D),times=5)`.
+ The list separators are: `<{[( ,;)]}>`.
+
+* `times=` - *Optional*, An integer indicating
+ the number of repetitions.
+ By default set to `1`.
+
+
+* `each=` - *Optional*, A list of integers indicating
+ the number of repetitions of each element of the list
+ e.g., for a list `A B C` and the `each=2 4` the result
+ is `A A B B B B C C`. If the number of integers is less
+ then the length of the list values are recycled from
+ the beginning.
+ By default set to `1`.
+
+* `lenghtOut=` - *Optional*, An integer indicating
+ after what the number of repetitions process will stop.
+ By default set to `0` which means "do not stop".
+
+* `sep=` - *Optional*, it is a separator printed between
+ repeated elements. Mnemonics for *space* is `s`,
+ for *comma* is `c`, and for semicolon in `q`.
+ Default value is a single space.
+
+
+### EXAMPLES AND USECASES: ####################################################
+
+**EXAMPLE 1.** Simple repetition of all elements:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%put %repList((A,B,C,D), times=3);
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 2.** Simple repetition of each element:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%put %repList(("A",'B',"C",'D'), each=3);
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 3.** Simple repetition with a separator:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%put %repList(A10;B20;C30, times=3, each=2, sep=Q);
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 4.** Recycle elements up to 8 with a comma as a separator:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%put %repList(1 2 3, lenghtOut=8, sep=c);
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**EXAMPLE 5.** Separate number of repetitions for each element:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%put [%repList([D][C][B][A], each = 2 3 5 7, sep=] [)];
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**EXAMPLE 6.** "ASCII art" butterflies:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+%put {>%repList(! $ |, times = 2, each =2 1, sep=<} ... {>)<};
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+**EXAMPLE 7.** Data repeating:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
+data A;
+ x=17;
+data B;
+ x=42;
+data C;
+ x=303;
+run;
+
+data Times2_A10B11C12;
+ set
+ %repList(A B C, times = 2, each =10 11 12)
+ ;
+run;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+---
+
+
## >>> `%intsList()` macro: <<< #######################
The intsList() macro function allows to print a list of
diff --git a/packages/baseplus.zip b/packages/baseplus.zip
index 640e533..37f2de5 100644
Binary files a/packages/baseplus.zip and b/packages/baseplus.zip differ