I'm doing a lot of "reading between the lines" with Jezz' state of affairs.
It sounds like he's already writen the code to make the machine run forwards, and has run into a problem when the PLC looses power. The machine (I picture a pick-and-place, just for reference) is somewhere in the middle, and he wants to "run it backwards" to go to the start position.
He was hoping that he could solve this problem by having a seperate program in the EEPROM to home the machine, and which would self-destruct, bringing up the original code when it was done.
In that completed code, he already has logic to drive every output that his PLC has.
So your telling him to add a subroutine to program the "run backwards" logic and disabling the "run forward" logic might be interpreted as advocating using coils to drive outputs that exist somewhere in the disabled code - i.e., double coiling.
What I advocate (as a first principle) is for Jezz to have (at a minimum) THREE routines.
One is the "run forward sequence". One is the "run backwards sequence". The third is the "Output control routine".
With this model, it's easy to disable the forward logic, run the backwards logic, and avoid double coiling.
If he only has two routines (with each including the output coils), then it will work, but double coiling will be required.
Ron:
Yes, having a LAD 2 that contains nothing but JSRs is common, popular, and can lead to good code. Unfortunately, putting the entire program in LAD 2 is also common practice (I'm talking about programs over 100 rungs, of course. It might not make sense to divide up short programs).