BookmarkSubscribeRSS Feed
jerry898969
Pyrite | Level 9

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

27 REPLIES 27
art297
Opal | Level 21

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

jerry898969
Pyrite | Level 9

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.

ballardw
Super User

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.

jerry898969
Pyrite | Level 9

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

art297
Opal | Level 21

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.

data_null__
Jade | Level 19

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?

Astounding
PROC Star

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?

art297
Opal | Level 21

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?

jerry898969
Pyrite | Level 9

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

Astounding
PROC Star

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?

jerry898969
Pyrite | Level 9

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

Astounding
PROC Star

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.

VX_Xc
Calcite | Level 5

Tools > New Library > tick "enable at start up"

Astounding
PROC Star

Amazing.  It worked perfectly.  Does the definition travel with you, if you log on to a network from another machine?

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

What is Bayesian Analysis?

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 27 replies
  • 3757 views
  • 0 likes
  • 8 in conversation