DATA Step, Macro, Functions and more

Help with macro function

Reply
Frequent Contributor
Posts: 124

Help with macro function

I am trying to assign the file name to the variable.  I am getting error saying that symbolic variable names must be 32 or fewer character long.   Which macro function I should be using so that I do not have to worry about the length of the file? 

%let fname = my_file_name_is_xyz_20150202090056.txt;

data abc;

src_file_nm  = symget("&fname.");

run;

Super User
Posts: 5,079

Re: Help with macro function

Just get rid of SYMGET:

src_file_nm = "&fname.";

Super User
Posts: 5,255

Re: Help with macro function

You are mixing styles. Symget will resolve the value in the data step variable.

&fname will resolve the value in place.

So either remove the & in symget(), or skip symget().

Data never sleeps
Respected Advisor
Posts: 3,124

Re: Help with macro function

%let fname = my_file_name_is_xyz_20150202090056.txt;

data abc;

src_file_nm = symget("fname");

run;

 

You don't need & to refer a macro variable in symget(). Doing so will resolve first, then resolving outcome will become a macro variable name for symget to process. In this case the macro variable name is   my_file_name_is_xyz_20150202090056.txt, which violates two rules of naming convention for SAS variable/macro variable: 1. The length <=32 char 2. only alphabetic and _ can be part of the name, here you have dot .

Ask a Question
Discussion stats
  • 3 replies
  • 207 views
  • 0 likes
  • 4 in conversation