SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
GeorgeSAS
Lapis Lazuli | Level 10

Hello everyone,

 

I run sas on unix ,

I know the code below can get full path plus program name of the current program.

%let pathname = %sysfunc(getoption(sysin));

%put pathname;

But I only want path without program name. how to program?

 

Thanks!

1 ACCEPTED SOLUTION

Accepted Solutions
Astounding
PROC Star

There may be other ways, but you could certainly get it from &PATHNAME:

 

%let n_remove = %length(%scan(&pathname, -1, /));

 

%let pathname = %substr(&pathname, 1, %length(&pathname) - &n_remove - 1);

 

The extra -1 at the end removes the final / before the file name.

View solution in original post

2 REPLIES 2
Astounding
PROC Star

There may be other ways, but you could certainly get it from &PATHNAME:

 

%let n_remove = %length(%scan(&pathname, -1, /));

 

%let pathname = %substr(&pathname, 1, %length(&pathname) - &n_remove - 1);

 

The extra -1 at the end removes the final / before the file name.

GeorgeSAS
Lapis Lazuli | Level 10
%let path = %sysfunc(getoption(sysin));
%let n_remove3 = %eval(%length(%scan(&path, -1, /)) + %length(%scan(&path, -2, /)) + 1);
%let pathname3 = %substr(%sysfunc(getoption(sysin)), 1, %length(&path) - &n_remove3 - 1);

 %put pathname3 is : |&pathname3.|;

Thank you very much!

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 2448 views
  • 1 like
  • 2 in conversation