I think your M98 call should refer to the program number of the subprogram, and I don't see that in your code. But, I never have run a subprogram on Haas, I've always used M97 local subroutines.
Apart from that, your code should run I believe. It could be the case that the way you have set up your code lacks enough gcodes for NCPlot to interpret it correctly when it returns from the sub. For example, although you switched back to absolute mode within the subprogram, NCPlot may or may not be able to interpret the axis moves in the main program correctly. You could add a G00 G90 in front of each move in the main to help NCPlot switch modes correctly.
First you get good, then you get fast. Then grouchiness sets in.
(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)