thank you ,i learn from your article,i write code as follows,but in the section of bootstrap ,there error (EXECUTION)invalid subscript or subscript out of.......
proc iml;
x = repeat({8.8,8.9,9.0,9.1,9.2,9.3,9.4,9.5,9.6,9.7,9.8,9.9,10,10.1,10.2,10.3},{1,2,1,3,11,
11,8,16,16,26,8,7,3,2,3,2})`;
start func(x);
call sort(x);
n = nrow(x);
median = median(x);
MAD = mad(x);
s = MAD/0.6745;

*---------------------------------------------------------------------------------------------------;
*cal sbt[205.6];
ui = (x-median)/(205.7*s);
flag = (ui>-1 & ui<1);

if sum(flag) -1 & ui<1);

if sum(flag) = 0.0001);
iter = iter +1;
Tbiold = Tbinew;
ui = (x-Tbi)/(c*MAD/0.6745);

if loc(ui1) then
ui[loc(ui 1)] = 1;
else ui = ui;
wi = (1-ui##2)##2;
Tbinew = (t(wi)*x)/(sum(wi));
epsilon = abs(Tbinew - Tbiold);
end;

*------------------------------------------------------------------------------------------------------;
*cal St3;
ui = (x- Tbi)/(3.7*Sbi3);
flag = (ui>-1 & ui<1);

if sum(flag) < n then
ui = ui[loc(flag)=1];
else if sum(flag)= n then
ui= ui;
ui_square = ui##2;
St3 = 3.7*Sbi3*sqrt((t(ui_square)*((1-ui_square)##4))/((t(1-ui_square)*(1-5#ui_square))*(max(1,-1+t(1-ui_square)*(1-5#ui_square)))));
tstatistic = tinv((1-(1-0.95)/2),n-1);
margin = tstatistic*sqrt(Sbi205##2 + St3##2);
ci = j(1,2,.);
ci[1] = Tbi - margin;
ci[2] = Tbi + margin;
return(ci);
finish;

*----------------------------------------------------------------------------------------------------------------------;
est = func(x);
print est;

*-----------------------------------------------------------------------------------------------------------------------;
*bootstrap;
call randseed(123);
B = 1000;
s = sample(x,B//nrow(x));
free ci;

do i = 1 to B;
B = func(s[,i]);
Bci = Bci//B;
end;
quit;