in reply to conditional loop

You could also use a bare block instead of a loop:
{ stmt1..30 if c1 || ( c2 && c3 ) ; redo if ( c2 && c3 ) ; }