Here's one way to extract just the variable names that you want. I prefer using PROC CONTENTS instead of dictionary.columns, but it's no big deal either way.
proc contents data=have noprint out=varnames (keep=name);
run;
data keepvars;
set varnames;
wave = input(substr(name, 2), ??2.); if wave = . then wave = input(substr(name, 2), 1.);
if wave < 4 then delete;
run;
This gives you a data dictionary with all variable names that you want to keep. From that point, other posters have already given good suggestions about how you can proceed.
... View more