mirror of
https://github.com/SASPAC/baseplus.git
synced 2026-01-02 15:40:06 +00:00
Merge pull request #24 from SASPAC/dev
The BasePlus package [ver. 1.32.0]
This commit is contained in:
@@ -47,10 +47,12 @@ libname NEW "%workPath()/new";
|
|||||||
%put %tranwrd(Miss Joan Smith,Miss,Ms.);
|
%put %tranwrd(Miss Joan Smith,Miss,Ms.);
|
||||||
|
|
||||||
%put %date() %time() %datetime();
|
%put %date() %time() %datetime();
|
||||||
|
|
||||||
|
%put %monthShift(2023,1,-5);
|
||||||
```
|
```
|
||||||
and more.
|
and more.
|
||||||
|
|
||||||
SHA256 digest for the latest version of `BasePlus`: F*7EF23E80A2C03B29402183D97ECFF608B62BEDD9458848709B52DC362E6201B9
|
SHA256 digest for the latest version of `BasePlus`: F*81EF4FA7E1D9363A991B686F38C6569FFB22024CB9C67A9395EEF6D4257D508E
|
||||||
|
|
||||||
[**Documentation for BasePlus**](./baseplus.md "Documentation for BasePlus")
|
[**Documentation for BasePlus**](./baseplus.md "Documentation for BasePlus")
|
||||||
|
|
||||||
|
|||||||
306
baseplus.md
306
baseplus.md
@@ -64,6 +64,7 @@
|
|||||||
* [`%today()` macro](#today-macro)
|
* [`%today()` macro](#today-macro)
|
||||||
* [`%time()` macro](#time-macro)
|
* [`%time()` macro](#time-macro)
|
||||||
* [`%datetime()` macro](#datetime-macro)
|
* [`%datetime()` macro](#datetime-macro)
|
||||||
|
* [`%monthShift()` macro](#monthshift-macro)
|
||||||
* [`%translate()` macro](#translate-macro)
|
* [`%translate()` macro](#translate-macro)
|
||||||
* [`%tranwrd()` macro](#tranwrd-macro)
|
* [`%tranwrd()` macro](#tranwrd-macro)
|
||||||
* [`%findDSwithVarVal()` macro](#finddswithvarval-macro)
|
* [`%findDSwithVarVal()` macro](#finddswithvarval-macro)
|
||||||
@@ -77,7 +78,7 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# The BasePlus package [ver. 1.31.0] <a name="baseplus-package"></a> ###############################################
|
# The BasePlus package [ver. 1.32.0] <a name="baseplus-package"></a> ###############################################
|
||||||
|
|
||||||
The **BasePlus** package implements useful
|
The **BasePlus** package implements useful
|
||||||
functions and functionalities I miss in the BASE SAS.
|
functions and functionalities I miss in the BASE SAS.
|
||||||
@@ -85,6 +86,7 @@ functions and functionalities I miss in the BASE SAS.
|
|||||||
It is inspired by various people, e.g.
|
It is inspired by various people, e.g.
|
||||||
- at the SAS-L discussion list
|
- at the SAS-L discussion list
|
||||||
- at the communities.sas.com (SASware Ballot Ideas)
|
- at the communities.sas.com (SASware Ballot Ideas)
|
||||||
|
- at StackOverflow
|
||||||
- at the Office...
|
- at the Office...
|
||||||
- etc.
|
- etc.
|
||||||
|
|
||||||
@@ -100,8 +102,6 @@ Kudos to all who inspired me to generate this package:
|
|||||||
*Kurt Bremser*,
|
*Kurt Bremser*,
|
||||||
*Leonid Batkhan*.
|
*Leonid Batkhan*.
|
||||||
|
|
||||||
Recording from the SAS Explore 2022 conference: [A BasePlus Package for SAS](https://communities.sas.com/t5/SAS-Explore-Presentations/A-BasePlus-Package-for-SAS/ta-p/838246 "A BasePlus Package for SAS") (September 27th-29th, 2022).
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### BASIC EXAMPLES AND USECASES: ####################################################
|
### BASIC EXAMPLES AND USECASES: ####################################################
|
||||||
@@ -345,90 +345,101 @@ run;
|
|||||||
%put %today() %date() %time() %datetime();
|
%put %today() %date() %time() %datetime();
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
**EXAMPLE 24** Months shifting:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%put
|
||||||
|
Past: %monthShift(2023, 1, -1)
|
||||||
|
Current: %monthShift(2023, 1 )
|
||||||
|
Future: %monthShift(2023, 1, +1)
|
||||||
|
;
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Package contains:
|
Package contains:
|
||||||
1. macro bppipe
|
1. macro bppipe
|
||||||
2. macro deduplistc
|
2. macro deduplistc
|
||||||
3. macro deduplistp
|
3. macro deduplistp
|
||||||
4. macro deduplists
|
4. macro deduplists
|
||||||
5. macro deduplistx
|
5. macro deduplistx
|
||||||
6. macro dirsandfiles
|
6. macro dirsandfiles
|
||||||
7. macro functionexists
|
7. macro functionexists
|
||||||
8. macro getvars
|
8. macro getvars
|
||||||
9. macro intslist
|
9. macro intslist
|
||||||
10. macro ldsn
|
10. macro ldsn
|
||||||
11. macro ldsnm
|
11. macro ldsnm
|
||||||
12. macro lvarnm
|
12. macro lvarnm
|
||||||
13. macro lvarnmlab
|
13. macro lvarnmlab
|
||||||
14. macro qdeduplistx
|
14. macro qdeduplistx
|
||||||
15. macro qgetvars
|
15. macro qgetvars
|
||||||
16. macro qzipevalf
|
16. macro qzipevalf
|
||||||
17. macro raincloudplot
|
17. macro raincloudplot
|
||||||
18. macro repeattxt
|
18. macro repeattxt
|
||||||
19. macro splitdsintoblocks
|
19. macro splitdsintoblocks
|
||||||
20. macro splitdsintoparts
|
20. macro splitdsintoparts
|
||||||
21. macro symdelglobal
|
21. macro symdelglobal
|
||||||
22. macro unziplibrary
|
22. macro unziplibrary
|
||||||
23. macro zipevalf
|
23. macro zipevalf
|
||||||
24. macro ziplibrary
|
24. macro ziplibrary
|
||||||
25. format bool
|
25. format bool
|
||||||
26. format boolz
|
26. format boolz
|
||||||
27. format ceil
|
27. format ceil
|
||||||
28. format floor
|
28. format floor
|
||||||
29. format int
|
29. format int
|
||||||
30. function arrfill
|
30. function arrfill
|
||||||
31. function arrfillc
|
31. function arrfillc
|
||||||
32. function arrmissfill
|
32. function arrmissfill
|
||||||
33. function arrmissfillc
|
33. function arrmissfillc
|
||||||
34. function arrmisstoleft
|
34. function arrmisstoleft
|
||||||
35. function arrmisstoleftc
|
35. function arrmisstoleftc
|
||||||
36. function arrmisstoright
|
36. function arrmisstoright
|
||||||
37. function arrmisstorightc
|
37. function arrmisstorightc
|
||||||
38. function bracketsc
|
38. function bracketsc
|
||||||
39. function bracketsn
|
39. function bracketsn
|
||||||
40. function catxfc
|
40. function catxfc
|
||||||
41. function catxfi
|
41. function catxfi
|
||||||
42. function catxfj
|
42. function catxfj
|
||||||
43. function catxfn
|
43. function catxfn
|
||||||
44. function deldataset
|
44. function deldataset
|
||||||
45. function semicolonc
|
45. function semicolonc
|
||||||
46. function semicolonn
|
46. function semicolonn
|
||||||
47. format brackets
|
47. format brackets
|
||||||
48. format semicolon
|
48. format semicolon
|
||||||
49. proto qsortincbyprocproto
|
49. proto qsortincbyprocproto
|
||||||
50. function frommissingtonumberbs
|
50. function frommissingtonumberbs
|
||||||
51. function fromnumbertomissing
|
51. function fromnumbertomissing
|
||||||
52. function quicksort4notmiss
|
52. function quicksort4notmiss
|
||||||
53. function quicksorthash
|
53. function quicksorthash
|
||||||
54. function quicksorthashsddv
|
54. function quicksorthashsddv
|
||||||
55. function quicksortlight
|
55. function quicksortlight
|
||||||
56. macro date
|
56. macro date
|
||||||
57. macro datetime
|
57. macro datetime
|
||||||
58. macro filepath
|
58. macro filepath
|
||||||
59. macro finddswithvarval
|
59. macro finddswithvarval
|
||||||
60. macro fmt
|
60. macro fmt
|
||||||
61. macro gettitle
|
61. macro gettitle
|
||||||
62. macro infmt
|
62. macro infmt
|
||||||
63. macro letters
|
63. macro letters
|
||||||
64. macro libpath
|
64. macro libpath
|
||||||
65. macro minclude
|
65. macro minclude
|
||||||
66. macro replist
|
66. macro monthshift
|
||||||
67. macro time
|
67. macro replist
|
||||||
68. macro today
|
68. macro time
|
||||||
69. macro translate
|
69. macro today
|
||||||
70. macro tranwrd
|
70. macro translate
|
||||||
71. macro workpath
|
71. macro tranwrd
|
||||||
|
72. macro workpath
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Package contains additional content, run: %loadPackageAddCnt(BasePlus) to load it
|
Package contains additional content, run: %loadPackageAddCnt(BasePlus) to load it
|
||||||
or look for the baseplus_AdditionalContent directory in the Packages fileref
|
or look for the baseplus_AdditionalContent directory in the Packages fileref
|
||||||
localization (only if additional content was deployed during the installation process).
|
localization (only if additional content was deployed during the installation process).
|
||||||
|
|
||||||
* SAS package generated by generatePackage, version 20231009 *
|
* SAS package generated by generatePackage, version 20231024 *
|
||||||
|
|
||||||
The SHA256 hash digest for package BasePlus:
|
The SHA256 hash digest for package BasePlus:
|
||||||
`F*7EF23E80A2C03B29402183D97ECFF608B62BEDD9458848709B52DC362E6201B9`
|
`F*81EF4FA7E1D9363A991B686F38C6569FFB22024CB9C67A9395EEF6D4257D508E`
|
||||||
|
|
||||||
---
|
---
|
||||||
# Content description ############################################################################################
|
# Content description ############################################################################################
|
||||||
@@ -5107,6 +5118,149 @@ The basic syntax is the following, the `<...>` means optional parameters:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## >>> `%monthShift()` macro: <<< <a name="monthshift-macro"></a> #######################
|
||||||
|
|
||||||
|
The monthShift() macro is a utility macro
|
||||||
|
which allows to shift "year-month" period by
|
||||||
|
a given number of "periods" (months).
|
||||||
|
|
||||||
|
The result is in the `YYYYMM` format but can be altered.
|
||||||
|
|
||||||
|
See examples below for the details.
|
||||||
|
|
||||||
|
The `%monthShift()` macro executes like a pure macro code.
|
||||||
|
|
||||||
|
### SYNTAX: ###################################################################
|
||||||
|
|
||||||
|
The basic syntax is the following, the `<...>` means optional parameters:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%monthShift(
|
||||||
|
< Y>
|
||||||
|
<,M>
|
||||||
|
<,shift>
|
||||||
|
<,ofmt=>
|
||||||
|
)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
**Arguments description**:
|
||||||
|
|
||||||
|
1. `Y` - *Optional*, a year from which counting starts.
|
||||||
|
If null the value is set to *system year*.
|
||||||
|
|
||||||
|
2. `M` - *Optional*, a month from which counting starts.
|
||||||
|
If null the value is set to `1`. Can be a number
|
||||||
|
(`1` to `12`) or a name (`June`, `OCTOBER`) or
|
||||||
|
a three letters short (`JAN`, `apr`).
|
||||||
|
|
||||||
|
3. `shift` - *Optional*, number of periods to shift.
|
||||||
|
If null the value is set to `0`.
|
||||||
|
Positive value shifts to the "future",
|
||||||
|
negative value shifts to the "past",
|
||||||
|
Can be an expression (e.g. `1+2*3`, see examples).
|
||||||
|
|
||||||
|
* `ofmt=YYMMn6.` - *Optional*, it is a format name used to
|
||||||
|
display the result. Default value is `YYMMn6.`
|
||||||
|
See examples.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### EXAMPLES AND USECASES: ####################################################
|
||||||
|
|
||||||
|
**EXAMPLE 1.** Shift one up and one down:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%put
|
||||||
|
Past: %monthShift(2023, 1, -1)
|
||||||
|
Current: %monthShift(2023, 1 )
|
||||||
|
Future: %monthShift(2023, 1, +1)
|
||||||
|
;
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 2.** Shift by expression:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%let n = 2;
|
||||||
|
%put
|
||||||
|
%monthShift(2023, 1, +1 + &n.*3)
|
||||||
|
;
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 3.** Shift with default values:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%put %monthShift();
|
||||||
|
%put %monthShift(2023);
|
||||||
|
%put %monthShift(2023,Jan);
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 4.** Shift with months names:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%put
|
||||||
|
%monthShift(2023,Jan,-1)
|
||||||
|
%monthShift(2023,Feb,-2)
|
||||||
|
%monthShift(2023,Mar,-3)
|
||||||
|
%monthShift(2023,Apr,-4)
|
||||||
|
%monthShift(2023,May,-5)
|
||||||
|
%monthShift(2023,Jun,-6)
|
||||||
|
%monthShift(2023,Jul,-7)
|
||||||
|
%monthShift(2023,Aug,-8)
|
||||||
|
%monthShift(2023,Sep,-9)
|
||||||
|
%monthShift(2023,Oct,-10)
|
||||||
|
%monthShift(2023,Nov,-11)
|
||||||
|
%monthShift(2023,Dec,-12)
|
||||||
|
;
|
||||||
|
|
||||||
|
%put
|
||||||
|
%monthShift(2023,January,12)
|
||||||
|
%monthShift(2023,February,11)
|
||||||
|
%monthShift(2023,March,10)
|
||||||
|
%monthShift(2023,April,9)
|
||||||
|
%monthShift(2023,May,8)
|
||||||
|
%monthShift(2023,June,7)
|
||||||
|
%monthShift(2023,July,6)
|
||||||
|
%monthShift(2023,August,5)
|
||||||
|
%monthShift(2023,September,4)
|
||||||
|
%monthShift(2023,October,3)
|
||||||
|
%monthShift(2023,November,2)
|
||||||
|
%monthShift(2023,December,1)
|
||||||
|
;
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 5.** Play with formatting:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%put
|
||||||
|
%monthShift(2023, 1, +1 )
|
||||||
|
%monthShift(2023, 1, +1, ofmt=yymm7. )
|
||||||
|
%monthShift(2023, 1, +1, ofmt=yymmd7.)
|
||||||
|
%monthShift(2023, 1, +1, ofmt=yymms7.)
|
||||||
|
;
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 6.** Read monthly data with `noDSNFERR` option:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
data
|
||||||
|
A202210 A202211 A202212
|
||||||
|
A202301 A202302 A202303
|
||||||
|
A202304 A202305 A202306
|
||||||
|
A202307 A202308 A202309
|
||||||
|
;
|
||||||
|
set sashelp.class;
|
||||||
|
run;
|
||||||
|
|
||||||
|
|
||||||
|
options noDSNFERR;
|
||||||
|
data ALL;
|
||||||
|
set
|
||||||
|
A%monthShift(2023, 9, -12) - A%monthShift(2023, 9)
|
||||||
|
;
|
||||||
|
run;
|
||||||
|
options DSNFERR;
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
## >>> `%translate()` macro: <<< <a name="translate-macro"></a> #######################
|
## >>> `%translate()` macro: <<< <a name="translate-macro"></a> #######################
|
||||||
|
|
||||||
|
|||||||
BIN
baseplus.zip
BIN
baseplus.zip
Binary file not shown.
5932
hist/1.32.0/baseplus.md
Normal file
5932
hist/1.32.0/baseplus.md
Normal file
File diff suppressed because it is too large
Load Diff
BIN
hist/1.32.0/baseplus.zip
Normal file
BIN
hist/1.32.0/baseplus.zip
Normal file
Binary file not shown.
Reference in New Issue
Block a user