From 67bd3abd58f0b7c49825601681de430357f9389d Mon Sep 17 00:00:00 2001 From: Bartosz Jablonski Date: Sat, 22 Oct 2022 22:13:50 +0200 Subject: [PATCH] SAS Packages Framework, ver. 20221022 **SAS Packages Framework**, ver. `20221022` In the `%generatePackage()` macro additional quality checks for files of EXEC and CLEAN types were added. Each EXEC file should have a CLEAN file counterpart and vice versa. - If the number of EXECs and CLEANs differs but both are positive macro issues a Warning. - If EXECs are positive but CLEANs are zero (or other way around) macro issues an Error! Documentation updated. --- README.md | 2 +- ...(a how to)- Paper 4725-2020 - extended.pdf | Bin 289491 -> 289741 bytes SPF/Macros/extendpackagesfileref.sas | 4 +- SPF/Macros/generatepackage.sas | 76 ++++++++++- SPF/Macros/helppackage.sas | 6 +- SPF/Macros/installpackage.sas | 6 +- SPF/Macros/listpackages.sas | 6 +- SPF/Macros/loadpackage.sas | 4 +- SPF/Macros/loadpackages.sas | 4 +- SPF/Macros/previewpackage.sas | 4 +- SPF/Macros/unloadpackage.sas | 4 +- SPF/Macros/verifypackage.sas | 4 +- SPF/SPFinit.md | 22 ++-- SPF/SPFinit.sas | 120 ++++++++++++++---- 14 files changed, 201 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index f2624ce..fa12774 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,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 **`20221002`**. +In this repository we are presenting the **SAS Packages Framework** which allows to develop and use SAS packages. **The latest version** of SPF is **`20221022`**. To get started with SAS Packages try this [**`Getting Started with SAS Packages`**](https://github.com/yabwon/SAS_PACKAGES/blob/main/SPF/Documentation/Getting_Started_with_SAS_Packages.pdf "Getting Started with SAS Packages") presentation (see the `./SPF/Documentation` directory). diff --git a/SPF/Documentation/SAS(r) packages - the way to share (a how to)- Paper 4725-2020 - extended.pdf b/SPF/Documentation/SAS(r) packages - the way to share (a how to)- Paper 4725-2020 - extended.pdf index a714717c60a5d3b86dbe24e65d487bd00cd863c6..b0cebf2f26722ce0e3fdf29b2f33bbb6eb4e5576 100644 GIT binary patch delta 66100 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 diff --git a/SPF/Macros/extendpackagesfileref.sas b/SPF/Macros/extendpackagesfileref.sas index ed86494..0712a51 100644 --- a/SPF/Macros/extendpackagesfileref.sas +++ b/SPF/Macros/extendpackagesfileref.sas @@ -6,7 +6,7 @@ when empty the "packages" value is used */ )/secure /*** HELP END ***/ -des = 'Macro to list directories pointed by "packages" fileref, version 20221002. Run %extendPackagesFileref(HELP) for help info.' +des = 'Macro to list directories pointed by "packages" fileref, version 20221022. Run %extendPackagesFileref(HELP) for help info.' ; %if %QUPCASE(&packages.) = HELP %then @@ -22,7 +22,7 @@ des = 'Macro to list directories pointed by "packages" fileref, version 20221002 %put ### This is short help information for the `extendPackagesFileref` macro #; %put #-----------------------------------------------------------------------------------------#;; %put # #; - %put # Macro to list directories pointed by 'packages' fileref, version `20221002` #; + %put # Macro to list directories pointed by 'packages' fileref, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/SPF/Macros/generatepackage.sas b/SPF/Macros/generatepackage.sas index ba540ae..6c0e688 100644 --- a/SPF/Macros/generatepackage.sas +++ b/SPF/Macros/generatepackage.sas @@ -23,7 +23,7 @@ default value 1 means "delete tests work" */ )/secure minoperator /*** HELP END ***/ -des = 'Macro to generate SAS packages, version 20221002. Run %generatePackage() for help info.' +des = 'Macro to generate SAS packages, version 20221022. Run %generatePackage() for help info.' ; %if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then %do; @@ -38,7 +38,7 @@ des = 'Macro to generate SAS packages, version 20221002. Run %generatePackage() %put ### This is short help information for the `generatePackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to generate SAS packages, version `20221002` #; + %put # Macro to generate SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -572,6 +572,76 @@ options NOnotes NOsource; proc sort data = &filesWithCodes.; by order type file; run; + +/* quality check for EXEC and CLEAN types */ +data _null_; + set &filesWithCodes. (where=(upcase(type) in ('EXEC' 'CLEAN'))) end=EOF; + + if _N_ = 1 then + do; + declare hash EXEC(); /* store EXECs */ + EXEC.defineKey('file'); + EXEC.defineData('ne'); + EXEC.defineDone(); + declare hash CLEAN(); /* store CLEANs */ + CLEAN.defineKey('file'); + CLEAN.defineData('nc'); + CLEAN.defineDone(); + + declare hash F(ordered:"A"); + F.defineKey('file'); + F.defineData('file'); + F.defineDone(); + declare hiter IF("F"); + end; + + F.replace(); + if upcase(type) = 'EXEC' then + do; + e + 1; + if EXEC.find() then EXEC.add(key:file,data:1); + else EXEC.replace(key:file,data:ne+1); + end; + + if upcase(type) = 'CLEAN' then + do; + c + 1; + if CLEAN.find() then CLEAN.add(key:file,data:1); + else CLEAN.replace(key:file,data:nc+1); + end; + + if EOF then + do; + /* if number of EXECs and CLEANs differs but both are positive issue a Warning */ + if (0 < e < c) or (0 < c < e) or not(EXEC.NUM_ITEMS = CLEAN.NUM_ITEMS = F.NUM_ITEMS) then + do; + put "WARNING: Number of EXEC type and CLEAN type files differs!" / + "WARNING- Each EXEC file should have CLEAN file counterpart and vice versa." / + 'WARNING- Please create appropriate files and make your package a "role model".' / + 'WARNING- ' / + 'WARNING- The list of differences:'; + do while(IF.next()=0); + ne = 0; + nc = 0; + df = EXEC.find(); + df = CLEAN.find(); + df = abs(ne - nc); + put "WARNING- File " file char36. "EXEC: " ne 3. +1 "CLEAN: " nc 3. +1 "diff: " df 3.; + end; + put "WARNING- "; + end; + /* if EXECs are positive but CLEANs are zero (or other way around) issue an Error */ + if (0 = e < c) or (0 = c < e) then + do; + put "ERROR: There are " e "EXECs files and " c "CLEANs files!" / + "ERROR- Each EXEC file should have CLEAN file counterpart and vice versa." / + 'ERROR- Please create appropriate files and make your package a "role model".' / + 'ERROR: Aborting package generation!' ; + abort; + end; + end; +run; + /* proc contents data = &filesWithCodes.; run; @@ -1605,7 +1675,7 @@ data _null_; put ' end ; '; %end; - put 'put "***"; put "* SAS package generated by generatePackage, version 20221002 *"; put "***";'; + put 'put "***"; put "* SAS package generated by generatePackage, version 20221022 *"; put "***";'; put 'run; ' /; diff --git a/SPF/Macros/helppackage.sas b/SPF/Macros/helppackage.sas index ecc72e8..36d0de3 100644 --- a/SPF/Macros/helppackage.sas +++ b/SPF/Macros/helppackage.sas @@ -24,7 +24,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to get help about SAS package, version 20221002. Run %helpPackage() for help info.' +des = 'Macro to get help about SAS package, version 20221022. Run %helpPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -39,7 +39,7 @@ des = 'Macro to get help about SAS package, version 20221002. Run %helpPackage() %put ### This is short help information for the `helpPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to get help about SAS packages, version `20221002` #; + %put # Macro to get help about SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -169,7 +169,7 @@ TODO: - add MD5(&packageName.) value hash instead "package" word in filenames [DONE] */ -/* Macros to install SAS packages, version 20221002 */ +/* Macros to install SAS packages, version 20221022 */ /* 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 diff --git a/SPF/Macros/installpackage.sas b/SPF/Macros/installpackage.sas index cda56ce..a265a91 100644 --- a/SPF/Macros/installpackage.sas +++ b/SPF/Macros/installpackage.sas @@ -14,7 +14,7 @@ /secure minoperator /*** HELP END ***/ -des = 'Macro to install SAS package, version 20221002. Run %%installPackage() for help info.' +des = 'Macro to install SAS package, version 20221022. Run %%installPackage() for help info.' ; %if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then %do; @@ -29,7 +29,7 @@ des = 'Macro to install SAS package, version 20221002. Run %%installPackage() fo %put ### This is short help information for the `installPackage` macro #; %put #--------------------------------------------------------------------------------------------#;; %put # #; - %put # Macro to install SAS packages, version `20221002` #; + %put # Macro to install SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -458,7 +458,7 @@ des = 'Macro to install SAS package, version 20221002. Run %%installPackage() fo /* Macro to list SAS packages in packages folder. - Version 20221002 + Version 20221022 A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating diff --git a/SPF/Macros/listpackages.sas b/SPF/Macros/listpackages.sas index 0c298fb..8aff53d 100644 --- a/SPF/Macros/listpackages.sas +++ b/SPF/Macros/listpackages.sas @@ -1,7 +1,7 @@ /*+listPackages+*/ %macro listPackages()/secure PARMBUFF -des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20221002.' +des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20221022.' ; %if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then %do; @@ -16,7 +16,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 `20221002` #; + %put # Macro to list available SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -166,7 +166,7 @@ options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; /* Macro to generate SAS packages. - Version 20221002 + Version 20221022 A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating diff --git a/SPF/Macros/loadpackage.sas b/SPF/Macros/loadpackage.sas index 525e25f..12dfdba 100644 --- a/SPF/Macros/loadpackage.sas +++ b/SPF/Macros/loadpackage.sas @@ -27,7 +27,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to load SAS package, version 20221002. Run %loadPackage() for help info.' +des = 'Macro to load SAS package, version 20221022. Run %loadPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -42,7 +42,7 @@ des = 'Macro to load SAS package, version 20221002. Run %loadPackage() for help %put ### This is short help information for the `loadPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to *load* SAS packages, version `20221002` #; + %put # Macro to *load* SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/SPF/Macros/loadpackages.sas b/SPF/Macros/loadpackages.sas index 864460c..611217f 100644 --- a/SPF/Macros/loadpackages.sas +++ b/SPF/Macros/loadpackages.sas @@ -11,7 +11,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to load multiple SAS packages at one run, version 20221002. Run %loadPackages() for help info.' +des = 'Macro to load multiple SAS packages at one run, version 20221022. Run %loadPackages() for help info.' parmbuff ; %if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then @@ -27,7 +27,7 @@ parmbuff %put ### This is short help information for the `loadPackageS` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro wrapper for the loadPackage macro, version `20221002` #; + %put # Macro wrapper for the loadPackage macro, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/SPF/Macros/previewpackage.sas b/SPF/Macros/previewpackage.sas index 0164769..56847ed 100644 --- a/SPF/Macros/previewpackage.sas +++ b/SPF/Macros/previewpackage.sas @@ -23,7 +23,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to preview content of a SAS package, version 20221002. Run %previewPackage() for help info.' +des = 'Macro to preview content of a SAS package, version 20221022. Run %previewPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -38,7 +38,7 @@ des = 'Macro to preview content of a SAS package, version 20221002. Run %preview %put ### This is short help information for the `previewPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to get previwe of a SAS packages, version `20221002` #; + %put # Macro to get previwe of a SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/SPF/Macros/unloadpackage.sas b/SPF/Macros/unloadpackage.sas index 8861a5e..c88e4bf 100644 --- a/SPF/Macros/unloadpackage.sas +++ b/SPF/Macros/unloadpackage.sas @@ -20,7 +20,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to unload SAS package, version 20221002. Run %unloadPackage() for help info.' +des = 'Macro to unload SAS package, version 20221022. Run %unloadPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -35,7 +35,7 @@ des = 'Macro to unload SAS package, version 20221002. Run %unloadPackage() for h %put ### This is short help information for the `unloadPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to unload SAS packages, version `20221002` #; + %put # Macro to unload SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/SPF/Macros/verifypackage.sas b/SPF/Macros/verifypackage.sas index 2acbafe..9505db9 100644 --- a/SPF/Macros/verifypackage.sas +++ b/SPF/Macros/verifypackage.sas @@ -13,7 +13,7 @@ hashing_file() function, SAS 9.4M6 */ )/secure /*** HELP END ***/ -des = 'Macro to verify SAS package with the hash digest, version 20221002. Run %verifyPackage() for help info.' +des = 'Macro to verify SAS package with the hash digest, version 20221022. Run %verifyPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -28,7 +28,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20221002. Run % %put ### This is short help information for the `verifyPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to verify SAS package with it hash digest, version `20221002` #; + %put # Macro to verify SAS package with it hash digest, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/SPF/SPFinit.md b/SPF/SPFinit.md index 5494748..031f702 100644 --- a/SPF/SPFinit.md +++ b/SPF/SPFinit.md @@ -21,7 +21,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 **`20221002`**. +In this repository we are presenting the **SAS Packages Framework** which allows to develop and use SAS packages. The latest version of SPF is **`20221022`**. **To get started with SAS Packages** try this [**`Getting Started with SAS Packages`**](https://github.com/yabwon/SAS_PACKAGES/blob/main/SPF/Documentation/Getting_Started_with_SAS_Packages.pdf "Getting Started with SAS Packages") presentation (see the `./SPF/Documentation` directory). @@ -39,7 +39,7 @@ After assigning the directory do not change them when using the SPF since it may ## This is short help information for the `installPackage` macro -------------------------------------------------------------------------------------------- - Macro to install SAS packages, version `20221002` + Macro to install SAS packages, version `20221022` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -141,7 +141,7 @@ filename packages "C:/SAS_PACKAGES"; ## This is short help information for the `helpPackage` macro ------------------------------------------------------------------------------- - Macro to get help about SAS packages, version `20221002` + Macro to get help about SAS packages, version `20221022` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -211,7 +211,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `loadPackage` macro ------------------------------------------------------------------------------- - Macro to *load* SAS packages, version `20221002` + Macro to *load* SAS packages, version `20221022` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -284,7 +284,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `loadPackageS` macro ------------------------------------------------------------------------------- - Macro wrapper for the loadPackage macro, version `20221002` + Macro wrapper for the loadPackage macro, version `20221022` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -333,7 +333,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `unloadPackage` macro ------------------------------------------------------------------------------- - Macro to unload SAS packages, version `20221002` + Macro to unload SAS packages, version `20221022` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -398,7 +398,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `listPackages` macro ----------------------------------------------------------------------------------------- - Macro to list available SAS packages, version `20221002` + Macro to list available SAS packages, version `20221022` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -439,7 +439,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `verifyPackage` macro ------------------------------------------------------------------------------- - Macro to verify SAS package with it hash digest, version `20221002` + Macro to verify SAS package with it hash digest, version `20221022` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -493,7 +493,7 @@ filename packages "C:/SAS_PACKAGES"; %* set-up a directory for packages; ## This is short help information for the `previewPackage` macro ------------------------------------------------------------------------------- - Macro to get previwe of a SAS packages, version `20221002` + Macro to get previwe of a SAS packages, version `20221022` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -560,7 +560,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `generatePackage` macro ------------------------------------------------------------------------------- - Macro to generate SAS packages, version `20221002` + Macro to generate SAS packages, version `20221022` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -741,7 +741,7 @@ All files have to have `.sas` extension. Other files are ignored. ## This is short help information for the `extendPackagesFileref` macro ----------------------------------------------------------------------------------------- - Macro to list directories pointed by 'packages' fileref, version `20221002` + Macro to list directories pointed by 'packages' fileref, version `20221022` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating diff --git a/SPF/SPFinit.sas b/SPF/SPFinit.sas index b7059b6..61eb774 100644 --- a/SPF/SPFinit.sas +++ b/SPF/SPFinit.sas @@ -42,7 +42,7 @@ - to unload, or - to generate SAS packages. - Version 20221002. + Version 20221022. See examples below. A SAS package is a zip file containing a group of files @@ -82,7 +82,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to load SAS package, version 20221002. Run %loadPackage() for help info.' +des = 'Macro to load SAS package, version 20221022. Run %loadPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -97,7 +97,7 @@ des = 'Macro to load SAS package, version 20221002. Run %loadPackage() for help %put ### This is short help information for the `loadPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to *load* SAS packages, version `20221002` #; + %put # Macro to *load* SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -283,7 +283,7 @@ des = 'Macro to load SAS package, version 20221002. Run %loadPackage() for help */ )/secure /*** HELP END ***/ -des = 'Macro to unload SAS package, version 20221002. Run %unloadPackage() for help info.' +des = 'Macro to unload SAS package, version 20221022. Run %unloadPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -298,7 +298,7 @@ des = 'Macro to unload SAS package, version 20221002. Run %unloadPackage() for h %put ### This is short help information for the `unloadPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to unload SAS packages, version `20221002` #; + %put # Macro to unload SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -443,7 +443,7 @@ des = 'Macro to unload SAS package, version 20221002. Run %unloadPackage() for h */ )/secure /*** HELP END ***/ -des = 'Macro to get help about SAS package, version 20221002. Run %helpPackage() for help info.' +des = 'Macro to get help about SAS package, version 20221022. Run %helpPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -458,7 +458,7 @@ des = 'Macro to get help about SAS package, version 20221002. Run %helpPackage() %put ### This is short help information for the `helpPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to get help about SAS packages, version `20221002` #; + %put # Macro to get help about SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -588,7 +588,7 @@ TODO: - add MD5(&packageName.) value hash instead "package" word in filenames [DONE] */ -/* Macros to install SAS packages, version 20221002 */ +/* Macros to install SAS packages, version 20221022 */ /* 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 @@ -611,7 +611,7 @@ TODO: /secure minoperator /*** HELP END ***/ -des = 'Macro to install SAS package, version 20221002. Run %%installPackage() for help info.' +des = 'Macro to install SAS package, version 20221022. Run %%installPackage() for help info.' ; %if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then %do; @@ -626,7 +626,7 @@ des = 'Macro to install SAS package, version 20221002. Run %%installPackage() fo %put ### This is short help information for the `installPackage` macro #; %put #--------------------------------------------------------------------------------------------#;; %put # #; - %put # Macro to install SAS packages, version `20221002` #; + %put # Macro to install SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -1055,7 +1055,7 @@ des = 'Macro to install SAS package, version 20221002. Run %%installPackage() fo /* Macro to list SAS packages in packages folder. - Version 20221002 + Version 20221022 A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -1076,7 +1076,7 @@ des = 'Macro to install SAS package, version 20221002. Run %%installPackage() fo /*+listPackages+*/ %macro listPackages()/secure PARMBUFF -des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20221002.' +des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20221022.' ; %if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then %do; @@ -1091,7 +1091,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 `20221002` #; + %put # Macro to list available SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -1241,7 +1241,7 @@ options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; /* Macro to generate SAS packages. - Version 20221002 + Version 20221022 A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -1278,7 +1278,7 @@ options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; default value 1 means "delete tests work" */ )/secure minoperator /*** HELP END ***/ -des = 'Macro to generate SAS packages, version 20221002. Run %generatePackage() for help info.' +des = 'Macro to generate SAS packages, version 20221022. Run %generatePackage() for help info.' ; %if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then %do; @@ -1293,7 +1293,7 @@ des = 'Macro to generate SAS packages, version 20221002. Run %generatePackage() %put ### This is short help information for the `generatePackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to generate SAS packages, version `20221002` #; + %put # Macro to generate SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -1827,6 +1827,76 @@ options NOnotes NOsource; proc sort data = &filesWithCodes.; by order type file; run; + +/* quality check for EXEC and CLEAN types */ +data _null_; + set &filesWithCodes. (where=(upcase(type) in ('EXEC' 'CLEAN'))) end=EOF; + + if _N_ = 1 then + do; + declare hash EXEC(); /* store EXECs */ + EXEC.defineKey('file'); + EXEC.defineData('ne'); + EXEC.defineDone(); + declare hash CLEAN(); /* store CLEANs */ + CLEAN.defineKey('file'); + CLEAN.defineData('nc'); + CLEAN.defineDone(); + + declare hash F(ordered:"A"); + F.defineKey('file'); + F.defineData('file'); + F.defineDone(); + declare hiter IF("F"); + end; + + F.replace(); + if upcase(type) = 'EXEC' then + do; + e + 1; + if EXEC.find() then EXEC.add(key:file,data:1); + else EXEC.replace(key:file,data:ne+1); + end; + + if upcase(type) = 'CLEAN' then + do; + c + 1; + if CLEAN.find() then CLEAN.add(key:file,data:1); + else CLEAN.replace(key:file,data:nc+1); + end; + + if EOF then + do; + /* if number of EXECs and CLEANs differs but both are positive issue a Warning */ + if (0 < e < c) or (0 < c < e) or not(EXEC.NUM_ITEMS = CLEAN.NUM_ITEMS = F.NUM_ITEMS) then + do; + put "WARNING: Number of EXEC type and CLEAN type files differs!" / + "WARNING- Each EXEC file should have CLEAN file counterpart and vice versa." / + 'WARNING- Please create appropriate files and make your package a "role model".' / + 'WARNING- ' / + 'WARNING- The list of differences:'; + do while(IF.next()=0); + ne = 0; + nc = 0; + df = EXEC.find(); + df = CLEAN.find(); + df = abs(ne - nc); + put "WARNING- File " file char36. "EXEC: " ne 3. +1 "CLEAN: " nc 3. +1 "diff: " df 3.; + end; + put "WARNING- "; + end; + /* if EXECs are positive but CLEANs are zero (or other way around) issue an Error */ + if (0 = e < c) or (0 = c < e) then + do; + put "ERROR: There are " e "EXECs files and " c "CLEANs files!" / + "ERROR- Each EXEC file should have CLEAN file counterpart and vice versa." / + 'ERROR- Please create appropriate files and make your package a "role model".' / + 'ERROR: Aborting package generation!' ; + abort; + end; + end; +run; + /* proc contents data = &filesWithCodes.; run; @@ -2860,7 +2930,7 @@ data _null_; put ' end ; '; %end; - put 'put "***"; put "* SAS package generated by generatePackage, version 20221002 *"; put "***";'; + put 'put "***"; put "* SAS package generated by generatePackage, version 20221022 *"; put "***";'; put 'run; ' /; @@ -3718,7 +3788,7 @@ TODO: (in Polish) */ )/secure /*** HELP END ***/ -des = 'Macro to load multiple SAS packages at one run, version 20221002. Run %loadPackages() for help info.' +des = 'Macro to load multiple SAS packages at one run, version 20221022. Run %loadPackages() for help info.' parmbuff ; %if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then @@ -3734,7 +3804,7 @@ parmbuff %put ### This is short help information for the `loadPackageS` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro wrapper for the loadPackage macro, version `20221002` #; + %put # Macro wrapper for the loadPackage macro, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -3831,7 +3901,7 @@ parmbuff hashing_file() function, SAS 9.4M6 */ )/secure /*** HELP END ***/ -des = 'Macro to verify SAS package with the hash digest, version 20221002. Run %verifyPackage() for help info.' +des = 'Macro to verify SAS package with the hash digest, version 20221022. Run %verifyPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -3846,7 +3916,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20221002. Run % %put ### This is short help information for the `verifyPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to verify SAS package with it hash digest, version `20221002` #; + %put # Macro to verify SAS package with it hash digest, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -4017,7 +4087,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20221002. Run % */ )/secure /*** HELP END ***/ -des = 'Macro to preview content of a SAS package, version 20221002. Run %previewPackage() for help info.' +des = 'Macro to preview content of a SAS package, version 20221022. Run %previewPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -4032,7 +4102,7 @@ des = 'Macro to preview content of a SAS package, version 20221002. Run %preview %put ### This is short help information for the `previewPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to get previwe of a SAS packages, version `20221002` #; + %put # Macro to get previwe of a SAS packages, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -4159,7 +4229,7 @@ des = 'Macro to preview content of a SAS package, version 20221002. Run %preview when empty the "packages" value is used */ )/secure /*** HELP END ***/ -des = 'Macro to list directories pointed by "packages" fileref, version 20221002. Run %extendPackagesFileref(HELP) for help info.' +des = 'Macro to list directories pointed by "packages" fileref, version 20221022. Run %extendPackagesFileref(HELP) for help info.' ; %if %QUPCASE(&packages.) = HELP %then @@ -4175,7 +4245,7 @@ des = 'Macro to list directories pointed by "packages" fileref, version 20221002 %put ### This is short help information for the `extendPackagesFileref` macro #; %put #-----------------------------------------------------------------------------------------#;; %put # #; - %put # Macro to list directories pointed by 'packages' fileref, version `20221002` #; + %put # Macro to list directories pointed by 'packages' fileref, version `20221022` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #;