Compare commits

...

7 Commits

Author SHA1 Message Date
yabwon
252c15b1c3 SAS Packages Framework, version 20201014
**SAS Packages Framework**, version 20201014:
- Small change in displaying help information in the log.

Packages recompiled with new version of SAS Packages Framework:
- `SQLinDS` (version 2.2)
- `macroArray` (version 0.5)
- `DFA` (version 0.2)
- `BasePlus` (version 0.7)
- `dynMacroArray` (version 0.2)
2020-10-14 15:06:09 +02:00
yabwon
a77e99adbe SAS Packages Framework, version 20201010
**SAS Packages Framework**, version 20201010:
- Improvement in testing facility for the framework.
- Change in SAS components testing, missing component issues a *warning* instead of *error*.
- Documentation updated, `SPFinit.md` file added.
- Minor bug fixes.

Packages recompiled with new version of SAS Packages Framework:
- `SQLinDS` (version 2.2)
- `macroArray` (version 0.5)
- `DFA` (version 0.2)
- `BasePlus` (version 0.7)
- documentation updated
- new macro `%symdelGlobal()` added
- `dynMacroArray` (version 0.2)
2020-10-11 21:18:40 +02:00
yabwon
7231049666 SAS Packages Framework, version 20201010
**SAS Packages Framework**, version 20201010:
- Improvement in testing facility for the framework.
- Change in SAS components testing, missing component issues a *warning* instead of *error*.
- Documentation updated, `SPFinit.md` file added.
- Minor bug fixes.

Packages recompiled with new version of SAS Packages Framework:
- `SQLinDS` (version 2.2)
- `macroArray` (version 0.5)
- `DFA` (version 0.2)
- `BasePlus` (version 0.7)
  - documentation updated
  - new macro `%symdelGlobal()` added
- `dynMacroArray` (version 0.2)
2020-10-11 13:12:47 +02:00
Bart Jablonski
2f743475f6 SAS Packages Framework, version 20201010
**SAS Packages Framework**, version 20201010:
- Improvement in testing facility for the framework.
- Change in SAS components testing, missing component issues a *warning* instead of *error*.
- Documentation updated, `SPFinit.md` file added.
- Minor bug fixes.

Packages recompiled with new version of SAS Packages Framework:
- `SQLinDS` (version 2.2)
- `macroArray` (version 0.5)
- `DFA` (version 0.2)
- `BasePlus` (version 0.7)
  - documentation updated
  - new macro `%symdelGlobal()` added
- `dynMacroArray` (version 0.2)
2020-10-11 12:33:11 +02:00
yabwon
cb59027079 Merge pull request #1 from allanbowe/patch-1
Update README.md
2020-10-10 20:05:12 +02:00
Allan Bowe
a93881f5d2 Update README.md 2020-10-10 19:46:29 +02:00
yabwon
64e7dafa72 SAS Packages Framework, version 20201010
**SAS Packages Framework**, version 20201010:
- Improvement in testing facility for the framework.
- Change in SAS components testing, missing component issues a *warning* instead of *error*.
- Documentation updated, `SPFinit.md` file added.
- Minor bug fixes.

Packages recompiled with new version of SAS Packages Framework:
- `SQLinDS` (version 2.2)
- `macroArray` (version 0.5)
- `DFA` (version 0.2)
- `BasePlus` (version 0.7)
  - documentation updated
  - new macro `%symdelGlobal()` added
- `dynMacroArray` (version 0.2)
2020-10-10 19:34:58 +02:00
15 changed files with 297 additions and 48 deletions

View File

@@ -6,7 +6,7 @@ A **SAS package** is an automatically generated, single, stand alone *zip* file
The *purpose of a package* is to be a simple, and easy to access, code sharing medium, which will allow: on the one hand, to separate the code complex dependencies created by the developer from the user experience with the final product and, on the other hand, reduce developer's and user's unnecessary frustration related to a remote deployment process.
In this repository we are presenting the **SAS Packages Framework** which allows to develop and use SAS packages. The latest version of SPF is **`20201010`**.
In this repository we are presenting the **SAS Packages Framework** which allows to develop and use SAS packages. The latest version of SPF is **`20201014`**.
To get started with SAS Packages try this [**`Getting Started with SAS Packages`**](https://github.com/yabwon/SAS_PACKAGES/blob/master/SPF/Documentation/Getting_Started_with_SAS_Packages.pdf "Getting Started with SAS Packages") presentation (see the `./SPF/Documentation` directory).
@@ -14,7 +14,7 @@ The documentation and more advance reading would be the [**`SAS(r) packages - th
**General overview video:**
- [SAS Global Forum 2020 V.E.](https://www.youtube.com/watch?v=qCkb-bx0Dv8&t=0s "SGF2020")
- [Sasensei Internationa Dojo](https://www.youtube.com/watch?v=BFhdUBQgjYQ&t=0s "SID no. 1")
- [Sasensei International Dojo](https://www.youtube.com/watch?v=BFhdUBQgjYQ&t=0s "SID no. 1")
### The User:
To use a package:
@@ -62,6 +62,14 @@ To create your own package:
**Update**\[July 30th, 2020\]**:** All components of SAS Packages Framework are now in one file `SPFinit.sas` (located in the `./SPF` directory). Documentation moved to `./SPF/Documentation` directory. Packages zip files moved to `./packages` directory.
## Where the SAS Packages Framework is used:
This is a list of locations where the SAS Packages Framework is used. If you want to share that you are using SPF let me know and I'll update the list.
The List:
- Europe
- Poland
- Warsaw
## Available packages:
Currently the following packages are available (see the `./packages` directory):
@@ -71,13 +79,13 @@ Currently the following packages are available (see the `./packages` directory):
set %SQL(select * from sashelp.class order by age);
run;
```
SHA256 digest for SQLinDS: D76B85EFF129678B45233FB397A2BDB8D23F234013BD821D55141CA18DD5589E
SHA256 digest for SQLinDS: F070926B26504F9F65384EE3FB84E2E54B223FDAB71EDD61B11B865262C2E5DD
[Documentation for SQLinDS](https://github.com/yabwon/SAS_PACKAGES/blob/master/packages/sqlinds.md "Documentation for SQLinDS")
- **DFA** (Dynamic Function Arrays)\[0.2\], contains set of macros and FCMP functions which implement: a dynamically allocated array, a stack, a fifo queue, an ordered stack, and a priority queue, run `%helpPackage(DFA,createDFArray)` to find examples.
SHA256 digest for DFA: 43AE8BB0FC7D2121AABDD8DB8AD2C3F226C7D2699CAACC171FCB72B75D9141FA
SHA256 digest for DFA: 7E9042867ED9C4BD2F27B3CD9180701CE619E301C13F5BD82DB46547616D17DF
- **macroArray**\[0.5\], implementation of an array concept in a macrolanguage, e.g.
@@ -99,7 +107,7 @@ SHA256 digest for DFA: 43AE8BB0FC7D2121AABDD8DB8AD2C3F226C7D2699CAACC171FCB72B75
which = 1:H:2
);
```
SHA256 digest for macroArray: 085A0F3D544EAF01378BB6C6B4F429123F8BFEEFC76013D1B05DFADFEE3FA661
SHA256 digest for macroArray: 519B1CE64F66F8498B10F5EB253BB45FC860E3F7868FCEB97ABF45C96F30716D
[Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/master/packages/macroarray.md "Documentation for macroArray")
@@ -118,12 +126,12 @@ format x bool.;
%put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_);
```
SHA256 digest for BasePlus: 54232DA5E253EB58E49A09DD0DF244F433B61983D921E27F2E4FFB1EA73A5C6D
SHA256 digest for BasePlus: 75B8D2BF718E035FEFC0D24504A6EBB9893883E2DF5D0FCD2D8ADD28456CFEBD
[Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/master/packages/baseplus.md "Documentation for BasePlus")
- **dynMacroArray**\[0.2\], set of macros (wrappers for a hash table) emulating dynamic array in the data step (macro predecessor of DFA)
SHA256 digest for dynMacroArray: 281D9493564A8185B858D9525AA7D9D5343E42414AAB1D8A00AE85AB80882661
SHA256 digest for dynMacroArray: FF111DA330ACE57BAE8C9B7890839045B691A17414AE04CBD49C66BCD9663B21
### ======

View File

@@ -1,3 +1,27 @@
## This is short SAS PAckages Framework help information
A **SAS package** is an automatically generated, single, stand alone *zip* file containing organised and ordered code structures, created by the developer and extended with additional automatically generated "driving" files (i.e. description, metadata, load, unload, and help files).
The *purpose of a package* is to be a simple, and easy to access, code sharing medium, which will allow: on the one hand, to separate the code complex dependencies created by the developer from the user experience with the final product and, on the other hand, reduce developer's and user's unnecessary frustration related to a remote deployment process.
In this repository we are presenting the **SAS Packages Framework** which allows to develop and use SAS packages. The latest version of SPF is **`20201014`**.
To get started with SAS Packages try this [**`Getting Started with SAS Packages`**](https://github.com/yabwon/SAS_PACKAGES/blob/master/SPF/Documentation/Getting_Started_with_SAS_Packages.pdf "Getting Started with SAS Packages") presentation (see the `./SPF/Documentation` directory).
The documentation and more advance reading would be the [**`SAS(r) packages - the way to share (a how to)- Paper 4725-2020 - extended.pdf`**](https://github.com/yabwon/SAS_PACKAGES/blob/master/SPF/Documentation/SAS(r)%20packages%20-%20the%20way%20to%20share%20(a%20how%20to)-%20Paper%204725-2020%20-%20extended.pdf "SAS packages - the way to share") article (see the `./SPF/Documentation` directory).
*Note:* Filenames references `packages` and `package` are reserved keywords.
The first one should be used to point local folder with packages.
The second is used internally by macros.
Do not use them otherwise than, e.g.
`filename packages "C:/SAS_PACKAGES";`
since it may affect stability of the framework.
--------------------------------------------------------------------------------------------
## This is short help information for the `installPackage` macro
--------------------------------------------------------------------------------------------
@@ -56,7 +80,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages;
%helpPackage(SQLinDS) %* get help about the package;
%loadPackage(SQLinDS) %* load the package content into the SAS session;
%unloadPackage(SQLinDS) %* unload the package content from the SAS session;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## This is short help information for the `helpPackage` macro
@@ -199,7 +223,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages;
%helpPackage(SQLinDS) %* get help about the package;
%loadPackage(SQLinDS) %* load the package content into the SAS session;
%unloadPackage(SQLinDS) %* unload the package content from the SAS session;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## This is short help information for the `loadPackageS` macro
@@ -313,7 +337,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages;
%helpPackage(SQLinDS) %* get help about the package;
%loadPackage(SQLinDS) %* load the package content into the SAS session;
%unloadPackage(SQLinDS) %* unload the package content from the SAS session;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## This is short help information for the `listPackages` macro
@@ -354,7 +378,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages;
%include packages(SPFinit.sas); %* enable the framework;
%listPackages() %* list available packages;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
### This is short help information for the `verifyPackage` macro
@@ -443,4 +467,215 @@ filename packages "C:/SAS_PACKAGES"; %* set-up a directory for packages;
- `packages=` Location of other packages for testing
if there are dependencies in loading the package.
-------------------------------------------------------------------------------
Locate all files with code in base folder, i.e. at `filesLocation` directory.
Remember to prepare the `description.sas` file for you package.
The colon (:) is a field separator and is restricted
in lines of the header part.
The file should contain the following obligatory information:
--------------------------------------------------------------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
/*>> **HEADER** <<*/
Type: Package
Package: PackageName
Title: A title/brief info for log note about your package.
Version: X.Y
Author: Firstname1 Lastname1 (xxxxxx1@yyyyy.com), Firstname2 Lastname2 (xxxxxx2@yyyyy.com)
Maintainer: Firstname Lastname (xxxxxx@yyyyy.com)
License: MIT
Encoding: UTF8
Required: "Base SAS Software" :%*optional, COMMA separated, QUOTED list, names of required SAS products, values must be like from proc setinit;run; output *;
ReqPackages: "macroArray (0.1)", "DFA (0.1)" :%*optional, COMMA separated, QUOTED list, names of required packages *;
/*>> **DESCRIPTION** <<*/
/*>> All the text below will be used in help <<*/
DESCRIPTION START:
Xxxxxxxxxxx xxxxxxx xxxxxx xxxxxxxx xxxxxxxx. Xxxxxxx
xxxx xxxxxxxxxxxx xx xxxxxxxxxxx xxxxxx. Xxxxxxx xxx
xxxx xxxxxx. Xxxxxxxxxxxxx xxxxxxxxxx xxxxxxx.
DESCRIPTION END:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--------------------------------------------------------------------------------------------
Name of the `type` of folder and `files.sas` inside must be in the _low_ case letters.
If order of loading is important, the sequential number
can be used to order multiple types in the way you wish.
The "tree structure" of the folder could be for example as follows:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
<packageName>
..
|
+-000_libname [one file one libname]
| |
| +-abc.sas [a file with a code creating libname ABC]
|
+-001_macro [one file one macro]
| |
| +-hij.sas [a file with a code creating macro HIJ]
| |
| +-klm.sas [a file with a code creating macro KLM]
|
+-002_function [one file one function,
| | option OUTLIB= should be: work.&packageName.fcmp.package
| | option INLIB= should be: work.&packageName.fcmp
| | (both literally with macrovariable name and "fcmp" sufix)]
| |
| +-efg.sas [a file with a code creating function EFG, _with_ "Proc FCMP" header]
|
+-003_functions [mind the S at the end!, one file one function,
| | only plain code of the function, without "Proc FCMP" header]
| |
| +-ijk.sas [a file with a code creating function EFG, _without_ "Proc FCMP" header]
|
+-004_format [one file one format,
| | option LIB= should be: work.&packageName.format
| | (literally with macrovariable name and "format" sufix)]
| |
| +-efg.sas [a file with a code creating format EFG and informat EFG]
|
+-005_data [one file one dataset]
| |
| +-abc.efg.sas [a file with a code creating dataset EFG in library ABC]
|
+-006_exec [so called "free code", content of the files will be printed
| | to the log before execution]
| |
| +-<no file, in this case folder may be skipped>
|
+-007_format [if your codes depend each other you can order them in folders,
| | e.g. code from 003_... will be executed before 006_...]
| |
| +-abc.sas [a file with a code creating format ABC,
| used in the definition of the format EFG]
+-008_function
| |
| +-<no file, in this case folder may be skipped>
|
|
+-009_lazydata [one file one dataset]
| |
| +-klm.sas [a file with a code creating dataset klm in library work
| it will be created only if user request it by using:
| %loadPackage(packagename, lazyData=klm)
| multiple elements separated by space are allowed
| an asterisk(*) means "load all data"]
|
+-010_imlmodule [one file one IML module,
| | only plain code of the module, without "Proc IML" header]
| |
| +-abc.sas [a file with a code creating IML module ABC, _without_ "Proc IML" header]
|
+-<sequential number>_<type [in lower case]>
|
+-...
|
+-00n_clean [if you need to clean something up after exec file execution,
| | content of the files will be printed to the log before execution]
| |
| +-<no file, in this case folder may be skipped>
+-...
...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------
## Some more examples #############################################################
### Example 1. ###################################################################
Enabling the SAS Package Framework
and loading the SQLinDS package from the local directory.
Assume that the `SPFinit.sas` file and the SQLinDS
package (sqlinds.zip file) are located in
the "C:/SAS_PACKAGES/" folder.
Run the following code in your SAS session:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages;
%include packages(SPFinit.sas); %* enable the framework;
%helpPackage(SQLinDS) %* get help about the package;
%loadPackage(SQLinDS) %* load the package content into the SAS session;
%unloadPackage(SQLinDS) %* unload the package content from the SAS session;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
### Example 2. ###################################################################
Enabling the SAS Package Framework
from the local directory and installing & loading
the SQLinDS package from the Internet.
Assume that the `SPFinit.sas` file
is located in the "C:/SAS_PACKAGES/" folder.
Run the following code in your SAS session:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages;
%include packages(SPFinit.sas); %* enable the framework;
%installPackage(SQLinDS) %* install the package from the Internet;
%helpPackage(SQLinDS) %* get help about the package;
%loadPackage(SQLinDS) %* load the package content into the SAS session;
%unloadPackage(SQLinDS) %* unload the package content from the SAS session;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
### Example 3. ###################################################################
Enabling the SAS Package Framework
and installing & loading the SQLinDS package
from the Internet.
Run the following code in your SAS session:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
filename packages "%sysfunc(pathname(work))"; %* setup WORK as a temporary directory for packages;
filename spfinit url "https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/master/SPFinit.sas";
%include spfinit; %* enable the framework;
%installPackage(SQLinDS) %* install the package from the Internet;
%helpPackage(SQLinDS) %* get help about the package;
%loadPackage(SQLinDS) %* load the package content into the SAS session;
%unloadPackage(SQLinDS) %* unload the package content from the SAS session;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
### Example 4. ###################################################################
Assume that the `SPFinit.sas` file and the SQLinDS package (`sqlinds.zip` file)
are located in the "C:/SAS_PACKAGES/" folder.
In case when user SAS session does not support ZIP fileref
the following solution could be used.
Unzip the `packagename.zip` content into the `packagename.disk` folder
and run macros with the following options: ;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
%loadPackage(packageName,zip=disk,options=)
%helpPackage(packageName,,zip=disk,options=) %* mind the double comma!! ;
%unloadPackage(packageName,zip=disk,options=)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
### Example 5. ###################################################################
Enabling the SAS Package Framework from the local directory
and installing the SQLinDS package from the Internet.
Assume that the `SPFinit.sas` file is located in
the "C:/SAS_PACKAGES/" folder.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages;
%include packages(SPFinit.sas); %* enable the framework;
%installPackage(SQLinDS); %* install package;
%installPackage(SQLinDS); %* overwrite already installed package;
%installPackage(SQLinDS,replace=0); %* prevent overwrite installed package;
%installPackage(NotExistingPackage); %* handling with not existing package;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-------------------------------------------------------------------------------

View File

@@ -42,7 +42,7 @@
- to unload, or
- to generate SAS packages.
Version 20201010.
Version 20201014.
See examples below.
A SAS package is a zip file containing a group of files
@@ -81,7 +81,7 @@
*/
)/secure
/*** HELP END ***/
des = 'Macro to load SAS package, version 20201010. Run %loadPackage() for help info.'
des = 'Macro to load SAS package, version 20201014. Run %loadPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -96,7 +96,7 @@ des = 'Macro to load SAS package, version 20201010. Run %loadPackage() for help
%put ### This is short help information for the `loadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to *load* SAS packages, version `20201010` #;
%put # Macro to *load* SAS packages, version `20201014` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -250,7 +250,7 @@ des = 'Macro to load SAS package, version 20201010. Run %loadPackage() for help
*/
)/secure
/*** HELP END ***/
des = 'Macro to unload SAS package, version 20201010. Run %unloadPackage() for help info.'
des = 'Macro to unload SAS package, version 20201014. Run %unloadPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -265,7 +265,7 @@ des = 'Macro to unload SAS package, version 20201010. Run %unloadPackage() for h
%put ### This is short help information for the `unloadPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to unload SAS packages, version `20201010` #;
%put # Macro to unload SAS packages, version `20201014` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -388,7 +388,7 @@ des = 'Macro to unload SAS package, version 20201010. Run %unloadPackage() for h
*/
)/secure
/*** HELP END ***/
des = 'Macro to get help about SAS package, version 20201010. Run %helpPackage() for help info.'
des = 'Macro to get help about SAS package, version 20201014. Run %helpPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -403,7 +403,7 @@ des = 'Macro to get help about SAS package, version 20201010. Run %helpPackage()
%put ### This is short help information for the `helpPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to get help about SAS packages, version `20201010` #;
%put # Macro to get help about SAS packages, version `20201014` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -512,7 +512,7 @@ TODO:
- add MD5(&packageName.) value hash instead "package" word in filenames [DONE]
*/
/* Macros to install SAS packages, version 20201010 */
/* Macros to install SAS packages, version 20201014 */
/* A SAS package is a zip file containing a group of files
with SAS code (macros, functions, data steps generating
data, etc.) wrapped up together and %INCLUDEed by
@@ -528,7 +528,7 @@ TODO:
/secure
minoperator
/*** HELP END ***/
des = 'Macro to install SAS package, version 20201010. Run %%installPackage() for help info.'
des = 'Macro to install SAS package, version 20201014. Run %%installPackage() for help info.'
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
%do;
@@ -543,7 +543,7 @@ des = 'Macro to install SAS package, version 20201010. Run %%installPackage() fo
%put ### This is short help information for the `installPackage` macro #;
%put #--------------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to install SAS packages, version `20201010` #;
%put # Macro to install SAS packages, version `20201014` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -836,7 +836,7 @@ des = 'Macro to install SAS package, version 20201010. Run %%installPackage() fo
/* Macro to list SAS packages in packages folder.
Version 20201010
Version 20201014
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -856,7 +856,7 @@ des = 'Macro to install SAS package, version 20201010. Run %%installPackage() fo
%macro listPackages()/PARMBUFF
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20201010.'
des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20201014.'
;
%if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then
%do;
@@ -871,7 +871,7 @@ des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HE
%put ### This is short help information for the `listPackages` macro #;
%put #-----------------------------------------------------------------------------------------#;;
%put # #;
%put # Macro to list available SAS packages, version `20201010` #;
%put # Macro to list available SAS packages, version `20201014` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -1002,7 +1002,7 @@ options ls = &ls_tmp. ps = &ps_tmp. &notes_tmp. &source_tmp.;
/* Macro to generate SAS packages.
Version 20201010
Version 20201014
A SAS package is a zip file containing a group
of SAS codes (macros, functions, data steps generating
@@ -1025,7 +1025,7 @@ options ls = &ls_tmp. ps = &ps_tmp. &notes_tmp. &source_tmp.;
dependencies in loading */
)/secure
/*** HELP END ***/
des = 'Macro to generate SAS packages, version 20201010. Run %generatePackage() for help info.'
des = 'Macro to generate SAS packages, version 20201014. Run %generatePackage() for help info.'
minoperator
;
%if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then
@@ -1041,7 +1041,7 @@ minoperator
%put ### This is short help information for the `generatePackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to generate SAS packages, version `20201010` #;
%put # Macro to generate SAS packages, version `20201014` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -1234,18 +1234,18 @@ filename &zipReferrence. ZIP "&filesLocation./%lowcase(&packageName.).zip";
/*** HELP START ***/
/*
Locate all files with code in base folder (i.e. at filesLocation directory)
Locate all files with code in base folder, i.e. at `filesLocation` directory.
*/
/*
Remember to prepare the description.sas file for you package.
Remember to prepare the `description.sas` file for you package.
The colon (:) is a field separator and is restricted
in lines of the header part.
The file should contain the following obligatory information:
--------------------------------------------------------------------------------------------
>> **HEADER** <<
Type: Package
Package: ShortPackageName
Title: A title/brief info for log note about your packages
Package: PackageName
Title: A title/brief info for log note about your packages.
Version: X.Y
Author: Firstname1 Lastname1 (xxxxxx1@yyyyy.com), Firstname2 Lastname2 (xxxxxx2@yyyyy.com)
Maintainer: Firstname Lastname (xxxxxx@yyyyy.com)
@@ -1264,9 +1264,9 @@ DESCRIPTION START:
DESCRIPTION END:
--------------------------------------------------------------------------------------------
Name of the 'type' of folder and files.sas inside must be in _low_ case letters.
Name of the `type` of folder and `files.sas` inside must be in the _low_ case letters.
If order of loading is important, the 'sequential number'
If order of loading is important, the sequential number
can be used to order multiple types in the way you wish.
The "tree structure" of the folder could be for example as follows:
@@ -2280,7 +2280,7 @@ data _null_;
put ' end ; ';
%end;
put 'put "***"; put "* SAS package generated by generatePackage, version 20201010 *"; put "***";';
put 'put "***"; put "* SAS package generated by generatePackage, version 20201014 *"; put "***";';
put 'run; ' /;
@@ -2353,7 +2353,7 @@ data _null_;
put ' call execute(" input; ");';
put ' call execute(" if upcase(strip(_infile_)) ';
put ' = ''/*** HELP END ***/'' then printer = 0; ");';
put ' call execute(" if printer then put @1 _infile_; ");';
put ' call execute(" if printer then put ""| "" _infile_; ");';
put ' call execute(" if upcase(strip(_infile_)) ';
put ' = ''/*** HELP START ***/'' then printer = 1; ");';
put ' call execute(" end; ");';
@@ -2808,7 +2808,7 @@ TODO: (in Polish)
*/
)/secure
/*** HELP END ***/
des = 'Macro to load multiple SAS packages at one run, version 20201010. Run %loadPackages() for help info.'
des = 'Macro to load multiple SAS packages at one run, version 20201014. Run %loadPackages() for help info.'
parmbuff
;
%if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then
@@ -2824,7 +2824,7 @@ parmbuff
%put ### This is short help information for the `loadPackageS` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro wrapper for the loadPackage macro, version `20201010` #;
%put # Macro wrapper for the loadPackage macro, version `20201014` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;
@@ -2908,7 +2908,7 @@ parmbuff
hashing_file() function, SAS 9.4M6 */
)/secure
/*** HELP END ***/
des = 'Macro to verify SAS package with the hash digest, version 20201010. Run %verifyPackage() for help info.'
des = 'Macro to verify SAS package with the hash digest, version 20201014. Run %verifyPackage() for help info.'
;
%if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then
%do;
@@ -2923,7 +2923,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20201010. Run %
%put ### This is short help information for the `verifyPackage` macro #;
%put #-------------------------------------------------------------------------------#;
%put # #;
%put # Macro to verify SAS package with it hash digest, version `20201010` #;
%put # Macro to verify SAS package with it hash digest, version `20201014` #;
%put # #;
%put # A SAS package is a zip file containing a group #;
%put # of SAS codes (macros, functions, data steps generating #;

View File

@@ -18,7 +18,7 @@ data class;
WH = weight + height;
run;
```
SHA256 digest for SQLinDS: D76B85EFF129678B45233FB397A2BDB8D23F234013BD821D55141CA18DD5589E
SHA256 digest for SQLinDS: F070926B26504F9F65384EE3FB84E2E54B223FDAB71EDD61B11B865262C2E5DD
[Documentation for SQLinDS](https://github.com/yabwon/SAS_PACKAGES/blob/master/packages/sqlinds.md "Documentation for SQLinDS")
@@ -51,7 +51,7 @@ data _null_;
end;
run;
```
SHA256 digest for DFA: 43AE8BB0FC7D2121AABDD8DB8AD2C3F226C7D2699CAACC171FCB72B75D9141FA
SHA256 digest for DFA: 7E9042867ED9C4BD2F27B3CD9180701CE619E301C13F5BD82DB46547616D17DF
---
@@ -74,7 +74,7 @@ SHA256 digest for DFA: 43AE8BB0FC7D2121AABDD8DB8AD2C3F226C7D2699CAACC171FCB72B75
which = 1:H:2
);
```
SHA256 digest for macroArray: 085A0F3D544EAF01378BB6C6B4F429123F8BFEEFC76013D1B05DFADFEE3FA661
SHA256 digest for macroArray: 519B1CE64F66F8498B10F5EB253BB45FC860E3F7868FCEB97ABF45C96F30716D
[Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/master/packages/macroarray.md "Documentation for macroArray")
@@ -94,7 +94,7 @@ format x bool.;
%put %getVars(sashelp.class, pattern = ght$, sep = +, varRange = _numeric_);
```
SHA256 digest for BasePlus: 54232DA5E253EB58E49A09DD0DF244F433B61983D921E27F2E4FFB1EA73A5C6D
SHA256 digest for BasePlus: 75B8D2BF718E035FEFC0D24504A6EBB9893883E2DF5D0FCD2D8ADD28456CFEBD
[Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/master/packages/baseplus.md "Documentation for BasePlus")
@@ -102,6 +102,6 @@ SHA256 digest for BasePlus: 54232DA5E253EB58E49A09DD0DF244F433B61983D921E27F2E4F
- **dynMacroArray**\[0.2\], set of macros (wrappers for a hash table) emulating dynamic array in the data step (macro predecessor of DFA)
SHA256 digest for dynMacroArray: 281D9493564A8185B858D9525AA7D9D5343E42414AAB1D8A00AE85AB80882661
SHA256 digest for dynMacroArray: FF111DA330ACE57BAE8C9B7890839045B691A17414AE04CBD49C66BCD9663B21
---

View File

@@ -1,3 +1,10 @@
/* 20201014 */
BasePlus: 75B8D2BF718E035FEFC0D24504A6EBB9893883E2DF5D0FCD2D8ADD28456CFEBD
DFA: 7E9042867ED9C4BD2F27B3CD9180701CE619E301C13F5BD82DB46547616D17DF
dynMacroArray: FF111DA330ACE57BAE8C9B7890839045B691A17414AE04CBD49C66BCD9663B21
macroArray: 519B1CE64F66F8498B10F5EB253BB45FC860E3F7868FCEB97ABF45C96F30716D
SQLinDS: F070926B26504F9F65384EE3FB84E2E54B223FDAB71EDD61B11B865262C2E5DD
/* 20201010 */
SQLinDS: D76B85EFF129678B45233FB397A2BDB8D23F234013BD821D55141CA18DD5589E
DFA: 43AE8BB0FC7D2121AABDD8DB8AD2C3F226C7D2699CAACC171FCB72B75D9141FA
@@ -5,7 +12,6 @@ macroArray: 085A0F3D544EAF01378BB6C6B4F429123F8BFEEFC76013D1B05DFADFEE3FA661
BasePlus: 54232DA5E253EB58E49A09DD0DF244F433B61983D921E27F2E4FFB1EA73A5C6D
dynMacroArray: 281D9493564A8185B858D9525AA7D9D5343E42414AAB1D8A00AE85AB80882661
/* 20201007 */
BasePlus: 884BAD527DE77A9AF4325053BF42B3B2FCD3DB1239B63D70B1198064095E1A6D
DFA: 57944FF5ABC7A9879C402412DA0C18C38206301930DC834BC7DD3E968E283D1E

View File

@@ -186,7 +186,7 @@ Package contains:
*SAS package generated by generatePackage, version 20201001*
The SHA256 hash digest for package BasePlus:
`54232DA5E253EB58E49A09DD0DF244F433B61983D921E27F2E4FFB1EA73A5C6D`
`75B8D2BF718E035FEFC0D24504A6EBB9893883E2DF5D0FCD2D8ADD28456CFEBD`
---
# Content description ############################################################################################

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -63,7 +63,7 @@ Required SAS Components:
*SAS package generated by generatePackage, version 20200911*
The SHA256 hash digest for package macroArray:
`085A0F3D544EAF01378BB6C6B4F429123F8BFEEFC76013D1B05DFADFEE3FA661`
`519B1CE64F66F8498B10F5EB253BB45FC860E3F7868FCEB97ABF45C96F30716D`
---
# Content description ############################################################################################

Binary file not shown.

View File

@@ -49,7 +49,7 @@ Required SAS Components:
*SAS package generated by generatePackage, version 20200911*
The SHA256 hash digest for package SQLinDS:
`D76B85EFF129678B45233FB397A2BDB8D23F234013BD821D55141CA18DD5589E`
`F070926B26504F9F65384EE3FB84E2E54B223FDAB71EDD61B11B865262C2E5DD`
---
# Content description ############################################################################################

Binary file not shown.