Monday, January 10, 2011

Appending library into FMTSEARCH= option

FMTSEARCH= provides a convenient way for SAS to search for user defined formats at run time. The syntax is simple: just put the library names inside the parenthesis.
options FMTSEARCH=(yourlib)
Sometimes, user needs to append another directory to current search list. However, calling "options FMTSEARCH=" again will not make it happen - this will overwrite the old directory list with the new directory list.
If you are using SAS 9.1, what you can do is to get the current library list by using the GETOPTION function, storing the list in a macro variable and then append the new library list at the end of the macro variable. One trivial thing to note is that the GETOPTION returns the list with a pair of parenthesis. One way to get
rid of them is to use the COMPRESS function. The code follows:
%let _OLDLIB=%sysfunc(compress(%sysfunc(getoption(fmtsearch)), ")"));
options FMTSEARCH=&_OLDLIB, newlib);
In SAS 9.2, APPEND= option is introduced to the system options. For those lucky ones, simply use the following statement:
options APPEND=(FMTSEARCH=(newlib));
I am still waiting for my 9.2 to be installed. So, saving this new feature for later.

2 comments: