Maintenance approach
Everyone has their own approach, so I'm not disparaging anyone else's methdology - just trumpeting my own
When I started using conditional subroutines, it wasn't for speed or exclusitivity- it was to ease troubleshooting. And the difference I explained to my maintenance guys boiled down to two questions :
Old question : "What output didn't turn on?"
New Question : "What was the machine supposed to do that it didn't?"
Now really, these are the same question, but it's a difference of approach. If Cylinder X is supposed to go up and didn't, the sparky, and even myself, would probably search for the output bit, and try to figure out what logic didn't execute.
In my fault programming, I make every fault for every commanded movement unique. I don't just say "X did not go up" I say "X did not go up during homing" or "X did not go up after getting parts". Since every routine is clearly labelled, you know not only what stopped, but where.
Lastly, if the program hangs for some "mystery reason", since only a handful of routines are active, I can trace down through a handful of logic to look for where it stalled, instead of hundreds of rungs.
I guess I advocate conditional subroutines for the reason some others hate them - troubleshooting. With a little planning and the extra work up front, they make it alot easier.
TM