SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
Mark7
Obsidian | Level 7

Hi,

I have over 400 tables named similair E_PROD_2002_01, E_PROD_2002_02, .... E_PROD_2002_20, etc.  I need to alter a column in every table, to change length char from 10 to 15. I don't want to run every single code:

 proc sql;
alter table dds.E_PROD_2002_01
modify name char(15);
quit;

 

Is there an easier way?

1 ACCEPTED SOLUTION

Accepted Solutions
PaigeMiller
Diamond | Level 26

A macro loop would work here. Since you state there are 400 such tables, but only show 20 table names, and I do not know what the full 400 data set names would look like, I provide code for those 20 tables. (Macro will not work for 400 without modification)

 

UNTESTED CODE

 

%macro dothis;
    %do i =1 to 20;
        proc sql;
            alter table dds.E_PROD_2002_%sysfunc(putn(&i,z2.))
            modify name char(15);
        quit;
    %end;
%mend;
%dothis

 

--
Paige Miller

View solution in original post

3 REPLIES 3
PaigeMiller
Diamond | Level 26

A macro loop would work here. Since you state there are 400 such tables, but only show 20 table names, and I do not know what the full 400 data set names would look like, I provide code for those 20 tables. (Macro will not work for 400 without modification)

 

UNTESTED CODE

 

%macro dothis;
    %do i =1 to 20;
        proc sql;
            alter table dds.E_PROD_2002_%sysfunc(putn(&i,z2.))
            modify name char(15);
        quit;
    %end;
%mend;
%dothis

 

--
Paige Miller
Mark7
Obsidian | Level 7

Thank you! It works! i had to add %to

%do i =1  %to 20;

Mark7
Obsidian | Level 7
Works great, thank you

sas-innovate-wordmark-2025-midnight.png

Register Today!

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.


Register now!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 739 views
  • 1 like
  • 2 in conversation