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
The file name in your infile statement has to be surrounded by double not single quotes. Otherwise, the macro variable won't resolve.
The file name in your infile statement has to be surrounded by double not single quotes. Otherwise, the macro variable won't resolve.
@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;
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.
Ready to level-up your skills? Choose your own adventure.