*options mprint; %MACRO create_datasets(num_states=); libname states 'c:/states-datasets'; %DO k = 1 %TO &num_states; data state_data; infile "c:/states-files/state&k..txt" dlm=','; length state $ 20; length city $ 30; input state $; dsname = tranwrd(trim(state), ' ', '_'); call symput("name", state); call symput("dsname", dsname); do i = 1 to 10; input rank city $ popul; output; end; drop i state; run; data states.&dsname; set state_data; run; proc print data=states.&dsname; title "Ten Largest Cities in &name"; run; %END; %MEND; %create_datasets(num_states=50) run; quit;