Sorry it took so long to get back with you....
Here is a short example of using Datum Shifts
%234_45 G71 *
N5 G30 G17 X-900 Y-900 Z-20*
N10 G31 X+900 Y+900 Z+0*
N15 G247 Q339=+1*
N15 T3 G17 S2500*
N20 M3*
N25 G98 L500*
N25 G00 G90 X-70 Y+0 Z+10*
N30 G01 Z-1 F750*
N35 G01 X+70 G40*
N40 G00 Z+20*
N45 G98 L0*
N50 G247 Q339=+2*
N55 L500*
N60 G247 Q339=+3*
N65 L500*
N99999999 %234_45 G71 *
G247 Q339=+1 is like calling up G55 as your coordinate, then you can have a program set within a lbl call (G98)L?
Then you can call as many G247 Q339=2 (G56) or whatever number you assign....then call your lbl prog.....that is the simplist example..You can make a program with only datum shifts then call a sub program up in between datums shifts...several different ways you can get it to work..
Depending on your post you can either change MCS under local to force the datum shift or edit at the machine....Here we do it at the machine set our fixture...Probe manually set every datum...but usually we never run same thing twice, being a mold shop...Hope I didn't confuse you to much....