>Thanks; I find this an interesting alternative, but in many cases (it seems to me) the steps can NOT be coded into a single expression that returns .T. or .F. For instance, I do a SELECT - SQL, and want to check that exactly one record was found (_tally = 0).
Ok, my code assumes, that you either have an expression directly in the CASE or that you put each step in a separate function or method. If you want to have use other return values than .T.|.F., you can also do that:
DO CASE
CASE (DoFirstStep() = 0)
llSuccess = .F.
CASE (x <> y)
llSuccess = .F.
CASE NOT THIS.DoThirdStep()
llSuccess = .F.
OTHERWISE
llSuccess = .T.
ENDCASE
RETURN llSuccess
Armin