just as an alternative view, the reason you used a gcode var in the first place was...
You really don need a macro pump or brains to do that. Just some simple Gcode.
which of course was quite right, but now that you want to display it in a DRO you HAVE to use some macro coding so there's no point in using the gcode var anymore as the DRO will act as the var/counter.
Plus it seems a tad round the houses setting a gcode var to some value and then monitoring it in the macropump to see what it was you just set it to so you can copy it to another place.

So like T says you'd drop a DRO onscreen and then in your gcode in place of your #500 = [#500+1] you'd have (say) M666 (other numbers are available), where its code would be:
SetOEMDRO(2000, getOEMDRO(2000) + 1)
Plus of course you can now set/reset the val anytime to anything by typing in the DRO itself.
Ian