It depends on what you are doing. Often, you can rerun a program in absolute, starting at a new work shift coordinate. This would require that you call new work shifts in your main program. The standard work shifts start at G54 and go to G59, and some controllers have even more available.
You can also use G92 calls in the main mill program, providing you return to home between each new call to the subroutine.
That is only some general guidance, because there could be many different things that you are trying to do with your subroutine. If you have many simple operations to perform at many locations in one part, then reprogramming the sub in incremental can be the way to go.