I'm trying to use a macro to generate a user-created format that translates numbers (1, 2, ...) into state names (Alabama, Alaska, ...). I'm trying to do it using a do loop, assigning j values 1 through 51, and cycling it through the format statement. When I do that, it output the format after each state, so that the next state overwrites it and at the end I only have one format, 51 ="Wyoming". I've tried moving the do loop and %end all over, but can't figure it out. Here's what I have so far: DM Log 'Clear'; DM Out 'Clear'; Options PS=100 Symbolgen Mprint; Title; /* MACRO DO_FORMAT STARTS HERE */ %macro do_format; proc format; Any advice or suggestions? %do i=1 %to 51 ; %let state=%scan(Alabama@Alaska@Arizona@Arkansas@California@Colorado@Connecticut@Delaware@District of Columbia@ Florida@Georgia@Hawaii@Idaho@Illinois@Indiana@Iowa@Kansas@Kentucky@Louisiana@Maine@Maryland@Massachusetts@ Michigan@Minnesota@Mississippi@Missouri@Montana@Nebraska@Nevada@New Hampshire@New Jersey@New Mexico@ New York@North Carolina@North Dakota@Ohio@Oklahoma@Oregon@Pennsylvania@Rhode Island@South Carolina@ South Dakota@Tennessee@Texas@Utah@Vermont@Virginia@Washington@West Virginia@Wisconsin@Wyoming, &i, @); value _state &i = "&state" %end; run; %end; %mend do_format; %do_format;
... View more