diff --git a/meta/mm_deletelibrary.sas b/meta/mm_deletelibrary.sas new file mode 100644 index 0000000..2f760a2 --- /dev/null +++ b/meta/mm_deletelibrary.sas @@ -0,0 +1,92 @@ +/** + @file + @brief Deletes a library by Name + + @details Used to delete a library. + Usage: + + %* create a library in the home directory ; + %mm_createlibrary( + libname=My Temp Library, + libref=XXTEMPXX, + tree=/User Folders/&sysuserid, + directory=%sysfunc(pathname(work)) + ) + + %* delete the library ; + %mm_deletelibrary(name=My Temp Library) + + After running the above, the following will be shown in the log: + + ![](https://i.imgur.com/Y4Tog24.png) + + @param [in] name= the name (not libref) of the library to be deleted + +

SAS Macros

+ @li mf_getuniquefileref.sas + @li mp_abort.sas + + + @version 9.4 + @author Allan Bowe + +**/ + +%macro mm_deletelibrary( + name= +)/*/STORE SOURCE*/; + + +/** + * Check if library exists and get uri + */ +data _null_; + length type uri $256; + rc=metadata_resolve("omsobj:SASLibrary?@Name='&name'",type,uri); + call symputx('checktype',type,'l'); + call symputx('liburi',uri,'l'); + putlog (_all_)(=); +run; +%if &checktype ne SASLibrary %then %do; + %put &sysmacroname: Library (&name) was not found, and so will not be deleted; + %return; +%end; + +%local fname1 fname2; +%let fname1=%mf_getuniquefileref(); +%let fname2=%mf_getuniquefileref(); + +filename &fname1 temp lrecl=10000; +filename &fname2 temp lrecl=10000; +data _null_ ; + file &fname1 ; + put ""; + put "SAS268436480"; + put ""; +run ; +proc metadata in=&fname1 out=&fname2 verbose;run; + +/* list the result */ +data _null_;infile &fname2; input; list; run; + +filename &fname1 clear; +filename &fname2 clear; + +/** + * Check deletion + */ +%local isgone; +data _null_; + length type uri $256; + rc=metadata_resolve("omsobj:SASLibrary?@Id='&liburi'",type,uri); + call symputx('isgone',type,'l'); +run; + +%mp_abort(iftrue=(&isgone = SASLibrary) + ,mac=&sysmacroname + ,msg=%str(Library (&name) NOT deleted) +) + +%put &sysmacroname: Library &name (&liburi) was successfully deleted; + +%mend;