waxinigou
%macro stringnum(string,obj);
data aa;
a="&string.";
b="&obj.";
la=%eval(%sysfunc(length(a)));
lb=%eval(%sysfunc(length(b)));
%put la;
idex=%eval(%index(a,b));
i=0;
%if %eval(idex)=0 %then i=0;
%if %eval(idex) %then %do;
%if la=lb %then i=1;
%if la>lb %then %do;
i=0;
%do %while(idex ne 0);
iidex=%eval(idex+lb);
aaa=%sysfunc(substr(a,iidex));
idex=%eval(%index(aaa,b));
i=%eval(i+1);
%put i;
%end;
%end;
%end;
%put The number of the string"&obj" in "&string" is :i;
%mend stringnum;
%stringnum(dsjfiasd$jaidfi$djiaf,$)
大家帮我看看这个宏程序,
我想计算字符串obj在string中出现的次数
acode
%macro stringnum(string,obj);
%let a=&string;
%let b=&obj;
%let la=%eval(%sysfunc(length(&a)));
%let lb=%eval(%sysfunc(length(&b)));
%let idex=%eval(%index(&a,&b));
%let i=0;
%if %eval(&idex)=0 %then %let i=0;
%if %eval(&idex) %then %do;
%if &la=&lb %then %let i=1;
%if %eval(&la)>%eval(&lb) %then %do;
%let i=0;
%do %while (%eval(&idex) ne 0);
%let iidex=%sysfunc(sum(%eval(&idex),%eval(&lb)));
%let a=%sysfunc(substr(&a,%eval(&iidex)));
%let idex=%eval(%index(&a,&b));
%let i=%sysfunc(sum(%eval(&i),1));
%put &i;
%end;
%end;
%end;
%put The number of the string"&obj" in "&string" is :&i;
%mend stringnum;
%stringnum(dsjfiasd$jaidfi$djiaf,$)
按你的思路修改了一下,你写得太复杂了,应该有更好的办法。