2 min read

Current Working Folder in SAS

whereamI

The concept of current working directory in SAS is not as important as it sounds. Most SAS users point to file reference (fileref) and library reference (libname, a “namespace”-like mechanism to access files ), which are much convenient in large project with multiple folders.

Sometimes I push files to the current folder in relatively small task because I don’t want to

  • jump to C:\Users\jhu\appdata\Local\Temp\SAS\Temporary Files_TD2820_like folder to get the temporary datasets (in WORK library)
  • hard code a folder to receive ODS outputs.

The demo codes(a SAS system autocall macro %xlog used):

/display current directory in LOG window/
%xlog(cd);

/*change current working directory */
x “cd a:\test”;

/display current directory in LOG window/
%xlog(cd);

/*output a dataset in current directory */
data “iris”;
set sashelp.iris;
run;

/*output a pdf file in current directory */
ods pdf file=”iris.pdf”;
proc print data=”iris”;
run;
ods pdf close;

/*show files in current directory */
%xlog(dir);

And the LOG window may like:

Path
—-
C:\Users\jhu

Path
—-
A:\test

    Directory: A:test
Mode        LastWriteTime   Length Name
—-        ————-   —— —-
-a— 10/8/2012  12:49 PM   113665 iris.pdf
-a— 10/8/2012  12:49 PM    13312 iris.sas7bdat

NOTES:

  • You can get autocall macro %xlog in (if SAS 9.3 in Windows 7)

C:\Program Files\SASHome\SASFoundation\9.3<span style=“color: #ff0000;“>core\sasmacro

An equivalent macro %xlst generates the shell command outputs to LIST window.

  • If prefer Windows Powershell, a similar macro can be used (put it to autocall if needed):

%macro pslog(cmd);
option nonotes;
filename pslogcmd pipe “powershell &cmd”;
data null;
file log;
infile pslogcmd;
input;
put INFILE;
run;
option notes;
%mend pslog;

Test the following commands:

%pslog(gl);
%pslog(get-location);
%pslog(get-host)