I do not believe you are able to modify the local program positions how you want to. Your only choice will be to use a position register to maintain the positional information. If you are woried about operators (or other programs) modifying the position register, you could lock the position registers after modifying it.
However an alternative might be to use a frame to modify all the other positions. If you program the robot to have the sensored location as the origin of the frame, you will be able to bring everything else in line when you update the frame. I have done similar in the past where I had a circle subroutine that took the current robot position as the center of the circle, and changed the frame to 0,0,0,0,0,0 at that position. This made calculating the cut really easy.
good luck though