One thing that we have a lot of at SAS: installations of SAS software that we can run. I have SAS for Windows on my laptop, and I have access to many centralized instances of SAS that run on Linux and Windows servers. (I also have access to mainframe SAS, though it's been a while since I've used it. When I log in, I picture a Rube-Goldberg style mechanism that pokes an intern to mount a tape so my profile can be reloaded.)
I often develop programs using my local instance of SAS and SAS Enterprise Guide, but deploy them for use on a central server. I might run them as batch jobs or interactively with SAS Enterprise Guide or SAS Studio or even in SAS/IntrNet.
Our IT department wants SAS employees to have seamless access to their files whether on Windows or on Unix-style file systems, and so they make it easy to access the same network path from Windows (using UNC notation, or "\\server\path" syntax) and Unix (using "/node/usr/path" syntax). As I develop my SAS programs, I want the programs to work the same whether run from Windows or Unix, and I don't want to have to change LIBNAME paths each time. Fortunately, SAS programs are usually portable across different operating systems, and while SAS data sets might have different encodings across systems, SAS can always read a data set that was created by a different version.
I have a simple technique that references the proper path for the operating system that I'm using. I build a SAS macro variable by using the IFC function and the &SYSSCP automatic variable to check whether I'm running on Windows, then assign the path accordingly.
/* Use the IFC function as a shorthand for if-then, returning a character string */ %let tgtpath = %sysfunc( ifc(&SYSSCP. = WIN, \\sasprod\root\dept\mydept\project, /r/node/vol/vol01/mydept/project ) ); libname tgt "&tgtpath.";
When I run this on SAS for Linux, I see this in the log:
NOTE: Libref TGT was successfully assigned as follows: Engine: V9 Physical Name: /r/node/vol/vol01/mydept/project
And on Windows:
NOTE: Libref TGT was successfully assigned as follows: Engine: V9 Physical Name: \\sasprod\root\dept\mydept\project