I am importing text file and want to build the file path based on the month and year from a prompt variable, then use the file path in an infile statement. Normally strings are my thing but apparently not in SAS. I have included a condensed version of my code to show what I am trying to accomplish. Any advice?
Data myDataSet ; %let month = %sysfunc(putn(%sysfunc(month("&PV_ReportMonth."d)), z2.)); %let year = %sysfunc(year("&PV_ReportMonth."d)); /* I want to dynamically build the file name and path from a Date Prompt variable &PV_ReportMonth */ mytextfilepath = "C:\mypath\mytextfile"||@month||@day||".txt"; /* So if user chose May 2018. mytextfilepath would be "C:\mypath\mytextfile052018.txt" /* And use it like this */ infile mytextfilepath DLM='|' firstobs=2; input Var1 ~$10. Var2 $ Yada $ Blah $; run;
Since the macro statements are resolved before the data step runs, I like to keep them separate in code, for clarity:
%let month = %sysfunc(putn(%sysfunc(month("&PV_ReportMonth."d)), z2.));
%let year = %sysfunc(year("&PV_ReportMonth."d));
%let mytextfilepath = C:\mypath\mytextfile.&month.&day..txt;
Data myDataSet ;
infile "&mytextfilepath" DLM='|' firstobs=2;
input
Var1 ~$10.
Var2 $
Yada $
Blah $
;
run;
In reality, I would create the macro variable in a preceding data step with call symput, as that removes the need for the %sysfunc calls.
Since the macro statements are resolved before the data step runs, I like to keep them separate in code, for clarity:
%let month = %sysfunc(putn(%sysfunc(month("&PV_ReportMonth."d)), z2.));
%let year = %sysfunc(year("&PV_ReportMonth."d));
%let mytextfilepath = C:\mypath\mytextfile.&month.&day..txt;
Data myDataSet ;
infile "&mytextfilepath" DLM='|' firstobs=2;
input
Var1 ~$10.
Var2 $
Yada $
Blah $
;
run;
In reality, I would create the macro variable in a preceding data step with call symput, as that removes the need for the %sysfunc calls.
Perfect, Thank you Kurt! - it works perfect
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.