DATA Step, Macro, Functions and more

unix sas get path of current program

Accepted Solution Solved
Reply
Super Contributor
Posts: 271
Accepted Solution

unix sas get path of current program

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!


Accepted Solutions
Solution
3 weeks ago
Super User
Posts: 6,776

Re: unix sas get path of current program

Posted in reply to GeorgeSAS

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


All Replies
Solution
3 weeks ago
Super User
Posts: 6,776

Re: unix sas get path of current program

Posted in reply to GeorgeSAS

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.

Super Contributor
Posts: 271

Re: unix sas get path of current program

Posted in reply to Astounding
%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!

☑ This topic is solved.

Need further help from the community? Please ask a new question.

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