I don't understand the workflow that you are trying to achieve. You can have a routine save a point (as a list), to a global variable, then at the command line use exclamation point to use the variable value, example below just typing at the command line. I believe lisp routines can't work that way. Also I would be careful with your XZ lisp because you are converting actual points to a rounded number string. Perhaps you want to lose precision, but normally I would not want to.
: (setq pt1 (getpoint))
(3455.24229849009 3128.86653350467 0.0)
: (setq pt2 (getpoint))
(3487.63329459077 3137.63115597897 0.0)
: L
ENTER to use last point/Follow/<Start of line>: !pt1
(3455.24229849009 3128.86653350467 0.0)
ENTER to use last point/Follow/<Start of line>:
Angle/Length/Undo/<End point>: !pt2
(3487.63329459077 3137.63115597897 0.0)
Angle/Length/Undo/<End point>:
Angle/Length/Follow/Undo/<End point>:
You can also use DosLib to save strings to the windows clipboard for pasting. I would not use for point data because you will likely lose precision. For example I use this for quickly measuring pline area and pasting as text into CAD or into Excel, automatically formatted with rounding, comma, and suffix, example "1,234 SF"