There is nothing wrong with JMP (or SKP). I use then regularly to enter new code - on-line. The code-change might take a day or two... depends on the extent of the change and, of course, the clock.
As in any case, careful planning and careful use are paramount in coding of any kind (new coding or code changes).
And, being the bloody heretic that I am (that is, unorthodox by some standards), I actually duplicate outputs in the new code that are already being used in the existing code! OH MY GOD!!! BLASPHEME!!! BLASPHEME!!! BURN HIM AT THE STAKE!!! BURN HIM TWICE!!! FOR GOD'S SAKE, BURN HIM THREE TIMES!!!
Of course, I'm an on-site, resident, programmer. I can afford to take my time to do what really needs to be done. After all, I have a day-to-day vested interest in keeping the operators happy!
OEMs make a "canned program", and that's that! The operators are left sucking hind-tit! It is what it is... good luck!
As an on-site programmer I can watch the process, day-in and day-out, and see what the operators need before the operators know that they might like this or that! I'm so far ahead of them in terms of what the difference is between what they want and what is possible, I NEVER get any "Gee, what if..." input from them!
The production crews that are working these days (except for the long-term Foremen) haven't got a clue that production has been improved 84%! And that was accomplished, by some moron (namely, me), sitting on-site, watching the process, day-in and day-out, detecting issues before the production crew even had the slightest idea that there might be any issues at all.
This is the value of an on-site guy that is intimately familiar with the process and the actual production requirements!
Then there is the idea of using JMP/LBL to act exactly as a subroutine would work! The only difference is that the code within the "faux-subroutine" is entirely accessible, for any length of time, during run-time, without causing any operational issues!
Too many programmers think that PLC programs must only be fixed and rigid in their construct and execution. Of course, this is indeed the case for an OEM program (unless there is a conscientious on-site programmer available). Aside from the OEM situation, too many on-site programmers simply don't recognize that, for those PLCs that allow real on-line programming, the process can be a living, changing, growing, and continuously maturing, process!
With respect to my process, I have more changes in-mind that will bring the process well beyond a 100% improvement! It's all done by looking at the process from the operator's point of view and looking at what is possible.
If you make/keep the operators happy, you can't help but make/keep management happy! This is based, of course, on the assumption that all operators want to look good before their bosses! Sounds like reasonable logic to me.
And finally, for an on-site programmer, using JMP/LBL, only as necessary, to reach Corporate goals, sounds entirely reasonable to me.
Once an OEM program shows up on my site (and yes, we do take them on), the OEM can go to... the lake, the ocean, or wherever he can float his high-dollar boat.
I have to say, I disagree very much with the very rigid, very orthodox, PLC-programming philosophy! Whether you like it or not, we are dealing with logic and computers!
With respect to process controls, if you can think it... it can be!