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 !!
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.