code 34332;
procedure CHLSOLBND(A, N, W, B); value N, W; integer N, W;
array A, B;
begin integer I, K, IMAX, KK, W1;
        KK:= - W; W1:= W + 1;
        for K:= 1 step 1 until N do 
        begin KK:= KK + W1;
            B[K]:= (B[K] - VECVEC(if K <= W1 then 1 else K - W,
            K - 1, KK - K, B, A)) / A[KK]
        end;
        IMAX:= - 1;
        for K:= N step - 1 until 1 do 
        begin if IMAX < W then IMAX:= IMAX + 1;
            B[K]:= (B[K] - SCAPRD1(KK + W, W, K + 1, 1, IMAX, A, B)) /
            A[KK]; KK:= KK - W1
        end 
    end CHLSOLBND;
        eop