BookmarkSubscribeRSS Feed
WesBarris
Obsidian | Level 7

I am trying to set a file reference according to how a macro variable is set.  It appears as if SAS is ignoring my "if" blocks.  Here is some code:

%LET DRIVE=M;

LIBNAME USEFILE "C:\";

data _null_;

if ("&DRIVE" = 'M') then do;

   filename fileh 'this.txt';

   end;

if ("&DRIVE" = 'S') then do;

   filename fileh 'that.txt';

   end;

data test; infile fileh;

input test;

run;

When I try to run this the SAS code tries to open "that.txt".  Why?

2 REPLIES 2
art297
Opal | Level 21

I would guess that the lines are executed before the if statements are seen.  Will it work correctly if you wrap it in a macro and then change your if statements to %if statements?

Tom
Super User Tom
Super User

Use the FILENAME() function instead of the global filename statement.

CFC_SAS_Communities_400x225.jpgCFC_SAS_Communities_400x225.jpg

Call for content now open!

It's your turn to help shape SAS Innovate 2027. Share your expertise and inspire the SAS community.

Submit your proposal →

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
  • 2204 views
  • 0 likes
  • 3 in conversation