ProT0ZyKo, those are Macro Variables.
And very nice too I must say 
although I think 2601 is wrong?
Code:
Z (lathe)
or
X axis Y axis Z axis
External #5201 #5202 #5203
G54 #5221 #5222 #5223
G55 #5241 #5242 #5243
G56 #5261 #5262 #5263
G57 #5281 #5282 #5283
G58 #5301 #5302 #5303
G59 #5321 #5322 #5323 Should be 5222 or 5202 (I personally use 5202 when hard-coding a Z workshift in my programs)
Bear in mind with that method the tool still has to be manually moved to the Z0 position.
Not sure how you can forget. The tool is near the part and stopped in M00 for a reason..... to MEASURE the workshift. I think if someone were there to kick your ass every time you forgot and scrapped a part or made some kind of machining error you would remember pretty quickly to press 'measure' 
but yes put those macro variables in the program (#5222=#5022.... assuming you have Macro B option) and your problems are almost solved (you still need to manually move the tool).
In my case it's common to have to touch the face and take off 0.002". If you need to touch on and take something off do this.....
#5222=#5022 + 0.002
I'm going to try this at work tomorrow.... can you tell I'm excited?