Help using Base SAS procedures

How to create permanent libnames in my program

Reply
Super Contributor
Posts: 398

How to create permanent libnames in my program

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

PROC Star
Posts: 7,363

How to create permanent libnames in my program

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

Super Contributor
Posts: 398

How to create permanent libnames in my program

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.

Super User
Posts: 10,500

How to create permanent libnames in my program

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.

Super Contributor
Posts: 398

How to create permanent libnames in my program

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

PROC Star
Posts: 7,363

Re: How to create permanent libnames in my program

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.

Respected Advisor
Posts: 3,777

How to create permanent libnames in my program

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?

Super User
Posts: 5,083

How to create permanent libnames in my program

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?

PROC Star
Posts: 7,363

How to create permanent libnames in my 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?

Super Contributor
Posts: 398

How to create permanent libnames in my program

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

Super User
Posts: 5,083

Re: How to create permanent libnames in my program

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?

Super Contributor
Posts: 398

How to create permanent libnames in my program

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

Super User
Posts: 5,083

Re: How to create permanent libnames in my program

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.

Contributor
Posts: 53

How to create permanent libnames in my program

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

Super User
Posts: 5,083

How to create permanent libnames in my program

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

Ask a Question
Discussion stats
  • 27 replies
  • 1490 views
  • 0 likes
  • 8 in conversation