mirror of
https://github.com/yabwon/SAS_PACKAGES.git
synced 2025-12-11 03:04:35 +00:00
10
README.md
10
README.md
@@ -21,7 +21,7 @@ Short description of the SAS Packages Framework macros can be found [here](https
|
||||
- [SAS Global Forum 2020 V.E.](https://www.youtube.com/watch?v=qCkb-bx0Dv8&t=0s "SGF2020") (April 2020)
|
||||
- [Sasensei International Dojo](https://www.youtube.com/watch?v=BFhdUBQgjYQ&t=0s "SID no. 1") (April 2020)
|
||||
- [SAS dla Administratorów i Praktyków 2020](https://www.youtube.com/watch?v=mXuep2k48Z8&feature=youtu.be&t=0s "SASAiP2020") (October 2020, in Polish)
|
||||
- [Boston Area SAS Users Group webinar](https://us02web.zoom.us/rec/share/p6ZpCsvc5YZDQGpLOOLOB4zyNGA4vjfjJcNhwaGQ7jKKR00Z_bmeCcBkcwkut6Pr.Q6UoueYAOcv6dPQf "BASUG") (November 2020)
|
||||
- [Boston Area SAS Users Group webinar](https://www.basug.org/videos?wix-vod-video-id=78067e61413d43d3a6951974b3bc3014&wix-vod-comp-id=comp-klv807gt "BASUG") (November 2020)
|
||||
- [SAS Global Forum 2021 V.E.](https://www.youtube.com/watch?v=hqexaQtGw88 "SGF2021") (May 20th, 2021)
|
||||
---
|
||||
|
||||
@@ -144,7 +144,7 @@ SHA256 digest for macroArray: 849629D3AF3FE3AB45D86990E303F1D5E4D5F9F31C8ED6864C
|
||||
[Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray")
|
||||
|
||||
|
||||
- **BasePlus**\[0.991\] adds a bunch of functionalities I am missing in BASE SAS, such as:
|
||||
- **BasePlus**\[0.992\] adds a bunch of functionalities I am missing in BASE SAS, such as:
|
||||
```sas
|
||||
call arrMissToRight(myArray);
|
||||
call arrFillMiss(17, myArray);
|
||||
@@ -158,16 +158,16 @@ format x bool.;
|
||||
|
||||
%put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_);
|
||||
```
|
||||
SHA256 digest for BasePlus: A321A4BC54D444B82575EC5D443553A096557AD69DC171D578A330277E67637A
|
||||
SHA256 digest for BasePlus: C9D26CAC2504634EF25F02B5BD04596B2F873E3C25E8CEDDD7F496A78B184E9F
|
||||
|
||||
[Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus")
|
||||
|
||||
- **GSM** (Generate Secure Macros)\[0.11\], package allows
|
||||
- **GSM** (Generate Secure Macros)\[0.13\], package allows
|
||||
to create secured macros stored in SAS Proc FCMP functions.
|
||||
The dataset with functions can be shared between different operating systems
|
||||
and allows to generate macros on site without showing their code.
|
||||
|
||||
SHA256 digest for GSM: 4322D79C382B9D58EF5E51AFD0856331F8B38B1B35AC21295DADFC43F81B2AF8
|
||||
SHA256 digest for GSM: 2FC239B5A2216D073826125999BFD64FBA32BFEA3EE6EA2B22EC64E8C1B04144
|
||||
|
||||
[Documentation for GSM](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/gsm.md "Documentation for GSM")
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ SHA256 digest for macroArray: 849629D3AF3FE3AB45D86990E303F1D5E4D5F9F31C8ED6864C
|
||||
|
||||
---
|
||||
|
||||
- **BasePlus**\[0.991\] adds a bunch of functionalities I am missing in BASE SAS, such as:
|
||||
- **BasePlus**\[0.992\] adds a bunch of functionalities I am missing in BASE SAS, such as:
|
||||
```sas
|
||||
call arrMissToRight(myArray);
|
||||
call arrFillMiss(17, myArray);
|
||||
@@ -104,18 +104,18 @@ format x bool.;
|
||||
|
||||
%put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_);
|
||||
```
|
||||
SHA256 digest for BasePlus: A321A4BC54D444B82575EC5D443553A096557AD69DC171D578A330277E67637A
|
||||
SHA256 digest for BasePlus: C9D26CAC2504634EF25F02B5BD04596B2F873E3C25E8CEDDD7F496A78B184E9F
|
||||
|
||||
[Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus")
|
||||
|
||||
---
|
||||
|
||||
- **GSM** (Generate Secure Macros)\[0.11\], package allows
|
||||
- **GSM** (Generate Secure Macros)\[0.13\], package allows
|
||||
to create secured macros stored in SAS Proc FCMP functions.
|
||||
The dataset with functions can be shared between different operating systems
|
||||
and allows to generate macros on site without showing their code.
|
||||
|
||||
SHA256 digest for GSM: 4322D79C382B9D58EF5E51AFD0856331F8B38B1B35AC21295DADFC43F81B2AF8
|
||||
SHA256 digest for GSM: 2FC239B5A2216D073826125999BFD64FBA32BFEA3EE6EA2B22EC64E8C1B04144
|
||||
|
||||
[Documentation for GSM](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/gsm.md "Documentation for GSM")
|
||||
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
/* 20210818 */
|
||||
BasePlus: C9D26CAC2504634EF25F02B5BD04596B2F873E3C25E8CEDDD7F496A78B184E9F
|
||||
|
||||
/* 20210726 */
|
||||
GSM: 2FC239B5A2216D073826125999BFD64FBA32BFEA3EE6EA2B22EC64E8C1B04144
|
||||
|
||||
/* 20210722 */
|
||||
GSM: 311BCF510B7B189AE9A75C56C4D2F99F844114CC5AD32329FAD690BA1F10422A
|
||||
|
||||
/* 20210719 */
|
||||
GSM: 4322D79C382B9D58EF5E51AFD0856331F8B38B1B35AC21295DADFC43F81B2AF8
|
||||
|
||||
|
||||
@@ -41,12 +41,13 @@
|
||||
* [`semicolonN()` function](#semicolonn-function)
|
||||
* [`%zipEvalf()` macro](#zipevalf-macro)
|
||||
* [`%QzipEvalf()` macro](#qzipevalf-macro)
|
||||
* [`%functionExists()` macro](#functionexists-macro)
|
||||
|
||||
* [License](#license)
|
||||
|
||||
---
|
||||
|
||||
# The BasePlus package [ver. 0.991] <a name="baseplus-package"></a> ###############################################
|
||||
# The BasePlus package [ver. 0.992] <a name="baseplus-package"></a> ###############################################
|
||||
|
||||
The **BasePlus** package implements useful
|
||||
functions and functionalities I miss in the BASE SAS.
|
||||
@@ -61,7 +62,8 @@ Kudos to all who inspired me to generate this package:
|
||||
*Mark Keintz*,
|
||||
*Paul Dorfman*,
|
||||
*Richard DeVenezia*,
|
||||
*Christian Graffeuille*.
|
||||
*Christian Graffeuille*,
|
||||
*Allan Bowe*.
|
||||
|
||||
---
|
||||
|
||||
@@ -179,52 +181,54 @@ Kudos to all who inspired me to generate this package:
|
||||
---
|
||||
|
||||
Package contains:
|
||||
1. macro deduplistc
|
||||
2. macro deduplistp
|
||||
3. macro deduplists
|
||||
4. macro deduplistx
|
||||
5. macro getvars
|
||||
6. macro qdeduplistx
|
||||
7. macro qgetvars
|
||||
8. macro qzipevalf
|
||||
9. macro symdelglobal
|
||||
10. macro zipevalf
|
||||
11. format bool
|
||||
12. format boolz
|
||||
13. format ceil
|
||||
14. format floor
|
||||
15. format int
|
||||
16. functions arrfill
|
||||
17. functions arrfillc
|
||||
18. functions arrmissfill
|
||||
19. functions arrmissfillc
|
||||
20. functions arrmisstoleft
|
||||
21. functions arrmisstoleftc
|
||||
22. functions arrmisstoright
|
||||
23. functions arrmisstorightc
|
||||
24. functions bracketsc
|
||||
25. functions bracketsn
|
||||
26. functions catxfc
|
||||
27. functions catxfi
|
||||
28. functions catxfj
|
||||
29. functions catxfn
|
||||
30. functions deldataset
|
||||
31. functions semicolonc
|
||||
32. functions semicolonn
|
||||
33. format brackets
|
||||
34. format semicolon
|
||||
35. proto qsortincbyprocproto
|
||||
36. functions frommissingtonumberbs
|
||||
37. functions fromnumbertomissing
|
||||
38. functions quicksort4notmiss
|
||||
39. functions quicksorthash
|
||||
40. functions quicksorthashsddv
|
||||
41. functions quicksortlight
|
||||
1. macro deduplistc
|
||||
2. macro deduplistp
|
||||
3. macro deduplists
|
||||
4. macro deduplistx
|
||||
5. macro functionexists
|
||||
6. macro getvars
|
||||
7. macro qdeduplistx
|
||||
8. macro qgetvars
|
||||
9. macro qzipevalf
|
||||
10. macro symdelglobal
|
||||
11. macro zipevalf
|
||||
12. format bool
|
||||
13. format boolz
|
||||
14. format ceil
|
||||
15. format floor
|
||||
16. format int
|
||||
17. functions arrfill
|
||||
18. functions arrfillc
|
||||
19. functions arrmissfill
|
||||
20. functions arrmissfillc
|
||||
21. functions arrmisstoleft
|
||||
22. functions arrmisstoleftc
|
||||
23. functions arrmisstoright
|
||||
24. functions arrmisstorightc
|
||||
25. functions bracketsc
|
||||
26. functions bracketsn
|
||||
27. functions catxfc
|
||||
28. functions catxfi
|
||||
29. functions catxfj
|
||||
30. functions catxfn
|
||||
31. functions deldataset
|
||||
32. functions semicolonc
|
||||
33. functions semicolonn
|
||||
34. format brackets
|
||||
35. format semicolon
|
||||
36. proto qsortincbyprocproto
|
||||
37. functions frommissingtonumberbs
|
||||
38. functions fromnumbertomissing
|
||||
39. functions quicksort4notmiss
|
||||
40. functions quicksorthash
|
||||
41. functions quicksorthashsddv
|
||||
42. functions quicksortlight
|
||||
|
||||
|
||||
*SAS package generated by generatePackage, version 20210109*
|
||||
|
||||
The SHA256 hash digest for package BasePlus:
|
||||
`A321A4BC54D444B82575EC5D443553A096557AD69DC171D578A330277E67637A`
|
||||
`C9D26CAC2504634EF25F02B5BD04596B2F873E3C25E8CEDDD7F496A78B184E9F`
|
||||
|
||||
---
|
||||
# Content description ############################################################################################
|
||||
@@ -2929,7 +2933,42 @@ run;
|
||||
|
||||
---
|
||||
|
||||
## >>> `%functionExists()` macro: <<< <a name="functionexists-macro"></a> #######################
|
||||
|
||||
The functionExists() macro function tests
|
||||
if given funcion exists in the SAS session.
|
||||
The `sashelp.vfunc` view is used.
|
||||
|
||||
See examples below for the details.
|
||||
|
||||
The `%functionExists()` macro executes like a pure macro code.
|
||||
|
||||
The function is a result of cooperation with [Allan Bowe](https://www.linkedin.com/in/allanbowe/)
|
||||
|
||||
### SYNTAX: ###################################################################
|
||||
|
||||
The basic syntax is the following, the `<...>` means optional parameters:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||
%functionExists(
|
||||
funName
|
||||
)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
**Arguments description**:
|
||||
|
||||
1. `funName` - *Required*, the name of the function
|
||||
existence of which you are testing.
|
||||
|
||||
### EXAMPLES AND USECASES: ####################################################
|
||||
|
||||
**EXAMPLE 1.** Test if function exists:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||
%put %functionExists(HASHING);
|
||||
|
||||
%put %functionExists(COSsinLOG);
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
---
|
||||
|
||||
|
||||
## License ####################################################################
|
||||
|
||||
Binary file not shown.
@@ -8,7 +8,7 @@
|
||||
---
|
||||
|
||||
|
||||
# The GSM package [ver. 0.11] <a name="gsm-package"></a> ###############################################
|
||||
# The GSM package [ver. 0.13] <a name="gsm-package"></a> ###############################################
|
||||
|
||||
The **GSM** (a.k.a. *Generate Secure Macros*) package allows
|
||||
to create secured macros stored in SAS Proc FCMP functions.
|
||||
@@ -68,7 +68,7 @@ Required SAS Components:
|
||||
* SAS package generated by generatePackage, version 20210528 *
|
||||
|
||||
The SHA256 hash digest for package BasePlus:
|
||||
`4322D79C382B9D58EF5E51AFD0856331F8B38B1B35AC21295DADFC43F81B2AF8`
|
||||
`2FC239B5A2216D073826125999BFD64FBA32BFEA3EE6EA2B22EC64E8C1B04144`
|
||||
|
||||
|
||||
## >>> `%GSM()` macro: <<< <a name="gsm-macro"></a> #######################
|
||||
|
||||
BIN
packages/gsm.zip
BIN
packages/gsm.zip
Binary file not shown.
Reference in New Issue
Block a user