%let e1=%str(age+10=age2);
%let e2=%str(age=50 & sex=1);
%let e3=%str(round((sbpl1_1+sbpl1_2+sbpl1_3)/3,1));
%let e4=%str(sbpl1=round((sbpl1_1+sbpl1_2+sum(sbpl1_3))/3,1));
%macro varlist(inlst=, varlst=);
%global outlst;
%let n=%sysfunc(countw(&inlst,%str(=(*/)+&,)));
%let symbol=and|or|eq|lt|le|gt|ge|ne|contains|sum|abs|round;
%let m=%sysfunc(countw(&symbol,%str(|)));
%let outlst=;
%do i=1 %to &n;
%let var = %scan(&inlst,&i,%str(=(*/)+&,));
%if %sysfunc(nvalid(&var,%str(V7))) %then %do;
%do j=1 %to &m;
%let chk = %scan(&symbol,&j,%str(|));
%if %lowcase("&var") eq %lowcase("&chk") %then
%let var=;
%end;
%let outlst=&outlst. &var;
%end;
%end;
%let &varlst=&outlst;
%mend;
%varlist(inlst=&e4,varlst=varlst4);
code.txt
(898 Bytes)