code 41023; real procedure RUN(X, M, N); value X, M, N; real X, M, N; begin real P, PCUM; integer IX, I, K, UP; if M < 0 ∨ ENTIER(M) < M then STATAL3 ERROR(“RUN”, 2, M) else if N < 0 ∨ ENTIER(N) < N then STATAL3 ERROR(“RUN”, 3, N) else if M > N then begin K:= M; M:= N; N:= K end; if M = 0 then RUN:= (if X < 1 then 0 else 1) else if X < 2 then RUN:= 0 else if M = N ∧ X ≥ M × 2 then RUN:= 1 else if X > M × 2 then RUN:= 1 else begin IX:= ENTIER(X); if IX ÷ 2 × 2 < IX then begin PCUM:= P:= RUNPROB(IX, M, N); K:= (IX - 1) / 2; P:= P×K×2 / (M + N - K × 2); PCUM:= PCUM + P end else begin K:= IX / 2; P:= PCUM:= RUNPROB(IX, M, N) end; for I:= K - 1 step -1 until 1 do begin P:= P × (M + N - I × 2) × I / (N - I) / (M - I) / 2; PCUM:= PCUM + P; P:= P×2×I / (M + N - 2 × I); PCUM:= PCUM + P end; RUN:= PCUM end end RUN; eop