G97 is HAAS specific. Some FANUCs will read an M99Pxxxx as an internal sub call but it is looking for a line number and must be before the M30/M2. As for leaving a sub and going back to a different spot in the main, yes you can with any FANUC. From the sub program the format is like this:
M99P100 where P100 is a line number in the main, be very careful with this. This is a one shot technique and will not build the instance of the return point like you desire. The only way to enter at the same point and leave at a different one is with the use of counters and macro programming.
I don't really follow you loop counting question but the number of loops is set in the sub call. Depending on the control, one of two formats will most likely be used:
1) M98 P1000 L10 would loop program 1000 10 times.
2) M98 P100010 would do the same.
The control will not accept both, one or the other should work.
There are numerous other ways to accomplish this with Macro programming.
Experience is what you get when you don't get what you want.