DATA Step, Macro, Functions and more

How to use macro variable in infile statement

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 7
Accepted Solution

How to use macro variable in infile statement

Hi,

This is the first time I write a code with macro and I get stucked with seemingly very easy step.

%macro readdata(yrmo=);

data &yrmo;

          infile 'C:\Users\XXX\&yrmo';

          input cusip          $ 1-8 name $ 9-40 date          issue_date          maturity_date          trader_matrix $ flat_prc acc_int coupon          yield

duration amount_out          Moody_rat SP_rat callability $ call_prc putability $ put_prc ret ind_code

Fitch_rat index_flag convexity Duff_Phelps;

run;

%mend;

%readdata(yrmo = Y0173);

This code gives me an error message.

ERROR: Physical file does not exist, C:\XXX\&yrmo.

OK, the file actually exists and if I replace &yrmo with Y0173, the code works fine.

How should I get &yrmo automatically replaced by macro?

Any advice will be appreciated.  Thank you!

Yosh


Accepted Solutions
Solution
‎03-03-2012 05:06 PM
PROC Star
Posts: 7,363

How to use macro variable in infile statement

The file name in your infile statement has to be surrounded by double not single quotes.  Otherwise, the macro variable won't resolve.

View solution in original post


All Replies
Solution
‎03-03-2012 05:06 PM
PROC Star
Posts: 7,363

How to use macro variable in infile statement

The file name in your infile statement has to be surrounded by double not single quotes.  Otherwise, the macro variable won't resolve.

Contributor
Posts: 27

Re: How to use macro variable in infile statement

@art297Does the same work accessing/importing a URL?  I want to import a table from a url that has dynamic characters.

 

The code I have below is not working.

 

 

%let var1=2017;

%let var2='NC'; %let var9='Cary'; /

 

filename myfile url "http://aa.usno.navy.mil/cgi-bin/aa_rstablew.pl?ID=AA&year=&var1&task=0&state=&var2&place=&var9" lrecl=32767;

 

here is the original url.

filename myfile url "http://aa.usno.navy.mil/cgi-bin/aa_rstablew.pl?ID=AA&year=2017&task=0&state=NC&place=Cary" lrecl=32767;

 

Frequent Contributor
Posts: 75

Re: How to use macro variable in infile statement

Single quotes are not needed when assigning values to macro variables unless you want them as part of your string, which in your case I don't think you do. Try:
%let var2=NC; %let var9=Cary;
☑ This topic is SOLVED.

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

Discussion stats
  • 3 replies
  • 6054 views
  • 0 likes
  • 4 in conversation