5# pobel  
我再表達清楚吧...假如我利用 
do f=0.2,0.5,0.7;
我要在每一個位置都要輸入數據..很不方便..(即 data q1及 data q3)
所以我想問.....有冇有一個方法是可以只輸入一次數值便能生成答案呢??
謝謝..
%let f=0.9;  /* Input the Value.(0<=F<=.99)*/
data addyr;
set data end=end;
output;
if end then do until(yr=2005);  /*Add the End Year.*/
yr+1;  y=.;
output;
end;
run;
data Q1;
set  addyr;
retain ytop 0;
if _n_=1 then ytop=y;
else do;
f=&f;    
ytop=ytop*(1-f)+y;
end;
aaa=0; ybar=0;
do m=1 to _n_;
f=&f;  
aa= (1-f)**(m-1);
aaa=aa+aaa;   
end;
ybar=ytop/aaa;
run;
data Q2;
set Q1;
 retain  r1 0;   
r1=lag(ybar);
r=ybar/r1;
run;
data Q3;
set  Q2;
retain rtop 0;
if _n_=2 then rtop=r;
else do;
f=&f;    
rtop=(1-f)*rtop+r;
end;
aaa=0; rbar=0;
do m=2 to _n_;
f=&f;  
aa= (1-f)**(m-2);
aaa=aa+aaa;   
end;
rbar=rtop/aaa;
run;