From b571a3619ecf14912e095b684792c3311b9819ac Mon Sep 17 00:00:00 2001 From: yabwon Date: Mon, 18 Nov 2019 21:52:25 +0100 Subject: [PATCH] version 20191118 emergency ICEloadPackage macro to load package when loadPackage() is unavaliable for some reasons --- ...y to share (a how to)- Paper 4725-2020.pdf | Bin 203126 -> 209748 bytes dfa.zip | Bin 27267 -> 28368 bytes dynmacroarray.zip | Bin 10277 -> 11405 bytes generatePackage.sas | 132 +- generatePackage.sas_bckp | 1096 ---------------- generatePackage.sas_bckp2 | 1167 ----------------- loadpackage.sas | 21 +- loadpackage.sas_bckp | 228 ---- macroarray.zip | Bin 23551 -> 24641 bytes sqlinds.zip | Bin 9395 -> 10476 bytes 10 files changed, 75 insertions(+), 2569 deletions(-) delete mode 100644 generatePackage.sas_bckp delete mode 100644 generatePackage.sas_bckp2 delete mode 100644 loadpackage.sas_bckp diff --git a/SAS(r) packages - the way to share (a how to)- Paper 4725-2020.pdf b/SAS(r) packages - the way to share (a how to)- Paper 4725-2020.pdf index 4ea8856fe2b415bd7de52764bdb326f53a5c2997..db92d9afb7c9e7017bf9eae8bf70218726aadef1 100644 GIT binary patch delta 121865 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

U&FI&=(sT*vCyVXO`Lnr-=!OS~&N`$cil3IUR+h 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 Q4 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 T(ckmzY)VN(GB0DM4Sjpu6;KTNEfxiJRw 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 Io&GfPKcdj&WdHyG delta 3856 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 diff --git a/generatePackage.sas b/generatePackage.sas index 92e8ab5..f779210 100644 --- a/generatePackage.sas +++ b/generatePackage.sas @@ -1,4 +1,4 @@ -/*** HELP START ***/ +/*** HELP START ***/ /**############################################################################**/ /* */ @@ -8,8 +8,8 @@ /* I tested it the best I could */ /* but it comes with absolutely no warranty whatsoever. */ /* If you cause any damage or something - it will be your own fault. */ -/* You've been warned! You are using it on your own risk. */ -/* However, if you decide to use it don't forget to mention author: */ +/* You have been warned! You are using it on your own risk. */ +/* However, if you decide to use it do not forget to mention author: */ /* Bartosz Jablonski (yabwon@gmail.com) */ /* */ /* Here is the official version: */ @@ -36,7 +36,7 @@ */ /**#############################################################################**/ -/* Macros to generate SAS packages */ +/* Macros to generate SAS packages, version 20191118 */ /* A SAS package is a zip file containing a group of SAS codes (macros, functions, datasteps generating data, etc.) wrapped up together and %INCLUDEed by @@ -448,6 +448,48 @@ data _null_; stop; run; +/* emergency ICEloadPackage macro to load package when loadPackage() + is unavaliable for some reasons, example of use: + 1) point to a zip file, + 2) include iceloadpackage.sas + 3) point to package folder, + 4) load package +*//* + + filename packages zip 'C:/SAS_PACKAGES/sqlinds.zip'; + %include packages(iceloadpackage.sas); + filename packages 'C:/SAS_PACKAGES/'; + %ICEloadpackage(sqlinds) + + */ +data _null_; + file &zipReferrence.(iceloadpackage.sas); + put " "; + put ' /* Temporary replacement of loadPackage() macro. */ '; + put ' %macro ICEloadPackage( '; + put ' packageName /* name of a package */ '; + put ' , path = %sysfunc(pathname(packages)) /* location of a package */ '; + put ' , options = %str(LOWCASE_MEMNAME) /* possible options for ZIP */ '; + put ' )/secure; '; + put ' %PUT ** NOTE: Package ' "&packageName." ' loaded in ICE mode **; '; + put ' %local _PackageFileref_; '; + put ' %let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); '; + put ' filename &_PackageFileref_. &ZIP. '; + put ' "&path./%lowcase(&packageName.).&zip." %unquote(&options.) '; + put ' ; '; + put ' %include &_PackageFileref_.(packagemetadata.sas) / &source2.; '; + put ' filename &_PackageFileref_. clear; '; + put ' filename &_PackageFileref_. &ZIP. '; + put ' "&path./%lowcase(&packageName.).&zip." %unquote(&options.) '; + put ' ENCODING = '; + put ' %if %bquote(&packageEncoding.) NE %then &packageEncoding. ; '; + put ' %include &_PackageFileref_.(load.sas) / &source2.; '; + put ' filename &_PackageFileref_. clear; '; + put ' %mend ICEloadPackage; '; + put " "; +run; + + /* loading package files */ data _null_; if NOBS = 0 then stop; @@ -1178,28 +1220,14 @@ filename &zipReferrence. clear; /* - -options mprint; -ods html; -%generatePackage( - testowyPackageName -,0.01 -,author -,contact -,filesLocation=E:\SAS_WORK_5400\testyGeneratePackage -) - -*/ - -/* -TODO: +TODO: (in Polish) - modyfikacja helpa, sprawdzanie kodu danje funkcji/makra/typu [v] - opcjonalne sortowanie nazw folderow(_) [v] - wewnętrzna nazwaz zmiennej z nazwa pakietu (na potrzeby kompilacji) [v] -- weryfikacja srodaowiska +- weryfikacja srodaowiska [ ] - weryfikacja "niepustosci" obowiazkowych argumentow [v] @@ -1207,62 +1235,30 @@ TODO: - doadc sprawdzanie liczby wywołan procedury fcmp, format i slowa '%macro(' w plikach z kodami [ ] -- syspackages - makrozmienna z lista zaladowanych pakietow [v] as SYSloadedPackages +- syspackages - makrozmienna z lista zaladowanych pakietow [v] (as SYSloadedPackages) -- dodac typ "iml", "ds2", "proto" +- dodac typ "iml", "ds2", "proto" [ ] --lista wymaganych komponentow potrzebnych do działania SASa (na bazie proc SETINIT) [v] +- lista wymaganych komponentow potrzebnych do działania SASa (na bazie proc SETINIT) [v] --sparwdzanie domknietosci, parzystosci i wystepowania tagow HELP START - HELP END w plikach [v] +- sparwdzanie domknietosci, parzystosci i wystepowania tagow HELP START - HELP END w plikach [v] --weryfikacja nadpisywania makr [ ] +- weryfikacja nadpisywania makr [ ] --add MD5(&packageName.) value hash instead "package" word in filenames [v] +- add MD5(&packageName.) value hash instead "package" word in filenames [v] --infolista o required packahes w unloadPackage [ ] +- infolista o required packahes w unloadPackage [v] + +- dodac ICEloadPackage() [ ] */ +/*** HELP START ***/ + +/* Example 1: */ /* - -%include "C:\SAS_PACKAGES\generatePackage.sas"; - -ods html; -%generatePackage(filesLocation=C:\SAS_PACKAGES\SQLinDS) + %include "C:/SAS_PACKAGES/generatePackage.sas"; + ods html; + %generatePackage(filesLocation=C:/SAS_PACKAGES/SQLinDS) */ -/* -*"C:\SAS_PACKAGES\testyGeneratoraPakietow"; - -libname packages "E:\SAS_WORK_5400\testyGeneratePackage"; -filename packages "E:\SAS_WORK_5400\testyGeneratePackage"; - -%include packages(loadpackage.sas); - -dm 'log;clear'; -%loadpackage(testowypackagename) - - -*/ -/* - -%let helpKeyword=*; -%helpPackage(testowypackagename) -%unloadPackage(testowypackagename) - - -filename package ZIP "E:\SAS_WORK_5400\testyGeneratePackage\testowypackagename.zip"; - -%put %sysfunc(pathname(package)); - -%include package(load.sas); -%help()??? -%include package(unload.sas); - -filename package ZIP "C:\SAS_PACKAGES\testowypackagename.zip"; -%include package(load.sas); -%include package(unload.sas); - -filename package ZIP "C:\SAS_PACKAGES\macroarray.zip"; -%include package(load.sas); -%include package(unload.sas); -*/ +/*** HELP END ***/ diff --git a/generatePackage.sas_bckp b/generatePackage.sas_bckp deleted file mode 100644 index 968095d..0000000 --- a/generatePackage.sas_bckp +++ /dev/null @@ -1,1096 +0,0 @@ -/*** HELP START ***/ - -/**############################################################################**/ -/* */ -/* Copyright Bartosz Jablonski, September 2019. */ -/* */ -/* Code is free and open source. If you want - you can use it. */ -/* I tested it the best I could */ -/* but it comes with absolutely no warranty whatsoever. */ -/* If you cause any damage or something - it will be your own fault. */ -/* You've been warned! You are using it on your own risk. */ -/* However, if you decide to use it don't forget to mention author: */ -/* Bartosz Jablonski (yabwon@gmail.com) */ -/* */ -/* Here is the official version: */ -/* - Copyright (c) 2019 Bartosz Jablonski (yabwon@gmail.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - */ -/**#############################################################################**/ - -/* Macros to generate SAS packages */ -/* A SAS package is a zip file containing a group - of SAS codes (macros, functions, datasteps generating - data, etc.) wrapped up together and %INCLUDEed by - a single load.sas file (also embedded inside the zip). -*/ - -/*** HELP END ***/ - - -/*** HELP START ***/ -%macro GeneratePackge( - /* location of package files */ - filesLocation=%sysfunc(pathname(work))/%lowcase(&packageName.) -)/secure; -/*** HELP END ***/ -%local zipReferrence filesWithCodes _DESCR_ _LIC_ _RC_; -%let zipReferrence = _%sysfunc(datetime(), hex6.)_; -%let filesWithCodes = WORK._%sysfunc(datetime(), hex16.)_; -%let _DESCR_ = _%sysfunc(datetime(), hex6.)d; -%let _LIC_ = _%sysfunc(datetime(), hex6.)l; - -/* collect package metadata from the description.sas file */ -filename &_DESCR_. "&filesLocation./description.sas" lrecl = 256; -/* file contains licence */ -filename &_LIC_. "&filesLocation./license.sas" lrecl = 256; - -%if %sysfunc(fexist(&_DESCR_.)) %then - %do; - %put NOTE: Creating package%str(%')s metadata; - - %local packageName /* name of the package, required */ - packageVersion /* version of the package, required */ - packageTitle /* title of the package, required*/ - packageAuthor /* required */ - packageMaintainer /* required */ - packageEncoding /* required */ - packageLicense /* required */ - packageRequired /* optional */ - packageReqPackages /* optional */ - ; - data _null_; - infile &_DESCR_.; - input; - - select; - when(upcase(scan(_INFILE_, 1, ":")) = "PACKAGE") call symputX("packageName", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "VERSION") call symputX("packageVersion", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "AUTHOR") call symputX("packageAuthor", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "MAINTAINER") call symputX("packageMaintainer", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "TITLE") call symputX("packageTitle", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "ENCODING") call symputX("packageEncoding", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "LICENSE") call symputX("packageLicense", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "REQUIRED") call symputX("packageRequired", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "REQPACKAGES") call symputX("packageReqPackages", scan(_INFILE_, 2, ":"),"L"); - - /* stop at the beginning of description */ - when(upcase(scan(_INFILE_, 1, ":")) = "DESCRIPTION START") stop; - otherwise; - end; - run; - - /* test for required descriptors */ - %if (%nrbquote(&packageName.) = ) - or (%nrbquote(&packageVersion.) = ) - or (%nrbquote(&packageAuthor.) = ) - or (%nrbquote(&packageMaintainer.) = ) - or (%nrbquote(&packageTitle.) = ) - or (%nrbquote(&packageEncoding.) = ) - or (%nrbquote(&packageLicense.) = ) - %then - %do; - %put ERROR: At least one of descriptors is missing!; - %put ERROR- They are required to create package.; - %put ERROR- &=packageName.; - %put ERROR- &=packageTitle.; - %put ERROR- &=packageVersion.; - %put ERROR- &=packageAuthor.; - %put ERROR- &=packageMaintainer.; - %put ERROR- &=packageEncoding.; - %put ERROR- &=packageLicense.; - %put ERROR- ; - %abort; - %end; - /* test for package name */ - %if %sysfunc(lengthn(&packageName.)) > 24 %then - %do; - %put ERROR: Package name is more than 24 characters long.; - %put ERROR- The name is used for functions%str(%') dataset name; - %put ERROR- and for formats%str(%') cataloge name (with suffix).; - %put ERROR- The length is %sysfunc(lengthn(&packageName.)). Try something shorter.; - %abort; - %end; - %else %if %sysfunc(lengthn(&packageName.)) < 3 %then - %do; - %put WARNING: Package name is less than 3 characters.; - %put WARNING- Maybe consider some _meaningful_ name?; - %end; - /* test characters in package name */ - %if %qsysfunc(lengthn(%qsysfunc(compress(&packageName.,,KDF)))) NE %qsysfunc(lengthn(&packageName.)) %then - %do; - %put ERROR: Package name contains illegal symbols.; - %put ERROR- The name is used for functions%str(%') dataset name; - %put ERROR- and for formats%str(%') cataloge name.; - %put ERROR- Only English letters, underscore(_), and digits are allowed.; - %put ERROR- Try something else. Maybe: %qsysfunc(compress(&packageName.,,KDF)) will do?; - %abort; - %end; - - %end; -%else - %do; - %put ERROR: The description.sas file is missing!; - %put ERROR- The file is required to create package%str(%')s metadata; - %abort; - %end; - -/* test if version is a number */ -data _null_; - version = input("&packageVersion.", ?? best32.); - if not (version > 0) then - do; - put 'ERROR: Package version should be a positive NUMBER.'; - put 'ERROR- Current value is: ' "&packageVersion."; - put 'ERROR- Try something small, e.g. 0.1'; - put; - abort; - end; -run; - -/* create or replace the ZIP file for package */ -filename &zipReferrence. ZIP "&filesLocation./%lowcase(&packageName.).zip"; - -%if %sysfunc(fexist(&zipReferrence.)) %then - %do; - %put NOTE: Deleting file "&filesLocation./%lowcase(&packageName.).zip"; - %let _RC_ = %sysfunc(fdelete(&zipReferrence.)); - %end; - -/*** HELP START ***/ -/* - 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: --------------------------------------------------------------------------------------------- ->> **HEADER** << -Type: Package -Package: ShortPackageName -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) -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 _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: - --------------------------------------------------------------------------------------------- - - .. - | - +-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] - | - +-003_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] - | - +-004_data [one file one dataset] - | | - | +-abc.efg.sas [a file with a code creating dataset EFG in library ABC] - | - +-005_exec [so called "free code", content of the files will be printed - | | to the log before execution] - | | - | +- - | - +-006_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] - +-007_function - | | - | +- - | - +-_ - | - +-... - | - +-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] - | | - | +- - +-... - ... --------------------------------------------------------------------------------------------- - -*/ -/*** HELP END ***/ - -/* collect the data */ -data &filesWithCodes.; - base = "&filesLocation."; - length folder file lowcase_name $ 256 folderRef fileRef $ 8; - drop lowcase_name; - - folderRef = "_%sysfunc(datetime(), hex6.)0"; - - rc=filename(folderRef, base); - folderid=dopen(folderRef); - - do i=1 to dnum(folderId); drop i; - folder = dread(folderId, i); - if folder NE lowcase(folder) then - do; - put 'ERROR: Folder should be named ONLY with low case letters.'; - put 'ERROR- Current value is: ' folder; - lowcase_name = lowcase(folder); - put 'ERROR- Try: ' lowcase_name; - put; - abort; - end; - order = scan(folder, 1, "_"); - type = scan(folder,-1, "_"); - - fileRef = "_%sysfunc(datetime(), hex6.)1"; - rc = filename(fileRef, catx("/", base, folder)); - fileId = dopen(fileRef); - - file = ' '; - if fileId then - do j = 1 to dnum(fileId); drop j; - file = dread(fileId, j); - if file NE lowcase(file) then - do; - put 'ERROR: File with code should be named ONLY with low case letters.'; - put 'ERROR- Current value is: ' file; - lowcase_name = lowcase(file); - put 'ERROR- Try: ' lowcase_name; - put; - abort; - end; - fileshort = substr(file, 1, length(file) - 4); /* filename.sas -> filename */ - output; - end; - rc = dclose(fileId); - rc = filename(fileRef); - end; - - rc = dclose(folderid); - rc = filename(folderRef); - stop; -run; -proc sort data = &filesWithCodes.; - by order type file; -run; -/* -proc contents data = &filesWithCodes.; -run; -*/ -title1 "Package's location is: &filesLocation."; -title2 "User: &SYSUSERID., datetime: %qsysfunc(datetime(), datetime21.), SAS version: &SYSVLONG4."; -title3 "Package's encoding: '&packageEncoding.', session's encoding: '&SYSENCODING.'."; -title4 " ______________________________ "; -title5 "List of files for package: &packageName. (version &packageVersion.), license: &packageLicense."; -proc print data = &filesWithCodes.(drop=base); -run; -title; - -/* packages description */ -data _null_; - infile &_DESCR_.; - file &zipReferrence.(description.sas); - input; - put _INFILE_; -run; - -/* package license */ -%if %sysfunc(fexist(&_LIC_.)) %then - %do; - data _null_; - infile &_LIC_.; - file &zipReferrence.(license.sas); - input; - put _INFILE_; - run; - %end; -%else - %do; - %put WARNING:[License] No license.sas file provided, default (MIT) licence file will be generated.; - %let packageLicense = MIT; - data _null_; - file &zipReferrence.(license.sas); - put " "; - put " Copyright (c) %sysfunc(today(),year4.) &packageAuthor. "; - put " "; - put " Permission is hereby granted, free of charge, to any person obtaining a copy "; - put ' of this software and associated documentation files (the "Software"), to deal '; - put " in the Software without restriction, including without limitation the rights "; - put " to use, copy, modify, merge, publish, distribute, sublicense, and/or sell "; - put " copies of the Software, and to permit persons to whom the Software is "; - put " furnished to do so, subject to the following conditions: "; - put " "; - put " The above copyright notice and this permission notice shall be included "; - put " in all copies or substantial portions of the Software. "; - put " "; - put ' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR '; - put " IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, "; - put " FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE "; - put " AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER "; - put " LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, "; - put " OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE "; - put " SOFTWARE. "; - put " "; - run; - %end; - -/* package metadata */ -data _null_; - if 0 then set &filesWithCodes. nobs=NOBS; - if NOBS = 0 then - do; - putlog "WARNING:[&sysmacroname.] No files to create package."; - stop; - end; - file &zipReferrence.(packagemetadata.sas); - - put ' data _null_; '; /* simple "%local" returns error while loading package */ - put ' call symputX("packageName", " ", "L");'; - put ' call symputX("packageVersion", " ", "L");'; - put ' call symputX("packageTitle", " ", "L");'; - put ' call symputX("packageAuthor", " ", "L");'; - put ' call symputX("packageMaintainer", " ", "L");'; - put ' call symputX("packageEncoding", " ", "L");'; - put ' call symputX("packageLicense", " ", "L");'; - put ' run; '; - - put ' %let packageName =' "&packageName.;"; - put ' %let packageVersion =' "&packageVersion.;"; - put ' %let packageTitle =' "&packageTitle.;"; - put ' %let packageAuthor =' "&packageAuthor.;"; - put ' %let packageMaintainer =' "&packageMaintainer.;"; - put ' %let packageEncoding =' "&packageEncoding.;"; - put ' %let packageLicense =' "&packageLicense.;"; - put ' ; '; - - stop; -run; - -/* loading package files */ -data _null_; - if NOBS = 0 then stop; - - file &zipReferrence.(load.sas) lrecl=32767; - - put 'filename package list;' /; - put ' %put NOTE- ;'; - put ' %put NOTE: ' @; put "Loading package &packageName., version &packageVersion., license &packageLicense.; "; - put ' %put NOTE: ' @; put "*** &packageTitle. ***; "; - put ' %put NOTE- ' @; put "Generated: %sysfunc(datetime(), datetime21.); "; - put ' %put NOTE- ' @; put "Author(s): &packageAuthor.; "; - put ' %put NOTE- ' @; put "Maintainer(s): &packageMaintainer.; "; - put ' %put NOTE- ;'; - put ' %put NOTE- Write %nrstr(%%)helpPackage(' "&packageName." ') for the description;'; - put ' %put NOTE- ;'; - put ' %put NOTE- *** START ***; ' /; - - put '%include package(packagemetadata.sas) / nosource2;' /; /* <- copied also to loadPackage macro */ - isFunction = 0; - isFormat = 0; - - %if (%bquote(&packageRequired.) ne ) - or (%bquote(&packageReqPackages.) ne ) - %then - %do; - put ' data _null_; '; - put ' call symputX("packageRequiredErrors", 0, "L"); '; - put ' run; '; - %end; - - %if %bquote(&packageRequired.) ne %then - %do; - put ' %put NOTE- *Testing required SAS components*%sysfunc(DoSubL( '; /* DoSubL() */ - put ' options nonotes nosource %str(;) '; - put ' options ls=max ps=max %str(;) '; - put ' /* temporary redirect log */ '; - put ' filename _stinit_ TEMP %str(;) '; - put ' proc printto log = _stinit_ %str(;) run %str(;) '; - put ' /* print out setinit */ '; - put ' proc setinit %str(;) run %str(;) '; - put ' proc printto %str(;) run %str(;) '; - - put ' data _null_ %str(;) '; - put ' /* loadup checklist of required SAS components */ '; - put ' if _n_ = 1 then '; - put ' do %str(;) '; - put ' length req $ 256 %str(;) '; - put ' declare hash R() %str(;) '; - put ' _N_ = R.defineKey("req") %str(;) '; - put ' _N_ = R.defineDone() %str(;) '; - put ' declare hiter iR("R") %str(;) '; - length packageRequired $ 32767; - packageRequired = upcase(symget('packageRequired')); - put ' do req = %bquote(' / packageRequired / ') %str(;) '; - put ' _N_ = R.add(key:req,data:req) %str(;) '; - put ' end %str(;) '; - put ' end %str(;) '; - put ' '; - put ' /* read in output from proc setinit */ '; - put ' infile _stinit_ end=eof %str(;) '; - put ' input %str(;) '; - /*put ' put "*> " _infile_ %str(;)';*/ /* for testing */ - put ' '; - put ' /* if component is in setinit remove it from checklist */ '; - put ' if _infile_ =: "---" then '; - put ' do %str(;) '; - put ' req = upcase(substr(_infile_, 4, 64)) %str(;) '; - put ' if R.find(key:req) = 0 then '; - put ' do %str(;) '; - put ' _N_ = R.remove() %str(;) '; - put ' end %str(;) '; - put ' end %str(;) '; - put ' '; - put ' /* if checklist is not null rise error */ '; - put ' if eof and R.num_items > 0 then '; - put ' do %str(;) '; - put ' put "ERROR- ###########################################" %str(;) '; - put ' put "ERROR- The following SAS components are missing! " %str(;) '; - put ' call symputX("packageRequiredErrors", 1, "L") %str(;) '; - put ' do while(iR.next() = 0) %str(;) '; - put ' put "ERROR- " req %str(;) '; - put ' end %str(;) '; - put ' put "ERROR- ###########################################" %str(;) '; - put ' put %str(;) '; - put ' end %str(;) '; - put ' run %str(;) '; - put ' filename _stinit_ clear %str(;) '; - put ' options notes source %str(;) '; - put ' ))*; '; - %end; - - %if %bquote(&packageReqPackages.) ne %then - %do; - put ' data _null_ ; '; - put ' length req name $ 64 SYSloadedPackages $ 32767; '; - length packageReqPackages $ 32767; - packageReqPackages = lowcase(symget('packageReqPackages')); - put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '; - put ' do; '; - put ' do until(EOF); '; - put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; '; - put ' substr(SYSloadedPackages, 1+offset, 200) = value; '; - put ' end; '; - put ' SYSloadedPackages = lowcase(SYSloadedPackages); '; - - put ' declare hash LP(); '; - put ' LP.defineKey("name"); '; - put ' LP.defineDone(); '; - put ' do _N_ = 1 to countw(SYSloadedPackages); '; - put ' name = scan(SYSloadedPackages, _N_); '; - put ' _RC_ = LP.add(); '; - put ' end; '; - - put ' missingPackagr = 0; '; - put ' do req = ' / packageReqPackages / ' ; '; - put ' name = lowcase(strip(scan(req, 1, " "))); '; - put ' vers = lowcase(compress(scan(req,-1, " "), ".", "KD")); '; - put ' if LP.check() ne 0 then '; - put ' do; '; - put ' missingPackagr = 1; '; - put ' put "ERROR: SAS package " req "is missing! " ; '; - put ' put ''ERROR- Try %loadPackage('' name ", requiredVersion = " vers ") to load it." ;'; - put ' end ; '; - put ' end ; '; - put ' if missingPackagr then call symputX("packageRequiredErrors", 1, "L"); '; - put ' end; '; - put ' else '; - put ' do; '; - put ' put "ERROR: No package loaded!"; '; - put ' call symputX("packageRequiredErrors", 1, "L"); '; - put ' do req = ' / packageReqPackages / ' ; '; - put ' name = lowcase(strip(scan(req, 1, " "))); '; - put ' vers = lowcase(compress(scan(req,-1, " "), ".", "KD")); '; - put ' put "ERROR: SAS package " req "is missing! " ; '; - put ' put ''ERROR- Try %loadPackage('' name ", requiredVersion = " vers ") to load it." ; '; - put ' end ; '; - put ' end; '; - put ' stop; '; - put 'run; '; - %end; - - %if (%bquote(&packageRequired.) ne ) - or (%bquote(&packageReqPackages.) ne ) - %then - %do; - put ' data _null_; '; - put ' if symget("packageRequiredErrors") = "1" then '; - put ' do; '; - put ' put "ERROR: Loading package &packageName. will be aborted!";'; - put ' put "ERROR- Required SAS components are missing."; '; - put ' put "ERROR- *** STOP ***"; '; - put ' ABORT; '; - put ' end; '; - put ' run; '; - %end; - - do until(eof); - set &filesWithCodes. end = EOF nobs=NOBS; - if (upcase(type)=:'CLEAN') then continue; /* cleaning files are only included in unload.sas */ - put '%put NOTE- ;'; - put '%put NOTE- Element of type ' type 'from the file "' file +(-1) '" will be included;' /; - - if upcase(type)=:'EXEC' then - do; - put '%put NOTE- ;'; - put '%put NOTE- Executing the following code: ;'; - put '%put NOTE- *****************************;'; - put 'data _null_;'; - put ' infile package(_' folder +(-1) "." file +(-1) ') lrecl=32767;'; - put ' input;'; - put ' putlog "*> " _infile_;'; - put 'run;' /; - put '%put NOTE- *****************************;'; - put '%put NOTE- ;'; - end; - - put '%include package(_' folder +(-1) "." file +(-1) ') / nosource2;' /; - - isFunction + (upcase(type)=:'FUNCTION'); - isFormat + (upcase(type)=:'FORMAT'); - - /* add the link to the functions' dataset, only for the first occurrence */ - if 1 = isFunction and (upcase(type)=:'FUNCTION') then - do; - put "options APPEND=(cmplib = work.%lowcase(&packageName.fcmp));"; - put '%put NOTE- ;'; - put '%put NOTE:[CMPLIB] %sysfunc(getoption(cmplib));' /; - end; - - /* add the link to the formats' catalog, only for the first occurrence */ - if 1 = isFormat and (upcase(type)=:'FORMAT') then - do; - put "options INSERT=( fmtsearch = work.%lowcase(&packageName.format) );"; - put '%put NOTE- ;'; - put '%put NOTE:[FMTSEARCH] %sysfunc(getoption(fmtsearch));'/; - end; - end; - - /* update SYSloadedPackages global macrovariable */ - put ' data _null_ ; '; - put ' length SYSloadedPackages $ 32767; '; - put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '; - put ' do; '; - put ' do until(EOF); '; - put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; '; - put ' substr(SYSloadedPackages, 1+offset, 200) = value; '; - put ' end; '; - put ' SYSloadedPackages = cats("#", translate(strip(SYSloadedPackages), "#", " "), "#"); '; - - put " if INDEX(lowcase(SYSloadedPackages), '#%lowcase(&packageName.)#') = 0 then "; - put ' do; '; - put " SYSloadedPackages = catx('#', SYSloadedPackages, '&packageName.'); "; - put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); '; - put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); '; - put ' put "NOTE: " SYSloadedPackages = ; '; - put ' end ; '; - put ' end; '; - put ' else '; - put ' do; '; - put " call symputX('SYSloadedPackages', '&packageName.', 'G'); "; - put " put 'NOTE: SYSloadedPackages = &packageName.'; "; - put ' end; '; - put ' stop; '; - put 'run; ' / ; - - put '%put NOTE- ;'; - put '%put NOTE: '"Loading package &packageName., version &packageVersion., license &packageLicense.;"; - put '%put NOTE- *** END ***;' /; - put "/* load.sas end */" /; - stop; -run; - -/* unloading package objects */ -data _null_; - /* break if no data */ - if NOBS = 0 then stop; - - file &zipReferrence.(unload.sas); - - put 'filename package list;' /; - put '%put NOTE: '"Unloading package &packageName., version &packageVersion., license &packageLicense.;"; - put '%put NOTE- *** START ***;' /; - - /* include "cleaning" files */ - EOF = 0; - do until(EOF); - set &filesWithCodes. end = EOF nobs = NOBS; - if not (upcase(type)=:'CLEAN') then continue; - put '%put NOTE- Code of type ' type 'generated from the file "' file +(-1) '" will be executed;'; - put '%put NOTE- ;' /; - put '%put NOTE- Executing the following code: ;'; - put '%put NOTE- *****************************;'; - put 'data _null_;'; - put ' infile package(_' folder +(-1) "." file +(-1) ') lrecl=32767;'; - put ' input;'; - put ' putlog "*> " _infile_;'; - put 'run;' /; - put '%put NOTE- *****************************;'; - put '%put NOTE- ;' /; - - put '%include package(_' folder +(-1) "." file +(-1) ') / nosource2;' /; - end; - - /* delete macros and formats */ - put 'proc sql;'; - put ' create table WORK._%sysfunc(datetime(), hex16.)_ as'; - put ' select memname, objname, objtype'; - put ' from dictionary.catalogs'; - put ' where '; - put ' ('; - put ' objname in ("*"' /; - /* list of macros */ - EOF = 0; - do until(EOF); - set &filesWithCodes. end = EOF nobs = NOBS; - if not (upcase(type)=:'MACRO') then continue; - put '%put NOTE- Element of type ' type 'generated from the file "' file +(-1) '" will be deleted;'; - put '%put NOTE- ;' /; - put ',"' fileshort upcase32. '"'; - end; - /**/ - put ' )'; - put ' and objtype = "MACRO"'; - put ' and libname = "WORK"'; - put ' )'; - put ' or'; - put ' ('; - put ' objname in ("*"' /; - /* list of formats */ - isFormat = 0; - EOF = 0; - do until(EOF); - set &filesWithCodes. end = EOF; - if not (upcase(type)=:'FORMAT') then continue; - put '%put NOTE- Element of type ' type 'generated from the file "' file +(-1) '" will be deleted;'; - put '%put NOTE- ;' /; - put ',"' fileshort upcase32. '"'; - isFormat + 1; - end; - put ' )'; - put ' and objtype in ("FORMAT" "FORMATC" "INFMT" "INFMTC")'; - put ' and libname = "WORK"'; - put " and memname = '%upcase(&packageName.format)'"; - put ' )'; - - put ' order by objtype, memname, objname'; - put ' ;'; - put 'quit;'; - - put 'data _null_;'; - put ' do until(last.memname);'; - put ' set WORK._last_;'; - put ' by objtype memname;'; - put ' if first.memname then call execute("proc catalog cat = work." !! strip(memname) !! " force;");'; - put ' call execute("delete " !! strip(objname) !! " / et =" !! objtype !! "; run;");'; - put ' end;'; - put ' call execute("quit;");'; - put 'run;'; - put 'proc delete data = WORK._last_;'; - put 'run;'; - - /* delete the link to the formats catalog */ - if isFormat then - do; - put "proc delete data = work.%lowcase(&packageName.format)(mtype = catalog);"; - put 'run;'; - put 'options fmtsearch = (%unquote(%sysfunc(tranwrd(' / - '%lowcase(%sysfunc(getoption(fmtsearch)))' / - ',%str(' "work.%lowcase(&packageName.)format" '), %str() ))));'; - put 'options fmtsearch = (%unquote(%sysfunc(compress(' / - '%sysfunc(getoption(fmtsearch))' / - ', %str(()) ))));'; - put '%put NOTE:[FMTSEARCH] %sysfunc(getoption(fmtsearch));' /; - end; - - /* delete functions */ - put "proc fcmp outlib = work.%lowcase(&packageName.fcmp).package;"; - isFunction = 0; - EOF = 0; - do until(EOF); - set &filesWithCodes. end = EOF; - if not (upcase(type)=:'FUNCTION') then continue; - put '%put NOTE- Element of type ' type 'generated from the file "' file +(-1) '" will be deleted;'; - put '%put NOTE- ;' /; - put 'deletefunc ' fileshort ';'; - isFunction + 1; - end; - put "run;" /; - - /* delete the link to the functions dataset */ - if isFunction then - do; - put 'options cmplib = (%unquote(%sysfunc(tranwrd(' / - '%lowcase(%sysfunc(getoption(cmplib)))' / - ',%str(' "work.%lowcase(&packageName.fcmp)" '), %str() ))));'; - put 'options cmplib = (%unquote(%sysfunc(compress(' / - '%sysfunc(getoption(cmplib))' / - ',%str(()) ))));'; - put '%put; %put NOTE:[CMPLIB] %sysfunc(getoption(cmplib));' /; - end; - - /* delete datasets */ - put "proc sql noprint;"; - EOF = 0; - do until(EOF); - set &filesWithCodes. end = EOF; - if not (upcase(type)=:'DATA') then continue; - put '%put NOTE- Element of type ' type 'generated from the file "' file +(-1) '" will be deleted;'; - put '%put NOTE- ;' /; - put 'drop table ' fileshort ';'; - end; - put "quit;" /; - - /* delete libraries */ - EOF = 0; - do until(EOF); - set &filesWithCodes. end = EOF; - if not (upcase(type)=:'LIBNAME') then continue; - put '%put NOTE- Element of type ' type 'generated from the file "' file +(-1) '" will be cleared;'; - put '%put NOTE- ;' /; - put 'libname ' fileshort ' clear;'; - end; - put "run;" /; - - /* update SYSloadedPackages global macrovariable */ - put ' data _null_ ; '; - put ' length SYSloadedPackages $ 32767; '; - put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '; - put ' do; '; - put ' do until(EOF); '; - put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; '; - put ' substr(SYSloadedPackages, 1+offset, 200) = value; '; - put ' end; '; - put ' SYSloadedPackages = cats("#", translate(strip(SYSloadedPackages), "#", " "), "#"); '; - - put " if INDEX(lowcase(SYSloadedPackages), '#%lowcase(&packageName.)#') > 0 then "; - put ' do; '; - put " SYSloadedPackages = tranwrd(SYSloadedPackages, '#&packageName.#', '##'); "; - put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); '; - put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); '; - put ' put "NOTE: " SYSloadedPackages = ; '; - put ' end ; '; - put ' end; '; - put ' stop; '; - put 'run; ' / ; - - - put '%put NOTE: '"Unloading package &packageName., version &packageVersion., license &packageLicense.;"; - put '%put NOTE- *** END ***;'; - put '%put NOTE- ;'; - - put "/* unload.sas end */"; - stop; -run; - -/* package help */ -data _null_; - /* break if no data */ - if NOBS = 0 then stop; - - file &zipReferrence.(help.sas); - length strX $ 32767; - - put 'filename package list;' /; - put ' %put NOTE- ;'; - put ' %put NOTE: '"Help for package &packageName., version &packageVersion., license &packageLicense.;"; - put ' %put NOTE: ' @; put "*** &packageTitle. ***; "; - put ' %put NOTE- ' @; put "Generated: %sysfunc(datetime(), datetime21.); "; - put ' %put NOTE- ' @; put "Author(s): &packageAuthor.; "; - put ' %put NOTE- ' @; put "Maintainer(s): &packageMaintainer.; "; - put ' %put NOTE- ;'; - put ' %put NOTE- *** START ***;' /; - - /* Use helpKeyword macrovariable to search for content (filename and type) */ - /* put '%local ls_tmp ps_tmp notes_tmp source_tmp; ';*/ - put '%let ls_tmp = %sysfunc(getoption(ls)); '; - put '%let ps_tmp = %sysfunc(getoption(ps)); '; - put '%let notes_tmp = %sysfunc(getoption(notes)); '; - put '%let source_tmp = %sysfunc(getoption(source)); '; - put 'options ls = MAX ps = MAX nonotes nosource; '; - put '%include package(packagemetadata.sas) / nosource2; ' /; - - put 'data _null_; '; - put ' if strip(symget("helpKeyword")) = " " then '; - put ' do until (EOF); '; - put ' infile package(description.sas) end = EOF; '; - put ' input; '; - put ' if upcase(strip(_infile_)) = "DESCRIPTION END:" then printer = 0; '; - put ' if printer then put "*> " _infile_; '; - put ' if upcase(strip(_infile_)) = "DESCRIPTION START:" then printer = 1; '; - put ' end; '; - put ' else stop; '; - put 'run; ' /; - - /* license info */ - put 'data _null_; '; - put ' if upcase(strip(symget("helpKeyword"))) = "LICENSE" then '; - put ' do until (EOF); '; - put ' infile package(license.sas) end = EOF; '; - put ' input; '; - put ' put "*> " _infile_; '; - put ' end; '; - put ' else stop; '; - put 'run; ' /; - - put 'data WORK._%sysfunc(datetime(), hex16.)_; '; - put 'infile cards4 dlm = "/"; '; - put 'input @; '; - put 'if 0 then output; '; - put 'length helpKeyword $ 64; '; - put 'retain helpKeyword "*"; '; - put 'drop helpKeyword; '; - put 'if _N_ = 1 then helpKeyword = strip(symget("helpKeyword")); '; - put 'if FIND(_INFILE_, helpKeyword, "it") or helpKeyword = "*" then '; - put ' do; '; - put ' input (folder order type file fileshort) (: $ 256.); '; - put ' output; '; - put ' end; '; - put 'cards4; '; - - EOFDS = 0; - do until(EOFDS); - /* content is created during package creation */ - set &filesWithCodes. end = EOFDS nobs = NOBS; - select; - when (upcase(type) = "DATA") fileshort2 = fileshort; - when (upcase(type) = "MACRO") fileshort2 = cats('%',fileshort,'()'); - when (upcase(type) = "FUNCTION") fileshort2 = cats(fileshort,'()'); - when (upcase(type) = "FORMAT") fileshort2 = cats('$',fileshort); - otherwise fileshort2 = fileshort; - end; - strX = catx('/', folder, order, type, file, fileshort, fileshort2); - put strX; - end; - - put ";;;;"; - put "run;" /; -/* - put 'proc print;'; - put 'run;'; -*/ - /* loop through content found and print info to the log */ - put 'data _null_; '; - put 'if upcase(strip(symget("helpKeyword"))) in (" " "LICENSE") then do; stop; end; '; - put 'if NOBS = 0 then do; ' / - 'put; put '' *> No help info found. Try %helpPackage(packageName,*) to display all.''; put; stop; ' / - 'end; '; - put ' do until(EOFDS); '; - put ' set WORK._last_ end = EOFDS nobs = NOBS; '; - put ' length memberX $ 1024; '; - put ' memberX = cats("_",folder,".",file); '; - /* inner datastep in call execute to read each embedded file */ - put ' call execute("data _null_; ");'; - put ' call execute("infile package(" || strip(memberX) || ") end = EOF; ");'; - put ' call execute(" printer = 0; ");'; - put ' call execute(" do until(EOF); ");'; - put ' call execute(" input; ");'; - put ' call execute(" if strip(_infile_) = cat(""/"",""*** "",""HELP END"","" ***"",""/"") then printer = 0; ");'; /* it looks like that because of comments */ - put ' call execute(" if printer then put ""*> "" _infile_; ");'; - put ' call execute(" if strip(_infile_) = cat(""/"",""*** "",""HELP START"","" ***"",""/"") then printer = 1; ");'; /* it looks like that because of comments */ - put ' call execute(" end; ");'; - put ' call execute(" put ""*> "" / ""*> ""; ");'; - put ' call execute(" stop; ");'; - put ' call execute("run; ");'; - put ' if lowcase(type) =: "data" then '; - put ' do; '; - put ' call execute("title ""Dataset " || strip(fileshort) || " from package &packageName. ""; ");'; - put ' call execute("proc contents data = " || strip(fileshort) || "; run; title; ");'; - put ' end; '; - /**/ - put " end; "; - put " stop; "; - put "run; "; - - /* cleanup */ - put "proc delete data = WORK._last_; "; - put "run; "; - put 'options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; ' /; - - put '%put NOTE: '"Help for package &packageName., version &packageVersion., license &packageLicense.;"; - put '%put NOTE- *** END ***;' /; - put "/* help.sas end */"; - - stop; -run; - -/* create package content */ -data _null_; - /* break if no data */ - if NOBS = 0 then stop; - - set &filesWithCodes. nobs = NOBS; - - call execute(cat ('filename _IN_ "', catx('/', base, folder, file), '";')); - call execute(cats("filename _OUT_ ZIP '", base, "/%lowcase(&packageName.).zip' member='_", folder, ".", file, "';") ); - /* copy code file into the zip */ - call execute('data _null_;'); - call execute(' rc = fcopy("_IN_", "_OUT_");'); - call execute('run;'); - /* test file content for help tags */ - call execute('data _null_;'); - call execute(' retain test .;'); - call execute(' infile _IN_ lrecl=32767 dlm="0a0d"x end=EOF;'); - call execute(' input;'); - call execute(' if strip(_infile_) = cat("/","*** ","HELP START"," ***","/") then test + (+1); '); - call execute(' if strip(_infile_) = cat("/","*** ","HELP END", " ***","/") then test + (-1); '); - call execute(' if (test not in (.,0,1)) or (EOF and test) then '); - call execute(' do; '); - call execute(' put "ERR" "OR: unmatching or nested HELP tags!" _N_=; '); - call execute(' abort; '); - call execute(' end; '); - call execute(' if (EOF and test=.) then put "WARN" "ING: no HELP tags in the file." ; '); - call execute('run;'); - - call execute('filename _IN_ clear;'); - call execute('filename _OUT_ clear;'); -run; - -proc sql; - drop table &filesWithCodes.; -quit; -filename &zipReferrence. clear; -%mend GeneratePackge; - - -/* - -options mprint; -ods html; -%GeneratePackge( - testowyPackageName -,0.01 -,author -,contact -,filesLocation=E:\SAS_WORK_5400\testyGeneratePackage -) - -*/ - -/* -TODO: -- modyfikacja helpa, sprawdzanie kodu danje funkcji/makra/typu [v] - -- opcjonalne sortowanie nazw folderow(_) [v] - -- wewnętrzna nazwaz zmiennej z nazwa pakietu (na potrzeby kompilacji) [v] - -- weryfikacja srodaowiska - -- weryfikacja "niepustosci" obowiazkowych argumentow [v] - -- dodac typ "clear" do czyszczenia po plikach 'exec' [v] - -- doadc sprawdzanie liczby wywołan procedury fcmp, format i slowa '%macro(' w plikach z kodami - -- syspackages - makrozmienna z lista zaladowanych pakietow [v] as SYSloadedPackages - -- dodac typ "iml", "ds2", "proto" - --lista wymaganych komponentow potrzebnych do działania SASa (na bazie proc SETINIT) [v] - --sparwdzanie domknietosci, parzystosci i wystepowania tagow HELP START - HELP END w plikach [v] - --weryfikacja nadpisywania makr [ ] -*/ - -/* - -%include "C:\SAS_PACKAGES\generatePackage.sas"; - -ods html; -%generatePackge(filesLocation=C:\SAS_PACKAGES\SQLinDS) -*/ - -/* -*"C:\SAS_PACKAGES\testyGeneratoraPakietow"; - -libname packages "E:\SAS_WORK_5400\testyGeneratePackage"; -filename packages "E:\SAS_WORK_5400\testyGeneratePackage"; - -%include packages(loadpackage.sas); - -dm 'log;clear'; -%loadpackage(testowypackagename) - - -*/ -/* - -%let helpKeyword=*; -%helpPackage(testowypackagename) -%unloadPackage(testowypackagename) - - -filename package ZIP "E:\SAS_WORK_5400\testyGeneratePackage\testowypackagename.zip"; - -%put %sysfunc(pathname(package)); - -%include package(load.sas); -%help()??? -%include package(unload.sas); - -filename package ZIP "C:\SAS_PACKAGES\testowypackagename.zip"; -%include package(load.sas); -%include package(unload.sas); - -filename package ZIP "C:\SAS_PACKAGES\macroarray.zip"; -%include package(load.sas); -%include package(unload.sas); -*/ diff --git a/generatePackage.sas_bckp2 b/generatePackage.sas_bckp2 deleted file mode 100644 index 7aed603..0000000 --- a/generatePackage.sas_bckp2 +++ /dev/null @@ -1,1167 +0,0 @@ -/*** HELP START ***/ - -/**############################################################################**/ -/* */ -/* Copyright Bartosz Jablonski, September 2019. */ -/* */ -/* Code is free and open source. If you want - you can use it. */ -/* I tested it the best I could */ -/* but it comes with absolutely no warranty whatsoever. */ -/* If you cause any damage or something - it will be your own fault. */ -/* You've been warned! You are using it on your own risk. */ -/* However, if you decide to use it don't forget to mention author: */ -/* Bartosz Jablonski (yabwon@gmail.com) */ -/* */ -/* Here is the official version: */ -/* - Copyright (c) 2019 Bartosz Jablonski (yabwon@gmail.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - */ -/**#############################################################################**/ - -/* Macros to generate SAS packages */ -/* A SAS package is a zip file containing a group - of SAS codes (macros, functions, datasteps generating - data, etc.) wrapped up together and %INCLUDEed by - a single load.sas file (also embedded inside the zip). -*/ - -/*** HELP END ***/ - - -/*** HELP START ***/ -%macro generatePackage( - /* location of package files */ - filesLocation=%sysfunc(pathname(work))/%lowcase(&packageName.) -)/secure; -/*** HELP END ***/ -%local zipReferrence filesWithCodes _DESCR_ _LIC_ _RC_ _PackageFileref_; -%let zipReferrence = _%sysfunc(datetime(), hex6.)_; -%let filesWithCodes = WORK._%sysfunc(datetime(), hex16.)_; -%let _DESCR_ = _%sysfunc(datetime(), hex6.)d; -%let _LIC_ = _%sysfunc(datetime(), hex6.)l; - -/* collect package metadata from the description.sas file */ -filename &_DESCR_. "&filesLocation./description.sas" lrecl = 256; -/* file contains licence */ -filename &_LIC_. "&filesLocation./license.sas" lrecl = 256; - -%if %sysfunc(fexist(&_DESCR_.)) %then - %do; - %put NOTE: Creating package%str(%')s metadata; - - %local packageName /* name of the package, required */ - packageVersion /* version of the package, required */ - packageTitle /* title of the package, required*/ - packageAuthor /* required */ - packageMaintainer /* required */ - packageEncoding /* required */ - packageLicense /* required */ - packageRequired /* optional */ - packageReqPackages /* optional */ - ; - data _null_; - infile &_DESCR_.; - input; - - select; - when(upcase(scan(_INFILE_, 1, ":")) = "PACKAGE") call symputX("packageName", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "VERSION") call symputX("packageVersion", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "AUTHOR") call symputX("packageAuthor", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "MAINTAINER") call symputX("packageMaintainer", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "TITLE") call symputX("packageTitle", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "ENCODING") call symputX("packageEncoding", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "LICENSE") call symputX("packageLicense", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "REQUIRED") call symputX("packageRequired", scan(_INFILE_, 2, ":"),"L"); - when(upcase(scan(_INFILE_, 1, ":")) = "REQPACKAGES") call symputX("packageReqPackages", scan(_INFILE_, 2, ":"),"L"); - - /* stop at the beginning of description */ - when(upcase(scan(_INFILE_, 1, ":")) = "DESCRIPTION START") stop; - otherwise; - end; - run; - - /* test for required descriptors */ - %if (%nrbquote(&packageName.) = ) - or (%nrbquote(&packageVersion.) = ) - or (%nrbquote(&packageAuthor.) = ) - or (%nrbquote(&packageMaintainer.) = ) - or (%nrbquote(&packageTitle.) = ) - or (%nrbquote(&packageEncoding.) = ) - or (%nrbquote(&packageLicense.) = ) - %then - %do; - %put ERROR: At least one of descriptors is missing!; - %put ERROR- They are required to create package.; - %put ERROR- &=packageName.; - %put ERROR- &=packageTitle.; - %put ERROR- &=packageVersion.; - %put ERROR- &=packageAuthor.; - %put ERROR- &=packageMaintainer.; - %put ERROR- &=packageEncoding.; - %put ERROR- &=packageLicense.; - %put ERROR- ; - %abort; - %end; - /* test for package name */ - %if %sysfunc(lengthn(&packageName.)) > 24 %then - %do; - %put ERROR: Package name is more than 24 characters long.; - %put ERROR- The name is used for functions%str(%') dataset name; - %put ERROR- and for formats%str(%') cataloge name (with suffix).; - %put ERROR- The length is %sysfunc(lengthn(&packageName.)). Try something shorter.; - %abort; - %end; - %else %if %sysfunc(lengthn(&packageName.)) < 3 %then - %do; - %put WARNING: Package name is less than 3 characters.; - %put WARNING- Maybe consider some _meaningful_ name?; - %end; - /* test characters in package name */ - %if %qsysfunc(lengthn(%qsysfunc(compress(&packageName.,,KDF)))) NE %qsysfunc(lengthn(&packageName.)) %then - %do; - %put ERROR: Package name contains illegal symbols.; - %put ERROR- The name is used for functions%str(%') dataset name; - %put ERROR- and for formats%str(%') cataloge name.; - %put ERROR- Only English letters, underscore(_), and digits are allowed.; - %put ERROR- Try something else. Maybe: %qsysfunc(compress(&packageName.,,KDF)) will do?; - %abort; - %end; - - %end; -%else - %do; - %put ERROR: The description.sas file is missing!; - %put ERROR- The file is required to create package%str(%')s metadata; - %abort; - %end; - -/* generate package fileref with MD5 to allow - different file reference for each package - while loading package with %loadPackage() macro - */ -%let _PackageFileref_ = P%sysfunc(MD5(%lowcase(&packageName.)),hex7.); - -/* test if version is a number */ -data _null_; - version = input("&packageVersion.", ?? best32.); - if not (version > 0) then - do; - put 'ERROR: Package version should be a positive NUMBER.'; - put 'ERROR- Current value is: ' "&packageVersion."; - put 'ERROR- Try something small, e.g. 0.1'; - put; - abort; - end; -run; - -/* create or replace the ZIP file for package */ -filename &zipReferrence. ZIP "&filesLocation./%lowcase(&packageName.).zip"; - -%if %sysfunc(fexist(&zipReferrence.)) %then - %do; - %put NOTE: Deleting file "&filesLocation./%lowcase(&packageName.).zip"; - %let _RC_ = %sysfunc(fdelete(&zipReferrence.)); - %end; - -/*** HELP START ***/ -/* - 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: --------------------------------------------------------------------------------------------- ->> **HEADER** << -Type: Package -Package: ShortPackageName -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) -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 _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: - --------------------------------------------------------------------------------------------- - - .. - | - +-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] - | - +-003_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] - | - +-004_data [one file one dataset] - | | - | +-abc.efg.sas [a file with a code creating dataset EFG in library ABC] - | - +-005_exec [so called "free code", content of the files will be printed - | | to the log before execution] - | | - | +- - | - +-006_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] - +-007_function - | | - | +- - | - +-_ - | - +-... - | - +-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] - | | - | +- - +-... - ... --------------------------------------------------------------------------------------------- - -*/ -/*** HELP END ***/ - -/* collect the data */ -data &filesWithCodes.; - base = "&filesLocation."; - length folder file lowcase_name $ 256 folderRef fileRef $ 8; - drop lowcase_name; - - folderRef = "_%sysfunc(datetime(), hex6.)0"; - - rc=filename(folderRef, base); - folderid=dopen(folderRef); - - do i=1 to dnum(folderId); drop i; - folder = dread(folderId, i); - if folder NE lowcase(folder) then - do; - put 'ERROR: Folder should be named ONLY with low case letters.'; - put 'ERROR- Current value is: ' folder; - lowcase_name = lowcase(folder); - put 'ERROR- Try: ' lowcase_name; - put; - abort; - end; - order = scan(folder, 1, "_"); - type = scan(folder,-1, "_"); - - fileRef = "_%sysfunc(datetime(), hex6.)1"; - rc = filename(fileRef, catx("/", base, folder)); - fileId = dopen(fileRef); - - file = ' '; - if fileId then - do j = 1 to dnum(fileId); drop j; - file = dread(fileId, j); - if file NE lowcase(file) then - do; - put 'ERROR: File with code should be named ONLY with low case letters.'; - put 'ERROR- Current value is: ' file; - lowcase_name = lowcase(file); - put 'ERROR- Try: ' lowcase_name; - put; - abort; - end; - fileshort = substr(file, 1, length(file) - 4); /* filename.sas -> filename */ - output; - end; - rc = dclose(fileId); - rc = filename(fileRef); - end; - - rc = dclose(folderid); - rc = filename(folderRef); - stop; -run; -proc sort data = &filesWithCodes.; - by order type file; -run; -/* -proc contents data = &filesWithCodes.; -run; -*/ -title1 "Package's location is: &filesLocation."; -title2 "User: &SYSUSERID., datetime: %qsysfunc(datetime(), datetime21.), SAS version: &SYSVLONG4."; -title3 "Package's encoding: '&packageEncoding.', session's encoding: '&SYSENCODING.'."; -title4 " ______________________________ "; -title5 "List of files for package: &packageName. (version &packageVersion.), license: &packageLicense."; -title6 "MD5 hashed fileref of package lowcase name: &_PackageFileref_."; -%if (%bquote(&packageRequired.) ne ) - or (%bquote(&packageReqPackages.) ne ) -%then - %do; - title7 "Required SAS licences: %qsysfunc(compress(%bquote(&packageRequired.), %str(%'%")))" ; /* ' */ - title8 "Required SAS packages: %qsysfunc(compress(%bquote(&packageReqPackages.),%str(%'%")))" ; /* " */ - %end; - - -proc print data = &filesWithCodes.(drop=base); -run; -title; - -/* packages description */ -data _null_; - infile &_DESCR_.; - file &zipReferrence.(description.sas); - input; - put _INFILE_; -run; - -/* package license */ -%if %sysfunc(fexist(&_LIC_.)) %then - %do; - data _null_; - infile &_LIC_.; - file &zipReferrence.(license.sas); - input; - put _INFILE_; - run; - %end; -%else - %do; - %put WARNING:[License] No license.sas file provided, default (MIT) licence file will be generated.; - %let packageLicense = MIT; - data _null_; - file &zipReferrence.(license.sas); - put " "; - put " Copyright (c) %sysfunc(today(),year4.) &packageAuthor. "; - put " "; - put " Permission is hereby granted, free of charge, to any person obtaining a copy "; - put ' of this software and associated documentation files (the "Software"), to deal '; - put " in the Software without restriction, including without limitation the rights "; - put " to use, copy, modify, merge, publish, distribute, sublicense, and/or sell "; - put " copies of the Software, and to permit persons to whom the Software is "; - put " furnished to do so, subject to the following conditions: "; - put " "; - put " The above copyright notice and this permission notice shall be included "; - put " in all copies or substantial portions of the Software. "; - put " "; - put ' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR '; - put " IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, "; - put " FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE "; - put " AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER "; - put " LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, "; - put " OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE "; - put " SOFTWARE. "; - put " "; - run; - %end; - -/* package metadata */ -data _null_; - if 0 then set &filesWithCodes. nobs=NOBS; - if NOBS = 0 then - do; - putlog "WARNING:[&sysmacroname.] No files to create package."; - stop; - end; - file &zipReferrence.(packagemetadata.sas); - - put ' data _null_; '; /* simple "%local" returns error while loading package */ - put ' call symputX("packageName", " ", "L");'; - put ' call symputX("packageVersion", " ", "L");'; - put ' call symputX("packageTitle", " ", "L");'; - put ' call symputX("packageAuthor", " ", "L");'; - put ' call symputX("packageMaintainer", " ", "L");'; - put ' call symputX("packageEncoding", " ", "L");'; - put ' call symputX("packageLicense", " ", "L");'; - put ' run; '; - - put ' %let packageName =' "&packageName.;"; - put ' %let packageVersion =' "&packageVersion.;"; - put ' %let packageTitle =' "&packageTitle.;"; - put ' %let packageAuthor =' "&packageAuthor.;"; - put ' %let packageMaintainer =' "&packageMaintainer.;"; - put ' %let packageEncoding =' "&packageEncoding.;"; - put ' %let packageLicense =' "&packageLicense.;"; - put ' ; '; - - stop; -run; - -/* loading package files */ -data _null_; - if NOBS = 0 then stop; - - file &zipReferrence.(load.sas) lrecl=32767; - - put "filename &_PackageFileref_. list;" /; - put ' %put NOTE- ;'; - put ' %put NOTE: ' @; put "Loading package &packageName., version &packageVersion., license &packageLicense.; "; - put ' %put NOTE: ' @; put "*** &packageTitle. ***; "; - put ' %put NOTE- ' @; put "Generated: %sysfunc(datetime(), datetime21.); "; - put ' %put NOTE- ' @; put "Author(s): &packageAuthor.; "; - put ' %put NOTE- ' @; put "Maintainer(s): &packageMaintainer.; "; - put ' %put NOTE- ;'; - put ' %put NOTE- Write %nrstr(%%)helpPackage(' "&packageName." ') for the description;'; - put ' %put NOTE- ;'; - put ' %put NOTE- *** START ***; ' /; - - put '%include ' " &_PackageFileref_.(packagemetadata.sas) / nosource2; " /; /* <- copied also to loadPackage macro */ - isFunction = 0; - isFormat = 0; - - %if (%bquote(&packageRequired.) ne ) - or (%bquote(&packageReqPackages.) ne ) - %then - %do; - put ' data _null_; '; - put ' call symputX("packageRequiredErrors", 0, "L"); '; - put ' run; '; - %end; - - %if %bquote(&packageRequired.) ne %then - %do; - put ' %put NOTE- *Testing required SAS components*%sysfunc(DoSubL( '; /* DoSubL() */ - put ' options nonotes nosource %str(;) '; - put ' options ls=max ps=max %str(;) '; - put ' /* temporary redirect log */ '; - put ' filename _stinit_ TEMP %str(;) '; - put ' proc printto log = _stinit_ %str(;) run %str(;) '; - put ' /* print out setinit */ '; - put ' proc setinit %str(;) run %str(;) '; - put ' proc printto %str(;) run %str(;) '; - - put ' data _null_ %str(;) '; - put ' /* loadup checklist of required SAS components */ '; - put ' if _n_ = 1 then '; - put ' do %str(;) '; - put ' length req $ 256 %str(;) '; - put ' declare hash R() %str(;) '; - put ' _N_ = R.defineKey("req") %str(;) '; - put ' _N_ = R.defineDone() %str(;) '; - put ' declare hiter iR("R") %str(;) '; - length packageRequired $ 32767; - packageRequired = upcase(symget('packageRequired')); - put ' do req = %bquote(' / packageRequired / ') %str(;) '; - put ' _N_ = R.add(key:req,data:req) %str(;) '; - put ' end %str(;) '; - put ' end %str(;) '; - put ' '; - put ' /* read in output from proc setinit */ '; - put ' infile _stinit_ end=eof %str(;) '; - put ' input %str(;) '; - /*put ' put "*> " _infile_ %str(;)';*/ /* for testing */ - put ' '; - put ' /* if component is in setinit remove it from checklist */ '; - put ' if _infile_ =: "---" then '; - put ' do %str(;) '; - put ' req = upcase(substr(_infile_, 4, 64)) %str(;) '; - put ' if R.find(key:req) = 0 then '; - put ' do %str(;) '; - put ' _N_ = R.remove() %str(;) '; - put ' end %str(;) '; - put ' end %str(;) '; - put ' '; - put ' /* if checklist is not null rise error */ '; - put ' if eof and R.num_items > 0 then '; - put ' do %str(;) '; - put ' put "ERROR- ###########################################" %str(;) '; - put ' put "ERROR- The following SAS components are missing! " %str(;) '; - put ' call symputX("packageRequiredErrors", 1, "L") %str(;) '; - put ' do while(iR.next() = 0) %str(;) '; - put ' put "ERROR- " req %str(;) '; - put ' end %str(;) '; - put ' put "ERROR- ###########################################" %str(;) '; - put ' put %str(;) '; - put ' end %str(;) '; - put ' run %str(;) '; - put ' filename _stinit_ clear %str(;) '; - put ' options notes source %str(;) '; - put ' ))*; '; - %end; - - %if %bquote(&packageReqPackages.) ne %then - %do; - - length packageReqPackages $ 32767; - packageReqPackages = lowcase(symget('packageReqPackages')); - /* try to load required packages */ - put 'data _null_ ; '; - put ' length req name $ 64 SYSloadedPackages $ 32767; '; - put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '; - put ' do; '; - put ' do until(EOF); '; - put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; '; - put ' substr(SYSloadedPackages, 1+offset, 200) = value; '; - put ' end; '; - put ' end; '; - put ' SYSloadedPackages = lowcase(SYSloadedPackages); '; - - put ' declare hash LP(); '; - put ' LP.defineKey("name"); '; - put ' LP.defineDone(); '; - put ' do _N_ = 1 to countw(SYSloadedPackages); '; - put ' name = scan(SYSloadedPackages, _N_); '; - put ' _RC_ = LP.add(); '; - put ' end; '; - - put ' do req = ' / packageReqPackages / ' ; '; - put ' name = lowcase(strip(scan(req, 1, " "))); '; - put ' vers = lowcase(compress(scan(req,-1, " "), ".", "KD")); '; - put ' if LP.check() ne 0 then '; - put ' do; '; - put ' put "NOTE: Trying to install required SAS package " req; '; - put ' call execute(cats(''%nrstr(%loadPackage('', name, ", requiredVersion = ", vers, "))")); '; - put ' end ; '; - put ' end ; '; - put ' stop; '; - put 'run; '; - - /* test if required packages are loaded */ - put 'data _null_ ; '; - put ' length req name $ 64 SYSloadedPackages $ 32767; '; - put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '; - put ' do; '; - put ' do until(EOF); '; - put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; '; - put ' substr(SYSloadedPackages, 1+offset, 200) = value; '; - put ' end; '; - put ' SYSloadedPackages = lowcase(SYSloadedPackages); '; - - put ' declare hash LP(); '; - put ' LP.defineKey("name"); '; - put ' LP.defineDone(); '; - put ' do _N_ = 1 to countw(SYSloadedPackages); '; - put ' name = scan(SYSloadedPackages, _N_); '; - put ' _RC_ = LP.add(); '; - put ' end; '; - - put ' missingPackagr = 0; '; - put ' do req = ' / packageReqPackages / ' ; '; - put ' name = lowcase(strip(scan(req, 1, " "))); '; - put ' vers = lowcase(compress(scan(req,-1, " "), ".", "KD")); '; - put ' if LP.check() ne 0 then '; - put ' do; '; - put ' missingPackagr = 1; '; - put ' put "ERROR: SAS package " req "is missing! Download it and" ; '; - put ' put ''ERROR- use %loadPackage('' name ", requiredVersion = " vers ") to load it." ;'; - put ' end ; '; - put ' end ; '; - put ' if missingPackagr then call symputX("packageRequiredErrors", 1, "L"); '; - put ' end; '; - put ' else '; - put ' do; '; - put ' put "ERROR: No package loaded!"; '; - put ' call symputX("packageRequiredErrors", 1, "L"); '; - put ' do req = ' / packageReqPackages / ' ; '; - put ' name = lowcase(strip(scan(req, 1, " "))); '; - put ' vers = lowcase(compress(scan(req,-1, " "), ".", "KD")); '; - put ' put "ERROR: SAS package " req "is missing! Download it and" ; '; - put ' put ''ERROR- use %loadPackage('' name ", requiredVersion = " vers ") to load it." ; '; - put ' end ; '; - put ' end; '; - put ' stop; '; - put 'run; '; - %end; - - %if (%bquote(&packageRequired.) ne ) - or (%bquote(&packageReqPackages.) ne ) - %then - %do; - put ' data _null_; '; - put ' if symget("packageRequiredErrors") = "1" then '; - put ' do; '; - put ' put "ERROR: Loading package &packageName. will be aborted!";'; - put ' put "ERROR- Required SAS components are missing."; '; - put ' put "ERROR- *** STOP ***"; '; - put ' ABORT; '; - put ' end; '; - put ' run; '; - %end; - - do until(eof); - set &filesWithCodes. end = EOF nobs=NOBS; - if (upcase(type)=:'CLEAN') then continue; /* cleaning files are only included in unload.sas */ - put '%put NOTE- ;'; - put '%put NOTE- Element of type ' type 'from the file "' file +(-1) '" will be included;' /; - - if upcase(type)=:'EXEC' then - do; - put '%put NOTE- ;'; - put '%put NOTE- Executing the following code: ;'; - put '%put NOTE- *****************************;'; - put 'data _null_;'; - put " infile &_PackageFileref_.(_" folder +(-1) "." file +(-1) ') lrecl=32767;'; - put ' input;'; - put ' putlog "*> " _infile_;'; - put 'run;' /; - put '%put NOTE- *****************************;'; - put '%put NOTE- ;'; - end; - - put '%include' " &_PackageFileref_.(_" folder +(-1) "." file +(-1) ') / nosource2;' /; - - isFunction + (upcase(type)=:'FUNCTION'); - isFormat + (upcase(type)=:'FORMAT'); - - /* add the link to the functions' dataset, only for the first occurrence */ - if 1 = isFunction and (upcase(type)=:'FUNCTION') then - do; - put "options APPEND=(cmplib = work.%lowcase(&packageName.fcmp));"; - put '%put NOTE- ;'; - put '%put NOTE:[CMPLIB] %sysfunc(getoption(cmplib));' /; - end; - - /* add the link to the formats' catalog, only for the first occurrence */ - if 1 = isFormat and (upcase(type)=:'FORMAT') then - do; - put "options INSERT=( fmtsearch = work.%lowcase(&packageName.format) );"; - put '%put NOTE- ;'; - put '%put NOTE:[FMTSEARCH] %sysfunc(getoption(fmtsearch));'/; - end; - end; - - /* update SYSloadedPackages global macrovariable */ - put ' data _null_ ; '; - put ' length SYSloadedPackages $ 32767; '; - put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '; - put ' do; '; - put ' do until(EOF); '; - put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; '; - put ' substr(SYSloadedPackages, 1+offset, 200) = value; '; - put ' end; '; - put ' SYSloadedPackages = cats("#", translate(strip(SYSloadedPackages), "#", " "), "#"); '; - - put " if INDEX(lowcase(SYSloadedPackages), '#%lowcase(&packageName.)#') = 0 then "; - put ' do; '; - put " SYSloadedPackages = catx('#', SYSloadedPackages, '&packageName.'); "; - put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); '; - put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); '; - put ' put "NOTE: " SYSloadedPackages = ; '; - put ' end ; '; - put ' end; '; - put ' else '; - put ' do; '; - put " call symputX('SYSloadedPackages', '&packageName.', 'G'); "; - put " put 'NOTE: SYSloadedPackages = &packageName.'; "; - put ' end; '; - put ' stop; '; - put 'run; ' / ; - - put '%put NOTE- ;'; - put '%put NOTE: '"Loading package &packageName., version &packageVersion., license &packageLicense.;"; - put '%put NOTE- *** END ***;' /; - put "/* load.sas end */" /; - stop; -run; - -/* unloading package objects */ -data _null_; - /* break if no data */ - if NOBS = 0 then stop; - - file &zipReferrence.(unload.sas); - - put "filename &_PackageFileref_. list;" /; - put '%put NOTE: '"Unloading package &packageName., version &packageVersion., license &packageLicense.;"; - put '%put NOTE- *** START ***;' /; - - /* include "cleaning" files */ - EOF = 0; - do until(EOF); - set &filesWithCodes. end = EOF nobs = NOBS; - if not (upcase(type)=:'CLEAN') then continue; - put '%put NOTE- Code of type ' type 'generated from the file "' file +(-1) '" will be executed;'; - put '%put NOTE- ;' /; - put '%put NOTE- Executing the following code: ;'; - put '%put NOTE- *****************************;'; - put 'data _null_;'; - put " infile &_PackageFileref_.(_" folder +(-1) "." file +(-1) ') lrecl=32767;'; - put ' input;'; - put ' putlog "*> " _infile_;'; - put 'run;' /; - put '%put NOTE- *****************************;'; - put '%put NOTE- ;' /; - - put '%include' " &_PackageFileref_.(_" folder +(-1) "." file +(-1) ') / nosource2;' /; - end; - - /* delete macros and formats */ - put 'proc sql;'; - put ' create table WORK._%sysfunc(datetime(), hex16.)_ as'; - put ' select memname, objname, objtype'; - put ' from dictionary.catalogs'; - put ' where '; - put ' ('; - put ' objname in ("*"' /; - /* list of macros */ - EOF = 0; - do until(EOF); - set &filesWithCodes. end = EOF nobs = NOBS; - if not (upcase(type)=:'MACRO') then continue; - put '%put NOTE- Element of type ' type 'generated from the file "' file +(-1) '" will be deleted;'; - put '%put NOTE- ;' /; - put ',"' fileshort upcase32. '"'; - end; - /**/ - put ' )'; - put ' and objtype = "MACRO"'; - put ' and libname = "WORK"'; - put ' )'; - put ' or'; - put ' ('; - put ' objname in ("*"' /; - /* list of formats */ - isFormat = 0; - EOF = 0; - do until(EOF); - set &filesWithCodes. end = EOF; - if not (upcase(type)=:'FORMAT') then continue; - put '%put NOTE- Element of type ' type 'generated from the file "' file +(-1) '" will be deleted;'; - put '%put NOTE- ;' /; - put ',"' fileshort upcase32. '"'; - isFormat + 1; - end; - put ' )'; - put ' and objtype in ("FORMAT" "FORMATC" "INFMT" "INFMTC")'; - put ' and libname = "WORK"'; - put " and memname = '%upcase(&packageName.format)'"; - put ' )'; - - put ' order by objtype, memname, objname'; - put ' ;'; - put 'quit;'; - - put 'data _null_;'; - put ' do until(last.memname);'; - put ' set WORK._last_;'; - put ' by objtype memname;'; - put ' if first.memname then call execute("proc catalog cat = work." !! strip(memname) !! " force;");'; - put ' call execute("delete " !! strip(objname) !! " / et =" !! objtype !! "; run;");'; - put ' end;'; - put ' call execute("quit;");'; - put 'run;'; - put 'proc delete data = WORK._last_;'; - put 'run;'; - - /* delete the link to the formats catalog */ - if isFormat then - do; - put "proc delete data = work.%lowcase(&packageName.format)(mtype = catalog);"; - put 'run;'; - put 'options fmtsearch = (%unquote(%sysfunc(tranwrd(' / - '%lowcase(%sysfunc(getoption(fmtsearch)))' / - ',%str(' "work.%lowcase(&packageName.)format" '), %str() ))));'; - put 'options fmtsearch = (%unquote(%sysfunc(compress(' / - '%sysfunc(getoption(fmtsearch))' / - ', %str(()) ))));'; - put '%put NOTE:[FMTSEARCH] %sysfunc(getoption(fmtsearch));' /; - end; - - /* delete functions */ - put "proc fcmp outlib = work.%lowcase(&packageName.fcmp).package;"; - isFunction = 0; - EOF = 0; - do until(EOF); - set &filesWithCodes. end = EOF; - if not (upcase(type)=:'FUNCTION') then continue; - put '%put NOTE- Element of type ' type 'generated from the file "' file +(-1) '" will be deleted;'; - put '%put NOTE- ;' /; - put 'deletefunc ' fileshort ';'; - isFunction + 1; - end; - put "run;" /; - - /* delete the link to the functions dataset */ - if isFunction then - do; - put 'options cmplib = (%unquote(%sysfunc(tranwrd(' / - '%lowcase(%sysfunc(getoption(cmplib)))' / - ',%str(' "work.%lowcase(&packageName.fcmp)" '), %str() ))));'; - put 'options cmplib = (%unquote(%sysfunc(compress(' / - '%sysfunc(getoption(cmplib))' / - ',%str(()) ))));'; - put '%put; %put NOTE:[CMPLIB] %sysfunc(getoption(cmplib));' /; - end; - - /* delete datasets */ - put "proc sql noprint;"; - EOF = 0; - do until(EOF); - set &filesWithCodes. end = EOF; - if not (upcase(type)=:'DATA') then continue; - put '%put NOTE- Element of type ' type 'generated from the file "' file +(-1) '" will be deleted;'; - put '%put NOTE- ;' /; - put 'drop table ' fileshort ';'; - end; - put "quit;" /; - - /* delete libraries */ - EOF = 0; - do until(EOF); - set &filesWithCodes. end = EOF; - if not (upcase(type)=:'LIBNAME') then continue; - put '%put NOTE- Element of type ' type 'generated from the file "' file +(-1) '" will be cleared;'; - put '%put NOTE- ;' /; - put 'libname ' fileshort ' clear;'; - end; - put "run;" /; - - %if %bquote(&packageReqPackages.) ne %then - %do; - length packageReqPackages $ 32767; - packageReqPackages = lowcase(symget('packageReqPackages')); - /* try to load required packages */ - put 'data _null_ ; '; - put ' length req name $ 64; '; - put ' put "NOTE-" / "NOTE: To unload additional required SAS packages execute: " / "NOTE-"; '; - put ' do req = ' / packageReqPackages / ' ; '; - put ' name = strip(scan(req, 1, " ")); '; - put ' put ''NOTE- %unloadPackage( '' name ")" ; '; - put ' end ; '; - put ' put "NOTE-" / "NOTE-"; stop; '; - put 'run; '; - %end; - - - /* update SYSloadedPackages global macrovariable */ - put ' data _null_ ; '; - put ' length SYSloadedPackages $ 32767; '; - put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '; - put ' do; '; - put ' do until(EOF); '; - put ' set sashelp.vmacro(where=(scope="GLOBAL" and name="SYSLOADEDPACKAGES")) end=EOF; '; - put ' substr(SYSloadedPackages, 1+offset, 200) = value; '; - put ' end; '; - put ' SYSloadedPackages = cats("#", translate(strip(SYSloadedPackages), "#", " "), "#"); '; - - put " if INDEX(lowcase(SYSloadedPackages), '#%lowcase(&packageName.)#') > 0 then "; - put ' do; '; - put " SYSloadedPackages = tranwrd(SYSloadedPackages, '#&packageName.#', '##'); "; - put ' SYSloadedPackages = compbl(translate(SYSloadedPackages, " ", "#")); '; - put ' call symputX("SYSloadedPackages", SYSloadedPackages, "G"); '; - put ' put "NOTE: " SYSloadedPackages = ; '; - put ' end ; '; - put ' end; '; - put ' stop; '; - put 'run; ' / ; - - - put '%put NOTE: '"Unloading package &packageName., version &packageVersion., license &packageLicense.;"; - put '%put NOTE- *** END ***;'; - put '%put NOTE- ;'; - - put "/* unload.sas end */"; - stop; -run; - -/* package help */ -data _null_; - /* break if no data */ - if NOBS = 0 then stop; - - file &zipReferrence.(help.sas); - length strX $ 32767; - - put "filename &_PackageFileref_. list;" /; - put ' %put NOTE- ;'; - put ' %put NOTE: '"Help for package &packageName., version &packageVersion., license &packageLicense.;"; - put ' %put NOTE: ' @; put "*** &packageTitle. ***; "; - put ' %put NOTE- ' @; put "Generated: %sysfunc(datetime(), datetime21.); "; - put ' %put NOTE- ' @; put "Author(s): &packageAuthor.; "; - put ' %put NOTE- ' @; put "Maintainer(s): &packageMaintainer.; "; - put ' %put NOTE- ;'; - put ' %put NOTE- *** START ***;' /; - - /* Use helpKeyword macrovariable to search for content (filename and type) */ - /* put '%local ls_tmp ps_tmp notes_tmp source_tmp; ';*/ - put '%let ls_tmp = %sysfunc(getoption(ls)); '; - put '%let ps_tmp = %sysfunc(getoption(ps)); '; - put '%let notes_tmp = %sysfunc(getoption(notes)); '; - put '%let source_tmp = %sysfunc(getoption(source)); '; - put 'options ls = MAX ps = MAX nonotes nosource; '; - put '%include' " &_PackageFileref_.(packagemetadata.sas) / nosource2; " /; - - put 'data _null_; '; - put ' if strip(symget("helpKeyword")) = " " then '; - put ' do until (EOF); '; - put " infile &_PackageFileref_.(description.sas) end = EOF; "; - put ' input; '; - put ' if upcase(strip(_infile_)) = "DESCRIPTION END:" then printer = 0; '; - put ' if printer then put "*> " _infile_; '; - put ' if upcase(strip(_infile_)) = "DESCRIPTION START:" then printer = 1; '; - put ' end; '; - put ' else stop; '; - put 'run; ' /; - - /* license info */ - put 'data _null_; '; - put ' if upcase(strip(symget("helpKeyword"))) = "LICENSE" then '; - put ' do until (EOF); '; - put " infile &_PackageFileref_.(license.sas) end = EOF; "; - put ' input; '; - put ' put "*> " _infile_; '; - put ' end; '; - put ' else stop; '; - put 'run; ' /; - - put 'data WORK._%sysfunc(datetime(), hex16.)_; '; - put 'infile cards4 dlm = "/"; '; - put 'input @; '; - put 'if 0 then output; '; - put 'length helpKeyword $ 64; '; - put 'retain helpKeyword "*"; '; - put 'drop helpKeyword; '; - put 'if _N_ = 1 then helpKeyword = strip(symget("helpKeyword")); '; - put 'if FIND(_INFILE_, helpKeyword, "it") or helpKeyword = "*" then '; - put ' do; '; - put ' input (folder order type file fileshort) (: $ 256.); '; - put ' output; '; - put ' end; '; - put 'cards4; '; - - EOFDS = 0; - do until(EOFDS); - /* content is created during package creation */ - set &filesWithCodes. end = EOFDS nobs = NOBS; - select; - when (upcase(type) = "DATA") fileshort2 = fileshort; - when (upcase(type) = "MACRO") fileshort2 = cats('%',fileshort,'()'); - when (upcase(type) = "FUNCTION") fileshort2 = cats(fileshort,'()'); - when (upcase(type) = "FORMAT") fileshort2 = cats('$',fileshort); - otherwise fileshort2 = fileshort; - end; - strX = catx('/', folder, order, type, file, fileshort, fileshort2); - put strX; - end; - - put ";;;;"; - put "run;" /; -/* - put 'proc print;'; - put 'run;'; -*/ - /* loop through content found and print info to the log */ - put 'data _null_; '; - put 'if upcase(strip(symget("helpKeyword"))) in (" " "LICENSE") then do; stop; end; '; - put 'if NOBS = 0 then do; ' / - 'put; put '' *> No help info found. Try %helpPackage(packageName,*) to display all.''; put; stop; ' / - 'end; '; - put ' do until(EOFDS); '; - put ' set WORK._last_ end = EOFDS nobs = NOBS; '; - put ' length memberX $ 1024; '; - put ' memberX = cats("_",folder,".",file); '; - /* inner datastep in call execute to read each embedded file */ - put ' call execute("data _null_; ");'; - put " call execute('infile &_PackageFileref_.(' || strip(memberX) || ') end = EOF; ');"; - put ' call execute(" printer = 0; ");'; - put ' call execute(" do until(EOF); ");'; - put ' call execute(" input; ");'; - put ' call execute(" if strip(_infile_) = cat(""/"",""*** "",""HELP END"","" ***"",""/"") then printer = 0; ");'; /* it looks like that because of comments */ - put ' call execute(" if printer then put ""*> "" _infile_; ");'; - put ' call execute(" if strip(_infile_) = cat(""/"",""*** "",""HELP START"","" ***"",""/"") then printer = 1; ");'; /* it looks like that because of comments */ - put ' call execute(" end; ");'; - put ' call execute(" put ""*> "" / ""*> ""; ");'; - put ' call execute(" stop; ");'; - put ' call execute("run; ");'; - put ' if lowcase(type) =: "data" then '; - put ' do; '; - put ' call execute("title ""Dataset " || strip(fileshort) || " from package &packageName. ""; ");'; - put ' call execute("proc contents data = " || strip(fileshort) || "; run; title; ");'; - put ' end; '; - /**/ - put " end; "; - put " stop; "; - put "run; "; - - /* cleanup */ - put "proc delete data = WORK._last_; "; - put "run; "; - put 'options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; ' /; - - put '%put NOTE: '"Help for package &packageName., version &packageVersion., license &packageLicense.;"; - put '%put NOTE- *** END ***;' /; - put "/* help.sas end */"; - - stop; -run; - -/* create package content */ -data _null_; - /* break if no data */ - if NOBS = 0 then stop; - - set &filesWithCodes. nobs = NOBS; - - call execute(cat ('filename _IN_ "', catx('/', base, folder, file), '";')); - call execute(cats("filename _OUT_ ZIP '", base, "/%lowcase(&packageName.).zip' member='_", folder, ".", file, "';") ); - /* copy code file into the zip */ - call execute('data _null_;'); - call execute(' rc = fcopy("_IN_", "_OUT_");'); - call execute('run;'); - /* test file content for help tags */ - call execute('data _null_;'); - call execute(' retain test .;'); - call execute(' infile _IN_ lrecl=32767 dlm="0a0d"x end=EOF;'); - call execute(' input;'); - call execute(' if strip(_infile_) = cat("/","*** ","HELP START"," ***","/") then test + (+1); '); - call execute(' if strip(_infile_) = cat("/","*** ","HELP END", " ***","/") then test + (-1); '); - call execute(' if (test not in (.,0,1)) or (EOF and test) then '); - call execute(' do; '); - call execute(' put "ERR" "OR: unmatching or nested HELP tags!" _N_=; '); - call execute(' abort; '); - call execute(' end; '); - call execute(' if (EOF and test=.) then put "WARN" "ING: no HELP tags in the file." ; '); - call execute('run;'); - - call execute('filename _IN_ clear;'); - call execute('filename _OUT_ clear;'); -run; - -proc sql; - drop table &filesWithCodes.; -quit; -filename &zipReferrence. clear; -%mend generatePackage; - - -/* - -options mprint; -ods html; -%generatePackage( - testowyPackageName -,0.01 -,author -,contact -,filesLocation=E:\SAS_WORK_5400\testyGeneratePackage -) - -*/ - -/* -TODO: -- modyfikacja helpa, sprawdzanie kodu danje funkcji/makra/typu [v] - -- opcjonalne sortowanie nazw folderow(_) [v] - -- wewnętrzna nazwaz zmiennej z nazwa pakietu (na potrzeby kompilacji) [v] - -- weryfikacja srodaowiska - -- weryfikacja "niepustosci" obowiazkowych argumentow [v] - -- dodac typ "clear" do czyszczenia po plikach 'exec' [v] - -- doadc sprawdzanie liczby wywołan procedury fcmp, format i slowa '%macro(' w plikach z kodami [ ] - -- syspackages - makrozmienna z lista zaladowanych pakietow [v] as SYSloadedPackages - -- dodac typ "iml", "ds2", "proto" - --lista wymaganych komponentow potrzebnych do działania SASa (na bazie proc SETINIT) [v] - --sparwdzanie domknietosci, parzystosci i wystepowania tagow HELP START - HELP END w plikach [v] - --weryfikacja nadpisywania makr [ ] - --add MD5(&packageName.) value hash instead "package" word in filenames [v] - --infolista o required packahes w unloadPackage [ ] -*/ - -/* - -%include "C:\SAS_PACKAGES\generatePackage.sas"; - -ods html; -%generatePackage(filesLocation=C:\SAS_PACKAGES\SQLinDS) -*/ - -/* -*"C:\SAS_PACKAGES\testyGeneratoraPakietow"; - -libname packages "E:\SAS_WORK_5400\testyGeneratePackage"; -filename packages "E:\SAS_WORK_5400\testyGeneratePackage"; - -%include packages(loadpackage.sas); - -dm 'log;clear'; -%loadpackage(testowypackagename) - - -*/ -/* - -%let helpKeyword=*; -%helpPackage(testowypackagename) -%unloadPackage(testowypackagename) - - -filename package ZIP "E:\SAS_WORK_5400\testyGeneratePackage\testowypackagename.zip"; - -%put %sysfunc(pathname(package)); - -%include package(load.sas); -%help()??? -%include package(unload.sas); - -filename package ZIP "C:\SAS_PACKAGES\testowypackagename.zip"; -%include package(load.sas); -%include package(unload.sas); - -filename package ZIP "C:\SAS_PACKAGES\macroarray.zip"; -%include package(load.sas); -%include package(unload.sas); -*/ diff --git a/loadpackage.sas b/loadpackage.sas index e9ff097..54e0470 100644 --- a/loadpackage.sas +++ b/loadpackage.sas @@ -8,8 +8,8 @@ /* I tested it the best I could */ /* but it comes with absolutely no warranty whatsoever. */ /* If you cause any damage or something - it will be your own fault. */ -/* You've been warned! You are using it on your own risk. */ -/* However, if you decide to use it don't forget to mention author: */ +/* You have been warned! You are using it on your own risk. */ +/* However, if you decide to use it do not forget to mention author: */ /* Bartosz Jablonski (yabwon@gmail.com) */ /* */ /* Here is the official version: */ @@ -36,17 +36,13 @@ */ /**#############################################################################**/ -/* Macros to load or to unload SAS packages */ -/* A SAS package is a zip file containing a group - of SAS codes (macros, functions, datasteps generating +/* Macros to load, to get help, or to unload SAS packages, version 20191118 */ +/* A SAS package is a zip file containing a group of files + with SAS code (macros, functions, datasteps generating data, etc.) wrapped up together and %INCLUDEed by a single load.sas file (also embedded inside the zip). */ -/* -TODO: -- macro for testing available packages in the packages' folder [DONE] checkout: %listPackages() -- add MD5(&packageName.) value hash instead "package" word in filenames [DONE] -*/ + /*** HELP END ***/ /*** HELP START ***/ @@ -237,6 +233,11 @@ TODO: options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; %mend helpPackage; +/* +TODO: +- macro for testing available packages in the packages folder [DONE] checkout: %listPackages() +- add MD5(&packageName.) value hash instead "package" word in filenames [DONE] +*/ /*** HELP START ***/ diff --git a/loadpackage.sas_bckp b/loadpackage.sas_bckp deleted file mode 100644 index 72219c2..0000000 --- a/loadpackage.sas_bckp +++ /dev/null @@ -1,228 +0,0 @@ -/*** HELP START ***/ - -/**############################################################################**/ -/* */ -/* Copyright Bartosz Jablonski, July 2019. */ -/* */ -/* Code is free and open source. If you want - you can use it. */ -/* I tested it the best I could */ -/* but it comes with absolutely no warranty whatsoever. */ -/* If you cause any damage or something - it will be your own fault. */ -/* You've been warned! You are using it on your own risk. */ -/* However, if you decide to use it don't forget to mention author: */ -/* Bartosz Jablonski (yabwon@gmail.com) */ -/* */ -/* Here is the official version: */ -/* - Copyright (c) 2019 Bartosz Jablonski (yabwon@gmail.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - */ -/**#############################################################################**/ - -/* Macros to load or to unload SAS packages */ -/* A SAS package is a zip file containing a group - of SAS codes (macros, functions, datasteps generating - data, etc.) wrapped up together and %INCLUDEed by - a single load.sas file (also embedded inside the zip). -*/ -/* -TODO: -- macro for testing available packages in the packages' folder [DONE] checkout: %listPackages() -*/ -/*** HELP END ***/ - -/*** HELP START ***/ - -%macro loadPackage( - packageName /* name of a package, - e.g. myPackageFile.zip, - required and not null */ -, path = %sysfunc(pathname(packages)) /* location of a package, - by default it looks for - location of "packages" fileref */ -, options = %str(LOWCASE_MEMNAME) /* possible options for ZIP filename */ -, source2 = /*source2*/ /* option to print out details, - null by default */ -, requiredVersion = . /* option to test if loaded package - is provided in required version */ -)/secure; -/*** HELP END ***/ - %local ls_tmp ps_tmp notes_tmp source_tmp; - %let ls_tmp = %sysfunc(getoption(ls)); - %let ps_tmp = %sysfunc(getoption(ps)); - %let notes_tmp = %sysfunc(getoption(notes)); - %let source_tmp = %sysfunc(getoption(source)); - options NOnotes NOsource ls=MAX ps=MAX; - - filename package ZIP - /* put location of package myPackageFile.zip here */ - "&path./%lowcase(&packageName.).zip" %unquote(&options.) - ; - %if %sysfunc(fexist(package)) %then - %do; - %include package(packagemetadata.sas) / &source2.; - filename package clear; - - /* test if required version of package is "good enough" */ - %if %sysevalf(&requiredVersion. > &packageVersion.) %then - %do; - %put ERROR: Required version is &requiredVersion.; - %put ERROR- Provided version is &packageVersion.; - %ABORT; - %end; - - options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; - filename package ZIP - "&path./%lowcase(&packageName.).zip" %unquote(&options.) - ENCODING = - %if %bquote(&packageEncoding.) NE %then &packageEncoding. ; - %else utf8 ; - ; - %include package(load.sas) / &source2.; - %end; - %else %put ERROR:[&sysmacroname] File "&path./&packageName..zip" does not exist; - filename package clear; - options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; -%mend loadPackage; - -/*** HELP START ***/ - -%macro unloadPackage( - packageName /* name of a package, - e.g. myPackageFile.zip, - required and not null */ -, path = %sysfunc(pathname(packages)) /* location of a package, - by default it looks for - location of "packages" fileref */ -, options = %str(LOWCASE_MEMNAME) /* possible options for ZIP filename */ -, source2 = /*source2*/ /* option to print out details, - null by default */ -)/secure; -/*** HELP END ***/ - %local ls_tmp ps_tmp notes_tmp source_tmp; - %let ls_tmp = %sysfunc(getoption(ls)); - %let ps_tmp = %sysfunc(getoption(ps)); - %let notes_tmp = %sysfunc(getoption(notes)); - %let source_tmp = %sysfunc(getoption(source)); - options NOnotes NOsource ls=MAX ps=MAX; - - filename package ZIP - /* put location of package myPackageFile.zip here */ - "&path./%lowcase(&packageName.).zip" %unquote(&options.) - ; - %if %sysfunc(fexist(package)) %then - %do; - %include package(packagemetadata.sas) / &source2.; - filename package clear; - options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; - filename package ZIP - "&path./%lowcase(&packageName.).zip" %unquote(&options.) - ENCODING = - %if %bquote(&packageEncoding.) NE %then &packageEncoding. ; - %else utf8 ; - ; - %include package(unload.sas) / &source2.; - %end; - %else %put ERROR:[&sysmacroname] File "&path./&packageName..zip" does not exist; - filename package clear; - options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; -%mend unloadPackage; - -/*** HELP START ***/ - -%macro helpPackage( - packageName /* name of a package, - e.g. myPackageFile.zip, - required and not null */ -, helpKeyword /* phrase to search in help, - when empty prints description - "*" means prints all help - "license" prints license */ -, path = %sysfunc(pathname(packages)) /* location of a package, - by default it looks for - location of "packages" fileref */ -, options = %str(LOWCASE_MEMNAME) /* possible options for ZIP filename */ -, source2 = /*source2*/ /* option to print out details, - null by default */ -)/secure; -/*** HELP END ***/ - %local ls_tmp ps_tmp notes_tmp source_tmp; - %let ls_tmp = %sysfunc(getoption(ls)); - %let ps_tmp = %sysfunc(getoption(ps)); - %let notes_tmp = %sysfunc(getoption(notes)); - %let source_tmp = %sysfunc(getoption(source)); - options NOnotes NOsource ls=MAX ps=MAX; - - filename package ZIP - /* put location of package myPackageFile.zip here */ - "&path./%lowcase(&packageName.).zip" %unquote(&options.) - ; - %if %sysfunc(fexist(package)) %then - %do; - %include package(packagemetadata.sas) / &source2.; - filename package clear; - options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; - filename package ZIP - "&path./%lowcase(&packageName.).zip" %unquote(&options.) - ENCODING = - %if %bquote(&packageEncoding.) NE %then &packageEncoding. ; - %else utf8 ; - ; - %include package(help.sas) / &source2.; - %end; - %else %put ERROR:[&sysmacroname] File "&path./&packageName..zip" does not exist; - filename package clear; - options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; -%mend helpPackage; - - -/*** HELP START ***/ - -/* - * Filenames references "packages" and "package" are keywords; - * the first one should be used to point folder with packages; - * the second is used internally by macros; - - * Example 1: - * assuming that _THIS_FILE_ and the SQLinDS package (sqlinds.zip file) - * are located in the "C:/SAS_PACKAGES/" folder - * copy the following code into autoexec.sas - * or run it in your SAS session -**/ -/* - -filename packages "C:/SAS_PACKAGES"; -%include packages(loadpackage.sas); - -%loadpackage(SQLinDS) -%helpPackage(SQLinDS) -%unloadPackage(SQLinDS) - -optional: - -libname packages "C:/SAS_PACKAGES/"; -%include "%sysfunc(pathname(packages))/loadpackage.sas"; - -%loadPackage(SQLinDS) -%helpPackage(SQLinDS) -%unloadPackage(SQLinDS) - -*/ -/*** HELP END ***/ diff --git a/macroarray.zip b/macroarray.zip index ed98ab9699166eff30d1edc8fed3f66a941ee8b6..2e0f47169d7d77710b54fff9159751e73c51e990 100644 GIT binary patch delta 4784 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 delta 3789 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 O1x%j4Gl$i0jei4>Z{)oI diff --git a/sqlinds.zip b/sqlinds.zip index 573578da41265c5e5b349423012c7033e074879c..ed02103f612126dac336a122a70fa180feebf4b8 100644 GIT binary patch delta 4632 zcmZ{ocQoAH*2hN+QKE)Hv>=2GBYN*-hB10i7@`a^TGWuA-ok_+h#ozn6QUC>8NG+- zy+#rx`s>Ma*IoCy@B5yA&TpN)_c?p*b$)Aq&!-ButwW)$K|n|c0)a?C(Isvb6z&8B zS94V`K?VMw5Aka%c(<=skYRDxotp7LAdPDv5Dkb9gtoSEaz;INL0LPZ>}=w*(2unls@ngOd!Ol8ySUUJvzmTU{P!>vyUCmCzGU_pk6C! zztY6lWGS|HLDfoNYaMv!s4(w6_pS;BltO;2#%prM7CSF66))K6mC|HTVs~4k$&G!f zq3+?aW9FB^cnR(by`<);=mRo_S~tK%uRLq0?eIyj<^rM2`TG(0UaNn@mn?zd5D8-e zN#PW_tpNArdk?W0KcYzmu1%zm=!k5npZ~6Ai&HbXThotm_roFcf>LM87bL-G^m1bR zA-%P!kg&72Xc#oa8;Zqde*mc^F{G?xZLwDPDK4yv9JJ4B%Fh|+@5Fw}6#!&$Zu-eu z&-uy%vrUw~7E#POt$R@tO#h4%jtRVMbA|U@&}CwI(G%sP;{%O{43Ttx(gr8AHlSzC zW_VMkBk3oCCa|N{;tpl*7>bEIx|M{dHC~yvudinqeSYUC)?k{2x-J~;kiRn?RA!SW z!8&+&+i9fN8>{J$JORW(?0Qks!5BfgT3pRJ+Oj`{u5r5F8NyFvekY}_>U@brMpzY3 zqvGh{?T8mK z^yNaDZvriBhiTrx=h@hKj%jIQu>pV0$cX8|*y1_DLJK?*suQfS78WF_7(=wa@E!N% zbU^>XZ4LTVrWbaCkxQ_%?1f|Dc5YhWlk?-{`^aw+S@N+%vcF~l3uNR{X-Hwg-1Ajz zZtSnRSo49E=<6PKO|eq4Z~Fs;me_gdocQkT_HqpyUkW(1E@Yu^She4vbi>+xY(}7V zwPf9f65v*xpSTr6@Ob8h+Was>4&GFwcF=vl36^nGDw$C0?NYKuRFu^7p_&JkFlYa8 zy@o!?B_)1*wXktuDEg)qRq*Mo=TBNN40~Gdb6)pJ6$Ha!ZX~){5LnB!8K?x81@7PboSc|3TE0TRYnz3GIzX)w4XtW!c-u@u6gHFr4W&y#ZA*!{^{g;n6Cuh#i)G!OiBKn`_{L4nxSb zah3ynu)7$7;njD#Y-qQPfifFEtLb=Fav@{M3upqceM!h>e1Fw|C@t$WDrNrZmt9^7 zYK@mRck}HZxhrWw3mvjp*w`GI^)s8s)1abfDXN5Hq4K&B6>h2$koGM-Yeava&>(A7 z2wDzFLBN4axd&g{@I1`*W9D&KkL+{ozvOi`Nb4sU)IlT@9`q3H&KoNlD1Q|5SduV6 z!v_KOs^#Mmj`4+}01NS7JI@#OZCb{~`bvGs)xQcp5qQQ;L+5H6k$qQTXo5W?x3Uw8{?U z&mqjz_M6aDk?JkzYaU`;UWi>c0-@`GopJ%9qM+nC<-hdnlCCq5k>=w>6Spc=iCPRz zPNC%fj#UreM_O+S87DE^msb@m9rWR@^MdxN)AdBS!gd%;{TY|Qy`p;RZzB?_PmcB@ zyl7@Je6ww!_q*&fJo?&R=Z1ij1*Bu^Gy9Z%jpDs0JU8?YOn={dMJY^LDoi@ew_X8^ z4)fRxikd~389lMD{)l@UihYPI@mifuM}0JBRkP1K{;?m#BavcIb+^IuzhfPdbA@e#d;X#NyRMzi^f46qku1=qTJv?Qrp%OL=1o78wEXa!@beta z_D6=%Kg!hnOE_xe<;@SJ80>&Hzw2Q@C`1JdqR45kV+omg#idN&H$ie<=3m2-?ODx# zbC2eEQM1pvEx@ND+H`qPdA{;iez1l+MNzek5W+RuzOgq(> zHLZpt`+j*^e2PO*d@cM5kD(oIk97XbIr-tDx64{TpJdF<lpgxuqo|r+d^dLSc8QBRdbk+$ zOI-&&#GhB`nqVP%r{LNmo0gFq@XcI#Qd|~D5EKBSR#hyT3CEWij(upD%yQ$3<)y4b z3AyB#FFto@z_0!ZT&HcG(9|&#r93xeeXhN1r8+Tece^8WrbAdpF@xVo89jP)U-I#} z88TL1W;IEPt0fus`@-*Tx}kFMJTAPgmTzCToH6G4^GmYrHyJoi>6dpOFvHB|WH3Jf zkglbJZpXOj?_JZ+k;l>An$giY|6Ux`;G3qJm zk4W*4({XHv(uK}li4@g4)o-n&#cOP`Ql}@&H>-QqBX?>j@?lB2wC4wo9+h{k1F0~( zl4}dnj$dNq2~ksyUToV7w9t3eW&(*C+6ZBarO3-k(9zL)Ys9t}6%E1?!j;Q48B2n? z5PRzjfNQK z)_Vz%ESw>Q_%OY6>!+6pS?E5o@Fn4Ub1Ay2Wkze9QX0dp4Y2X-*TCJI=F{oZ*wbI` z#F|b7ZwIv-xRjpgYZXVKSE()jQS>V04Szz4zl5SlU<~3r5ePIF|CNRt*g;N9fG-~v zU4G)+3dr58LA*qmacV(LKg?#i(9Ik|NF&LHUP*NHS7aP^&sj^OM`(EcIYy$=Wt=Zo ze5!=6D={@thZesKXVYpp7bYPP*!C@X6x_r`3$1TtJiFoPGZic-qG{Q#`@sBr_%n6X z*^v*`Q8(guQof9(ka39?K&$E_vPvfqCa!_c6ce@_7#^LEw?fr1=oLz4tw?)37^Zrj ziPqFJ(rzL4Hepjsx_l}<-u-A|lZExL{`>0<L<`jQyGZP2P;qUPpt zw4mMMJq_7+b$luNzk-S%jnqmCkZlNRHRlu^v)jV)F2-a$KR2=;w)bY9X2vz>tAuXl zXjIqX5cUJ!4K!Q6074F*r@wtLrOY#j%;F{??fh*DnqVZSd6wetP+QCJ2B(I<)tfr< zpvw-~7$Y419^>N*5+&%hB)ir8RkVq{nM@lveQ8N=H@k?&F@_?>Uxdm4;`l~G!RQ+v z96nB1+2JlJDq@Kh8yI3gAYK~TS{Uowb0ZAaX-TqvoeS0hL{y`&O}xe4Z$CpVA1onN z>SODt)(>`c1AmX+$MxHAq?uV6OsXpP`rrCwLp-VBtX^fa*P3{8$E%)=zc+Udn2vVOk1rqsgg*FkV<$S|9~xV6nCGJj4wqXH%ZQb zGC*}r>zgthV4D~B2I@EzkO3d_DNSN^*}8bFC2Vxst(eGS2H-I8hv5v)v{>Xi4BnHB z=*UUc4WcWn)Roq`aqY|W*$h8J`{e8_^Hz<>3$OW6)A8}o;sbSLKTOlT4fZl9k;FMa zvJ!w=t*U{Q@kW%7Kp7@on+z}Yas8_Ri0E0soM+?rctQ-e`3V;hpiD5n9vUq z(vSdF_!wb&q9wi>xu>?7Pu5<g#1%TmCyAuQ+7h+=s~gm1~nhJ;V?V3%tHxHt&np3S;p0mDeXBT%p^E>X{Wjq1-@ z+i4o^fEFKg`iKn0hjBCov3w(K8FCXL&ZL8x!|U7>bcURNm#YJ?IhI>xOBMYr#8y*t*+7Z?Pu; zL_g~?`$&}7y4}lKB8r@)j=`W$SVn@zHZZI~Wn-p=((Ua$b&9u!M@@=hrV<^RHD=#x z3@PWN2Qx=;grYsn#5aX@NK1%uF;jSFCy5Nnx9Id{CB0GNXZuoxqpHj4c`RGgW!h*+ z_aK&Yov5Til6_La(RKa)bg^T%7zyC%mJ5rJ5z`A64F1LMlaY1jCpm&5w&%T!g>l}& zMt1OK=LDu}4pXujZFS%PIpx0EpvTy`#71Pg)85EXrr3kn?w+IL%nbI#res}` zh!cFs**ELeo?}0!cwH1^(=+BE-!w^wKCrbK8F41T&M%v?cCKrUJtEQ61?c;l)wh%C zlMQRg`l+736NRM|+?ZHipe~H^+7EJIP7vlbGYT{uJ_-9_;<{1*t2g1V7q=1jjC5;~ zqbSPibkKkpM7k_Q02V-t{f7I+IalV+fSlO8_XS0E-oQ@nc|`TT0nv;0?NoR}cD>n0 zLG6bMISc z%pY#c0soskT%n4qfd^s-wFbHpgZ_&{2)Lu%wKeeY>8{%TznI3KcWlxXwa8@uYvu3p zcf9*`5a=(6@qb1A5fLo^RuTUhrb2ZUcBLue=Wo;f$rQrLtoMZ)1oFWAf4lv=DKhe~1uM&+xzahr zf3VDdW{GBxSK(s+W!Z5dB@qlBxsAf1el*iHV2e;wgkNK0z~@v==)pm-kcHlGG(gVF6d6H#!o+W*yW> z#`wlIuHC-_O^K&o$otmN-WHDTAdiFFErnFD^g7%b-cdR&p5y23E#=5DTE7=|Ixrou zPv4N5UU%MluGnV~NrB9}w?*r@@Aq=Vl@QY6l})#maNBhKd_JVb^%Z&OL(2PiF-Ag< z9$=k~4UHOF)~C2Aj073Rxf>3ILdyZYu>u(&bS7fre*Y=Wmt6EidYx_IMROth;0rl1 zq>`BkY$DXJ!tecqBiRUf*W1jRjAD7L;8mzJQ{nw~aS_gTBkn{|D{n{9{8qkH*!TMh zYlakA`e%^#jG}>?0n1Srw-Sy9F{fdQ+^J8&#(Hh%o$NZ?YXRJi`2#FYn}}xaV6=K3 zkhe!ARp^tMyDA5t& z`*C@Xt9;mD@mIA%d4~YAW0b~iW847RELK0U61R;D(s!>xFfJtI5~*M=AatYlDijLYnL3KWdP6e2RrffIBfO^Kx0KTuvWDj^a@=DQFA`09+jOfe z7n|1?LH_!-Qc^+^X;+RlC9Lny?oIZ3KHJ^(C`+*uAy2bgGriR7^7c3l*Xs*{N(Etk zwq$=6C1Euf37g$#9gR}s__x??_y_ULwhhKLXc@r*PCChc;0_It(P7GjB^hNqxlT==iQaKOngiBa}b``f-t zW-jfMl0&I?$;qb0eFPL3DNf`hle4#K!zWh7u2XGJO9jNeOS4k}o75+?(#d?&q2nkB zpxWup_HK%07~3_W351z``p~W0DPU&qa)2K0hZi4`{c>0EsUPYLzB*$L9l*t|m~`To z1q6howJ=rk8XC|9<4uZXoPpx_R9n5u zP}k3SDvh@})ZI&`zkiK^$>o^iDQe{OCMd&&(|!cky`&-{j1m#5rDvnwTH?3mO;35v zmqV65EUQo*Jyc#Uo>>pEK@K(f8a#)RScdPgv>OYc#6>iZktOw`>6-;^S#yWo8}`?1 zFfk|;Wd`r9u5!398LFADKV1Vat-5Pt=%ZE6zO75rk|5i=YdF7)h%bMB)Mi`XX7}@? zsh&@&eEm^jJfZo+=e)7Q&E|X$;ZWoADLnikSsRQU=@+b2>SG%!0vQ*ifWGnUw{4;f z)NkiBMQk;_{`7ECTEnrViX^w9(;OLrsaHsGeL3xu8|j<-7JW6<+p|yek*Rb(jtLQ= z$I(%L;3jjmNK!*iEb9?w2fH<9K#nc-IZC!d&IBG$)u6Ier>I{GW#xu-^3%E5_2+F! z0!c%*H#H$|_FS5FojkHhn2|%1NOoAF!$Sn|Ag6k%#;b?#dsLKs^bu49<=kq_uYe#D z)WX4;N?XI3&=dN|Uv!o@`>$(O?%o**)fekn1`6$aedqW@S#h}hV>t6uGp9HEj2!n6 z)+6ol_5&U-5`4D_@pA;qn<{p~NHvdf#-IGo=Qf7v>Ni)jRQcMob&fA0gz`p<%=cEh z7WF7wLEf4r_VbrS&Cj!b^i4X6zqcN>kWFJfdFG4W$;{FdYx?rAM4vuWt*&<^3F9m?p183=N-moJclST?G<8x9SiOS;c)`S>y(#8)d9FcVcW4W+vDkbY7y zGlW0vrP-!QnK;OjC>Ygt(`5CXgApB>ddgGXIf(q+a*Tk!4I6siR-+s4)d=jx6t64W zTq*med^~{ObAOkAd&F(BixMKn5jlW4n5s{>c~ifr`w3Whi6cr=&$1TsD08R&cyM#@c@ zE}t(ap9eV0JtZm18KM@Fp5u&%A>QI4OvhvN+P~s#s8x%5L|t!1B0kgAi!oscyw_qs z?GJYQ20hB{%74q#CjNJPhu9;^1*Q5{Jt^$7i3(&Vjd zQ`7E3%4rwyC+S>>BmSCd8V}}5wfmjNcS{Y&CGSA1e!#46tTfqfoF8PS9$VvGVPE1` zZ;n{Jup@MR>K(C7bqG%$O^X0uxtp-C`0YAOt3$`KvBVqVZ znOrI#)kd@1J~4P#peH=8S?ObnuzvsWs?|`~fN;0!k0o!Bz)wPQ`QlL~3#%)7R0M^F zK0i&6zZ!RDPXtDefl>!UJ_xw?$_Tp~jji=fjJBAb2KBv5bkF8r2&Z%>4suBHE)mTz zUx{#{7|oGt*r91^n&!NHOp##)H?m9eD)3F zIPFDzdQ@EYv4dqq5b;l$wxUTb&}yK1A4wERY?tJnn!;Qz*$0l8qL1#``KMeb&u@I# z+L%Rso2IWZ8X7ONoWCA9kSZwVJ2|1R)M=Su+Y@ukc1kaYa?aAQ08Hnodt5YGr+h?1o~L>L#ww7kmW6{_{gSrMCW09|!I5qzPucbIs2 ztC$nY^d!aN9`mfZr|=FNJ*QiftEV|*U4=EI4EiF~E0li%({n`q6;|VfxU-#?rz>^C z>)B%@Wu4^N$s@jOf?z^}>HLUN8^=mrt@Cu-=u+z?b?JB|4f}MgjJ6^|D^JZ6tt;W@ z%lJANA|hW^;jxsfgJ?VS-BBkN6DJhmau<1=eAL%PanbOkXw=c-#V*jXy|oj!Qc z-jr+^h6)UpRL<-DwKUTDoVtnTe8OeLja(nR&&j>XXf>DAcFO|z2wk)Hzkc~BHsC*o zC5~ek_}96FaB&b5zxwTEvUpwomT;H+H~v&`Hw9$==3oIO%>P)MEK&fVfa{M9`X_(@ zF2K9!05Sl;+YjX|7K92i(gPAP0RC&047=;3rqw|J01FKO0R9(Bl^OsD_Wl2G|COPu zzo%*Z3)o2q0Jyt&`~P3#rUM4aT7Uomniv3J`WNaA6!#s*$MuJa69^>y{P(45A^_lb z`@iuIlZLA}X+goiv>gOli7MD|k%C-*o(EU>dpp31YZc_C2LC4F{TnL5^9T7KL6CD8