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 !!
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.