I dunno - I got lost somewhere along the thread. Too much name-calling.
This is my method for production work under mach3. It may have been mentioned already.

#1=0 % Initial X offset
...
m98 p10 L10 % make 10 parts along the X axis
....
M30

% subroutine to make one part
o10
g0 x[#1+5] y0
g1 y10
g1 x[#1+10]
g1 y0
g1 x[#1+5] % basically, mill out a square, but it doesn't matter
#1=[#1+20.00] % move X reference point by 20 mm for NEXT part
m99

What I am doing is (obviously) adding my own offset parameter (#1) to EVERY X position in the subroutine, and incrementing the offset for each subroutine call.
The wonderful thing about this method is that mach3 correctly displays the tool path for all 10 parts. I found that with some other methods you only got to see one part because the mach3 display code could not handle other forms of origin shifts.
Limitation: all 10 parts must be at the same separation - in this case 20.00 mm on the X axis.
I suspect that CAM programs canNOT do this sort of code generation, so you end up with very long programs which are a bit (very) opaque.

HTH
Roger