I haven't found an elegant solution, but I'm using this code in Enterprise Guide:
*-- start code --;
data _NULL_;
length WORD $8;
do j = 1 to 8;
WORD = byte(int(65 + ranuni(0)*26)) || WORD;
end;
call symput("mylibrary", WORD);
run;
libname &mylibrary 'physical_path_to_library';
*-- end code --;
This assign every time a different random LIBREF to you library.
It works.
Regards
Paolo
without the data step code, you can assign a "random" libref like
libname A%scan( %sysfunc( ranuni(0), 9.7 ),2,.) 'physical path to library' ;
it creates a libref that is unlikely to repeat having a random 7 digit number following that A.
I just tested it and it even works within a %sysfunc( repeat( ,4 )) where it happily assigned 5 unique libnames (all with the same path)
%sysfunc( repeat( %nrstr(
libname A %%scan( %%sysfunc( ranuni(0), 9.7 ), 2, . ) 'my path' ;
), 4 ) ) ;
The reason the macros libname won't release is its use in option sasmstore=macros ;
I'm not sure you can release the sasmstore assignment. (nor sure I would want to release it)
Use Scott's approach - not performing the assignment of the macros libname after the first run. Place "one-time-only" code in the autoexec.
Peter
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.