From 02de8f0bc041a11801aa8a8e3b9728b896c1512c Mon Sep 17 00:00:00 2001 From: yabwon Date: Fri, 12 Nov 2021 11:11:39 +0100 Subject: [PATCH] Package GSM, version 0.16 Package GSM, version 0.16: -Check for the `SECURE` keyword added. -Example in the doc. updated. --- README.md | 4 ++-- packages/README.md | 4 ++-- packages/SHA256_for_packages.txt | 11 +++++++++++ packages/gsm.md | 6 +++--- packages/gsm.zip | Bin 15453 -> 15552 bytes 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 9fdf4ea..033db4e 100644 --- a/README.md +++ b/README.md @@ -164,12 +164,12 @@ SHA256 digest for BasePlus: B34E352EC52E05B8BBE1816E6104F47677CBFDEAF7CD71B8BF04 [Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus") -- **GSM** (Generate Secure Macros)\[0.14\], package allows +- **GSM** (Generate Secure Macros)\[0.16\], 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: BEFAA87266D6DBA3D5983117FC36A24DE03A2F93791AC786DCDB37571A4494AC +SHA256 digest for GSM: 96B8E8EE268403D81BBB2740A0F47B835EB480F16B47A9B51FD976DEE3595ED7 [Documentation for GSM](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/gsm.md "Documentation for GSM") diff --git a/packages/README.md b/packages/README.md index 7246606..c25d56c 100644 --- a/packages/README.md +++ b/packages/README.md @@ -110,12 +110,12 @@ SHA256 digest for BasePlus: B34E352EC52E05B8BBE1816E6104F47677CBFDEAF7CD71B8BF04 --- -- **GSM** (Generate Secure Macros)\[0.14\], package allows +- **GSM** (Generate Secure Macros)\[0.15\], 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: BEFAA87266D6DBA3D5983117FC36A24DE03A2F93791AC786DCDB37571A4494AC +SHA256 digest for GSM: 96B8E8EE268403D81BBB2740A0F47B835EB480F16B47A9B51FD976DEE3595ED7 [Documentation for GSM](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/gsm.md "Documentation for GSM") diff --git a/packages/SHA256_for_packages.txt b/packages/SHA256_for_packages.txt index 613b50f..763b38a 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,3 +1,14 @@ +/* 20211112 */ +GSM: 96B8E8EE268403D81BBB2740A0F47B835EB480F16B47A9B51FD976DEE3595ED7 + +/* 20211111 */ +BasePlus: B34E352EC52E05B8BBE1816E6104F47677CBFDEAF7CD71B8BF04FDBFA01B0EF0 +DFA: C32A81304A411C1EB6BA7B76EDB8D70550F3935F35A1506E2B8019A2036FB5FF +dynMacroArray: 9FE227EF3144431B51063D599148BDD8873509D1B32F1AC2979EC566E1BB1487 +GSM: BEFAA87266D6DBA3D5983117FC36A24DE03A2F93791AC786DCDB37571A4494AC +macroArray: 70032D27081A0EE15BC82B8F14D2A61700FA7C1F0D88B4DB516AB433CD06C4D3 +SQLinDS: F2BE3CC68C9A34DD324FD35C8287A4F89737E2E28E806E0DD7FB0EBF60F7C569 + /* 20211105 */ GSM: 3EAF6E93642CCA9B5B592DF9BED4C8B20B60BCD4B0434720D12D26096717C4A9 diff --git a/packages/gsm.md b/packages/gsm.md index 1feb2b4..9ed1c9f 100644 --- a/packages/gsm.md +++ b/packages/gsm.md @@ -8,7 +8,7 @@ --- -# The GSM package [ver. 0.15] ############################################### +# The GSM package [ver. 0.16] ############################################### 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 20211111 * The SHA256 hash digest for package BasePlus: -`BEFAA87266D6DBA3D5983117FC36A24DE03A2F93791AC786DCDB37571A4494AC` +`96B8E8EE268403D81BBB2740A0F47B835EB480F16B47A9B51FD976DEE3595ED7` ## >>> `%GSM()` macro: <<< ####################### @@ -179,7 +179,7 @@ data _null_; cards4; %macro xyz(x) / SECURE; %do i = 1 %to &x.; - %put &i=; + %put &=i; %end; %mend; ;;;; diff --git a/packages/gsm.zip b/packages/gsm.zip index 2371a6b59d4537b3ac5a3768b74ff620ce92c9cc..c68e00780be8a2c4c17435c0ed52185540e1b486 100644 GIT binary patch delta 9815 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