I have a program that others in my department need to use. Within this program I want to create a permanent libname so each user who runs this program will always have this libname.
Is there an option to the libname statement that will cause the libname to become permanent?
I don't have access to each users autoexec.sas or else I could put it there. I need it to happen in my program.
Is this possible?
Thank you so much
There is always a risk that you will override someone's existing libname or that they may override the one you assign.
An alternative you might be able to use is to use proc sql, and a view in which you imbed the libname in the code. That could work as the imbedded libname is local to the proc sql run and won't cause any conflicts.
If that is a possibility, take a look at: http://support.sas.com/documentation/cdl/en/sqlproc/62086/HTML/default/viewer.htm#a001395624.htm
Art,
Thank you so much for your reply. This will only be used for certain people and the libname we will use they will be sure to know what it is as not to overwrite.
I was hoping there was an option in the libname statement something like startup=yes.
Can this be done in a regular sas program?
Thanks again for all your help.
One approach would be to an and %INCLUDE statement to the AUTOEXEC.SAS file pointing to a common SAS program assigning LIBNAMES. Then each time their SAS session starts it would have the libraries available and the code would reflect any changes you made.
If they don't have an AUTOEXEC.SAS file then you would modify the SAS configuration file, look for something like SASV9.CFG and add a line like:
-autoexec='D:\data\autoexec.sas'
to point to a common autoexec with the code.
Ballardw,
Thanks for the reply.
My issue is I can not use the autoexec.sas or the config file it has to happen within my program. This way when the select users use it I know that the libname will always be there for them when they use specific apps and programs.
Thank you
Jerry,
It is obviously your call but, if a user were to go to tools and assign a libname as being permanent, it would result in being added to the sas registry.
I think you may have misunderstood what I was suggesting.
Say you had the following lines in a text file called s:\testreg where s was some network drive that everyone had access to:
[CORE\OPTIONS\LIBNAMES\!USER]
"ENGINE"=" "
"LIBRARY"="project "
"OPTIONS"=""
"PATH"="s:\\thefiles"
If you were to have everyone run the following code, the libary project would always appear whenever they open subsequent sas sessions:
proc registry import="s:\testreg";
run;
I obviously could be wrong, but I thought that was what you were trying to accomplish.
I don't understand.
In your program you have LIBNAME NAME 'path';
When the program runs should the path not exist you can create it with DCREATE.
Or is it the path that you need to somehow derive based on user specific info?
Or do you need make this LIBNAME known to all future SAS session/programs?
I'm with you. I don't understand either.
If you want your users to have a program with a permanent libname, why not put the LIBNAME statement in the program?
If the path has to change from one user to the next, why not give each user a program with two lines in it: a LIBNAME statement tailored to that user,
and a %include statement to fetch your program?
DataNull: I think the OP wants to make the LIBNAME known to all future sessions. I was wondering if the method proposed by Richard http://www.listserv.uga.edu/cgi-bin/wa?A2=ind0701C&L=sas-l&P=23578
could be modified to accomplish it?
Art,
I don't want the users to see any reference to the registry. Then if they change anything is could lead to other issues.
Thank you
jerry,
Are you saying that you don't want the users to know the LIBNAME definitions? You might be able to hide them from a user, but you can't hide them from a programmer. Once a LIBNAME has been defined, SAS saves that in the session's metadata (dictionary tables).
Question: Are users set up with a macro autocall library defined?
Question: Does your operating system allow you to have complete access to a file, but users to have read access only to that file?
DataNull,
I want this libname for future programs and apps to access.
For example say I write a sas program with my libname and there is a way to make it permanent. The next time I send out a sas program I already know the user has this libname to the data we are working with.
Thank you for your help
Here's a practical approach then.
Store all LIBNAME statements in a file.
Redefine one of the user's function keys within SAS to go to the Program Editor, %include the file, and run it.
The user will still have to hit the function key of course.
That way, you can even update the LIBNAMEs in the future and the users wouldn't have to change what they do.
Tools > New Library > tick "enable at start up"
Amazing. It worked perfectly. Does the definition travel with you, if you log on to a network from another machine?
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.