Схема с просчётом success на каждом шаге - и далее навешиванием охраны на следующий:

IF success THEN
...
success :=
END;
IF success THEN
...

- используется часто.

Александр предложил, смотрю, вариант, когда расчёт success выносится между IF: success := success & ...
Наверное, это лучше.