Hello Fred.
You could access to the metadata of the the table (say with proc contents or dictionary.columns), build a macro variable with the list of the desired columns and then perform a DROP of those (always rewriting the dataset).
/* get table info */
proc contents data = YOURDATA out = _CONTENTS noprint;
run;
/* buil DROPLIST */
%let DROPLIST=;
data _null_;
set _CONTENTS;
where index(upcase(NAME),'VO'); /* Var names who contains 'VO' */
call symput('DROPLIST',catx(' ',symget('DROPLIST'),NAME));
run;
/* rewrite the dataset and drop the desired Vars */
%put &DROPLIST;
data YOURDATA;
set YOURDATA;
drop &DROPLIST;
run;
Greetings from Portugal.
Daniel Santos at
www.cgd.pt