I have 66 datasets namely, Plan_1, Plan_2 ....... , Plan_66
I want to rename them to -- _2013_010_plan_sas, _2013_020_plan_sas, etc...there is no sequential order to these numbers, so I put them in an array,
array names{*} _2013_010_Plan_SAS
_2013_020_Plan_SAS
_2013_265_Plan_SAS
_2013_332_Plan_SAS .......;
But how do I use this array to rename the datasets via a macro, maybe.............or if there is any other way, please let me know.
Thanks, in advance!!
You need to generate code but a macro is not needed.
It will be easy read the new names as input DATA can generate the corresponding old name based on the location in the list.
data renames ;
input newname $32. ;
n+1;
oldname = catx('_','plan',n);
cards;
_2013_010_Plan_SAS
_2013_020_Plan_SAS
...
run;
proc sql noprint ;
select catx('=',oldname,newname) into :renames separated by ' '
from renames
;
quit;
proc datasets nolist lib=work;
change &renames ;
run; quit;
You need to generate code but a macro is not needed.
It will be easy read the new names as input DATA can generate the corresponding old name based on the location in the list.
data renames ;
input newname $32. ;
n+1;
oldname = catx('_','plan',n);
cards;
_2013_010_Plan_SAS
_2013_020_Plan_SAS
...
run;
proc sql noprint ;
select catx('=',oldname,newname) into :renames separated by ' '
from renames
;
quit;
proc datasets nolist lib=work;
change &renames ;
run; quit;
Thank you...it worked !!
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.