data kaplan;
input time survival1;
cards;
4 .6
5 .55
6 .3
7 .1
9  0
;
run;
 
proc iml;
use kaplan;
read all  var{TIME SURVIVAL1} into DM;
close;
 SURVIVAL1 = DM[,2]; TIME = DM[,1];
 n = nrow(DM); 
    
segment = J(nrow(DM),1,1); *print segment; 
 
SS=J(nrow(survival1),1,1);
do i = 1 to n ;
if 1=n then SS=0;
else if  i< n-1 then SS=SURVIVAL1-SURVIVAL1[i+1];
end;
 
TT=J(nrow(time),1,1);
 
do i = 1 to n;
if 1=n then TT=0;                     
else if i < n-1  then TT=time[i+1]-time;
end;
create kaplann var{time  survival1 SS TT };
append;
quit;
 
data kaplan_sum;
set kaplann;
sur_time=SS*TT;
drop time  survival1;
run;
 
proc print data=kaplan_sum;
run;
This output is wrong, there is supposed to be just 4 observations. The 4th and fifth observation for SS is wrong. 
SS= (.6-.55)+(.55-.3)+(.3-.1)+(.1-0)
TT=  (5-4)+(6-5)+((7-6)+(9-7))
This is wrong.
i   SS  TT  TT*SS
| 0.05 | 1 | 0.05 | 
| 0.25 | 1 | 0.25 | 
| 0.20 | 1 | 0.20 | 
| 1.00 | 1 | 1.00 | 
| 1.00 | 1 | 1.00 | 
This is how the correct output is supposed to look like;
SS= (.6-.55)+(.55-.3)+(.3-.1)+(.1-0)
TT=  (5-4)+(6-5)+((7-6)+(9-7))
   
 i    SS   TT       SS*TT
| 1 | 0.05 | 1 |         0.05 | 
| 2 | 0.25 | 1 |        0.25 | 
| 3 | 0.20 | 1 |        0.20 | 
| 4 | 0.1 | 2 |        0.2 |