mirror of
https://github.com/SASPAC/baseplus.git
synced 2026-01-03 16:10:05 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ff0a008142 | ||
|
|
505f501892 | ||
|
|
9e0afd454c | ||
|
|
236d219a9d | ||
|
|
b40baabfe9 | ||
|
|
e930c2eac8 |
@@ -23,9 +23,13 @@ format x bool.;
|
|||||||
%zipLibrary(sashelp,libOut=work)
|
%zipLibrary(sashelp,libOut=work)
|
||||||
|
|
||||||
%bpPIPE(ls -la ~/)
|
%bpPIPE(ls -la ~/)
|
||||||
|
|
||||||
|
%dirsAndFiles(C:\SAS_WORK\,ODS=work.result)
|
||||||
```
|
```
|
||||||
and more.
|
and more.
|
||||||
|
|
||||||
SHA256 digest for the latest version of `BasePlus`: A6F1977DC4EC22A39DDC7BCE68CF562AF54351A3D385D488EC3067B5A7C0F3CB
|
SHA256 digest for the latest version of `BasePlus`: F*B5BF05531BF78DCEBC436BD93311FED0436D83AA3D106ABFBAD96B04C7D63DF2
|
||||||
|
|
||||||
[**Documentation for BasePlus**](./baseplus.md "Documentation for BasePlus")
|
[**Documentation for BasePlus**](./baseplus.md "Documentation for BasePlus")
|
||||||
|
|
||||||
|
To work with a package use the [**SAS Packages Framework**](https://github.com/yabwon/SAS_PACKAGES/blob/main/README.md "SPFinit").
|
||||||
|
|||||||
254
baseplus.md
254
baseplus.md
@@ -50,13 +50,13 @@
|
|||||||
* [`%LVarNm()` macro](#lvarnm-macro)
|
* [`%LVarNm()` macro](#lvarnm-macro)
|
||||||
* [`%LVarNmLab()` macro](#lvarnmlab-macro)
|
* [`%LVarNmLab()` macro](#lvarnmlab-macro)
|
||||||
* [`%bpPIPE()` macro](#bppipe-macro)
|
* [`%bpPIPE()` macro](#bppipe-macro)
|
||||||
|
* [`%dirsAndFiles()` macro](#dirsandfiles-macro)
|
||||||
|
|
||||||
* [License](#license)
|
* [License](#license)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# The BasePlus package [ver. 1.18.4] <a name="baseplus-package"></a> ###############################################
|
# The BasePlus package [ver. 1.19.1] <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.
|
||||||
@@ -75,7 +75,8 @@ Kudos to all who inspired me to generate this package:
|
|||||||
*Allan Bowe*,
|
*Allan Bowe*,
|
||||||
*Anamaria Calai*,
|
*Anamaria Calai*,
|
||||||
*Michal Ludwicki*,
|
*Michal Ludwicki*,
|
||||||
*Quentin McMullen*.
|
*Quentin McMullen*,
|
||||||
|
*Kurt Bremser*.
|
||||||
|
|
||||||
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).
|
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).
|
||||||
|
|
||||||
@@ -225,6 +226,11 @@ run;
|
|||||||
%bpPIPE(ls -la ~/)
|
%bpPIPE(ls -la ~/)
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
**EXAMPLE 13** Get list of all files and directories from `C:\SAS_WORK\`:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%dirsAndFiles(C:\SAS_WORK\,ODS=work.result)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Package contains:
|
Package contains:
|
||||||
@@ -233,56 +239,61 @@ Package contains:
|
|||||||
3. macro deduplistp
|
3. macro deduplistp
|
||||||
4. macro deduplists
|
4. macro deduplists
|
||||||
5. macro deduplistx
|
5. macro deduplistx
|
||||||
6. macro functionexists
|
6. macro dirsandfiles
|
||||||
7. macro getvars
|
7. macro functionexists
|
||||||
8. macro ldsn
|
8. macro getvars
|
||||||
9. macro ldsnm
|
9. macro ldsn
|
||||||
10. macro lvarnm
|
10. macro ldsnm
|
||||||
11. macro lvarnmlab
|
11. macro lvarnm
|
||||||
12. macro qdeduplistx
|
12. macro lvarnmlab
|
||||||
13. macro qgetvars
|
13. macro qdeduplistx
|
||||||
14. macro qzipevalf
|
14. macro qgetvars
|
||||||
15. macro raincloudplot
|
15. macro qzipevalf
|
||||||
16. macro symdelglobal
|
16. macro raincloudplot
|
||||||
17. macro unziplibrary
|
17. macro symdelglobal
|
||||||
18. macro zipevalf
|
18. macro unziplibrary
|
||||||
19. macro ziplibrary
|
19. macro zipevalf
|
||||||
20. format bool
|
20. macro ziplibrary
|
||||||
21. format boolz
|
21. format bool
|
||||||
22. format ceil
|
22. format boolz
|
||||||
23. format floor
|
23. format ceil
|
||||||
24. format int
|
24. format floor
|
||||||
25. functions arrfill
|
25. format int
|
||||||
26. functions arrfillc
|
26. functions arrfill
|
||||||
27. functions arrmissfill
|
27. functions arrfillc
|
||||||
28. functions arrmissfillc
|
28. functions arrmissfill
|
||||||
29. functions arrmisstoleft
|
29. functions arrmissfillc
|
||||||
30. functions arrmisstoleftc
|
30. functions arrmisstoleft
|
||||||
31. functions arrmisstoright
|
31. functions arrmisstoleftc
|
||||||
32. functions arrmisstorightc
|
32. functions arrmisstoright
|
||||||
33. functions bracketsc
|
33. functions arrmisstorightc
|
||||||
34. functions bracketsn
|
34. functions bracketsc
|
||||||
35. functions catxfc
|
35. functions bracketsn
|
||||||
36. functions catxfi
|
36. functions catxfc
|
||||||
37. functions catxfj
|
37. functions catxfi
|
||||||
38. functions catxfn
|
38. functions catxfj
|
||||||
39. functions deldataset
|
39. functions catxfn
|
||||||
40. functions semicolonc
|
40. functions deldataset
|
||||||
41. functions semicolonn
|
41. functions semicolonc
|
||||||
42. format brackets
|
42. functions semicolonn
|
||||||
43. format semicolon
|
43. format brackets
|
||||||
44. proto qsortincbyprocproto
|
44. format semicolon
|
||||||
45. functions frommissingtonumberbs
|
45. proto qsortincbyprocproto
|
||||||
46. functions fromnumbertomissing
|
46. functions frommissingtonumberbs
|
||||||
47. functions quicksort4notmiss
|
47. functions fromnumbertomissing
|
||||||
48. functions quicksorthash
|
48. functions quicksort4notmiss
|
||||||
49. functions quicksorthashsddv
|
49. functions quicksorthash
|
||||||
50. functions quicksortlight
|
50. functions quicksorthashsddv
|
||||||
|
51. functions quicksortlight
|
||||||
|
|
||||||
*SAS package generated by generatePackage, version 20221215*
|
Package contains additional content, run: %loadPackageAddCnt(BasePlus) to load it
|
||||||
|
or look for the baseplus_AdditionalContent directory in the Packages fileref
|
||||||
|
localization (only if additional content was deployed during the installation process).
|
||||||
|
|
||||||
|
* SAS package generated by generatePackage, version 20230411 *
|
||||||
|
|
||||||
The SHA256 hash digest for package BasePlus:
|
The SHA256 hash digest for package BasePlus:
|
||||||
`A6F1977DC4EC22A39DDC7BCE68CF562AF54351A3D385D488EC3067B5A7C0F3CB`
|
`F*B5BF05531BF78DCEBC436BD93311FED0436D83AA3D106ABFBAD96B04C7D63DF2`
|
||||||
|
|
||||||
---
|
---
|
||||||
# Content description ############################################################################################
|
# Content description ############################################################################################
|
||||||
@@ -3975,6 +3986,149 @@ The basic syntax is the following, the `<...>` means optional parameters:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## >>> `%dirsAndFiles()` macro: <<< <a name="dirsandfiles-macro"></a> #######################
|
||||||
|
|
||||||
|
The `%dirsAndFiles()` macro allows to extract info about all files
|
||||||
|
and subdirectories of a given `root` directory.
|
||||||
|
|
||||||
|
The extracted info may be just a list of files and subdirectories or, if
|
||||||
|
the `details=` parameter is set to 1, additional operating system information
|
||||||
|
is extracted (information is OSS dependent and gives different results for Linux
|
||||||
|
and for Windows)
|
||||||
|
|
||||||
|
The extracted info can be narrowed down to files (`keepFiles=1`) or to
|
||||||
|
directories (`keepDirs=1`) if need be.
|
||||||
|
|
||||||
|
The extracted info can be presented in wide or long format (`longFormat=1`).
|
||||||
|
|
||||||
|
The extracted info for files can be narrowed down to only files with particular
|
||||||
|
extension, for example: `fileExt=sas7bdat`.
|
||||||
|
|
||||||
|
The extracted info can be narrowed down maximal path depth
|
||||||
|
by setting up the `maxDepth=` parameter.
|
||||||
|
|
||||||
|
See examples below for the details.
|
||||||
|
|
||||||
|
### REFERENCES: ###################################################################
|
||||||
|
|
||||||
|
The macro is based on Kurt Bremser's "*Talking to Your Host*" article
|
||||||
|
presented at WUSS 2022 conference.
|
||||||
|
|
||||||
|
The article is available [here](https://communities.sas.com/t5/SAS-User-Groups-Library/WUSS-Presentation-Talking-to-Your-Host/ta-p/838344)
|
||||||
|
and also as an additional content of this package.
|
||||||
|
The paper was awarded the "Best Paper Award - Programming".
|
||||||
|
|
||||||
|
### SYNTAX: ###################################################################
|
||||||
|
|
||||||
|
The basic syntax is the following, the `<...>` means optional parameters:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%dirsAndFiles(
|
||||||
|
root
|
||||||
|
<,ODS=>
|
||||||
|
<,details=>
|
||||||
|
<,keepDirs=>
|
||||||
|
<,keepFiles=>
|
||||||
|
<,longFormat=>
|
||||||
|
<,fileExt=>
|
||||||
|
<,maxDepth=>
|
||||||
|
)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
**Arguments description**:
|
||||||
|
|
||||||
|
1. `root` - *Required*, path to be searched
|
||||||
|
for information.
|
||||||
|
|
||||||
|
* `ODS=work.dirsAndFilesInfo` - *Optional*, output data set,
|
||||||
|
name of a dataset to store information.
|
||||||
|
|
||||||
|
* `details=0` - *Optional*, indicates if detailed info
|
||||||
|
will be collected, `1` = yes, `0` = no.
|
||||||
|
|
||||||
|
* `keepDirs=1` - *Optional*, indicates if directories info
|
||||||
|
will be collected, `1` = yes, `0` = no.
|
||||||
|
|
||||||
|
* `keepFiles=1` - *Optional*, indicates if files info
|
||||||
|
will be collected, `1` = yes, `0` = no.
|
||||||
|
|
||||||
|
* `longFormat=0` - *Optional*, indicates if output be
|
||||||
|
in long format, `1` = yes, `0` = no.
|
||||||
|
|
||||||
|
* `fileExt=` - *Optional*, if not missing then indicates
|
||||||
|
file extension to filter out results.
|
||||||
|
|
||||||
|
* `maxDepth=0` - *Optional*, if not zero then indicates
|
||||||
|
maximum depth of search in the root path.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### EXAMPLES AND USECASES: ####################################################
|
||||||
|
|
||||||
|
**EXAMPLE 1.** Get list of files and directories:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%dirsAndFiles(C:\SAS_WORK\,ODS=work.result1)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 2.** Get detailed info:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%dirsAndFiles(C:\SAS_WORK\,ODS=work.result2,details=1)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 3.** Get only files info:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%dirsAndFiles(C:\SAS_WORK\,ODS=work.result3,keepDirs=0)
|
||||||
|
|
||||||
|
%dirsAndFiles(C:\SAS_WORK\,ODS=work.result5,keepDirs=0,details=1)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 4.** Get only directories info:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%dirsAndFiles(C:\SAS_WORK\,ODS=work.result4,keepFiles=0)
|
||||||
|
|
||||||
|
%dirsAndFiles(C:\SAS_WORK\,ODS=work.result6,keepFiles=0,details=1)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 5.** Filter out by `sas` extension:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%dirsAndFiles(~/,ODS=work.result7,fileExt=sas)
|
||||||
|
|
||||||
|
%dirsAndFiles(~/,ODS=work.result8,fileExt=sas,details=1)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 6.** Keep result in the long format:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%dirsAndFiles(~/,ODS=work.result9,details=1,longFormat=1)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 7.** Get info for maximum depth of 2:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%dirsAndFiles(C:\SAS_WORK\,ODS=work.result10,details=1,maxDepth=2)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 8.** How locked/unavailable files are handled:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%dirsAndFiles(%sysfunc(pathname(WORK)),ODS=work.result11,details=1)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
**EXAMPLE 9.** Not existing directory:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
|
||||||
|
%dirsAndFiles(%sysfunc(pathname(WORK))/noSuchDir,ODS=work.result12,details=1)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## License ####################################################################
|
## License ####################################################################
|
||||||
|
|
||||||
|
|||||||
BIN
baseplus.zip
BIN
baseplus.zip
Binary file not shown.
BIN
hist/1.19.0/baseplus.zip
Normal file
BIN
hist/1.19.0/baseplus.zip
Normal file
Binary file not shown.
BIN
hist/1.19.1/baseplus.zip
Normal file
BIN
hist/1.19.1/baseplus.zip
Normal file
Binary file not shown.
Reference in New Issue
Block a user