BookmarkSubscribeRSS Feed
deleted_user
Not applicable
I am running a macro with following syntax for options,

Dm 'log;clear;output;clear;';
LIBNAME XYZZZ 'U:\0xxx Protocol\xxxx_Completedata_XYZZ';
LIBNAME LIBRARY 'C:\Users\rmalapati\Documents\My SAS Files\Sangamo_SB_509_0801\0801 Protocol\formats';
options linesize=200 pagesize=100;
libname macros 'U:\Macros';
options mprint mlogic mstored sasmstore=macros;
options linesize=256 pagesize=100;
ods listing;

The following error gets displayed after running the sas for second time, but when running on a new sas sesison with the same syntax the error cant be seen.

I know why the error is being displayed but am not able to get the right solution

"ERROR: Unable to clear or re-assign the library MACROS because it is still in use.
ERROR: Error in the LIBNAME statement."

How to get around this?
5 REPLIES 5
SPR
Quartz | Level 8 SPR
Quartz | Level 8
Hello SAS_PHARM,

Simply move the line
[pre]
libname macros 'U:\Macros';
[/pre]
to the top and second (third, etc. ) time
submit a block of code not including this line.

Sincerely,
SPR
Ksharp
Super User
Or . You need one more statement to release your libname.


[pre]
libname macros clear;
[/pre]



Ksharp
PatrickG
SAS Employee
This won't help you now, but when 9.3 comes out, it will have a
%SYSMSTORECLEAR statement that will close the current library and clear the libref.
pcavicch
Calcite | Level 5

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

Peter_C
Rhodochrosite | Level 12

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

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 5 replies
  • 5190 views
  • 0 likes
  • 6 in conversation