I can make the datastep only part slightly smaller. sashelp.vcolumn I think is the same table that dictionary columns accesses. and sysnobs is an automatic variable new in 9.3

data vars;
set sashelp.vcolumn;
where libname eq 'WORK' and memname eq 'TEMP' and type eq 'char';
run;

data two;
set temp;
obs=&sysnobs.;
miss=cmiss(of disp1-disp8);
nonmiss=obs-miss;
run;