code 34427;
  procedure SOLTRIPIV(SUB, DIAG, SUPER, N, AID, PIV, B);
  value N; integer N; array SUB, DIAG, SUPER, AID, B;
  boolean array PIV;
  begin integer I, N1;
     real BI, BI1, R, S, T;
     N1:= N - 1;
     for I:= 1 step 1 until N1 do 
     begin if PIV[I] then 
        begin BI:= B[I+1]; BI1:= B[I] end 
        else 
        begin BI:= B[I]; BI1:= B[I+1] end;
        R:= B[I]:= BI / DIAG[I];
        B[I+1]:= BI1 - SUB[I] * R
     end;
     R:= B[N]:= B[N] / DIAG[N];
     T:= B[N1]:= B[N1] - SUPER[N1] * R;
     for I:= N - 2 step -1 until 1 do 
     begin S:= R; R:= T; T:= B[I]:= B[I] - SUPER[I] * R -
        (if PIV[I] then AID[I] * S else 0)
     end 
 end SOLTRIPIV

        eop