The macro location returns a location suitable for passing to record-definition. This is usually done via a separate defining function. You will need to use location only if you create your own ways of making definitions (and not if your definers call only system-provided definers).
(defmacro define-wibble (x y)
`(dspec:def (define-wibble ,x)
(set-wibble-definition ',x ',y (dspec:location))))
(defun set-wibble-definition (x y loc)
(when (record-definition `(define-wibble ,x) loc)
;; defining code here
))
LispWorks User Guide and Reference Manual - 21 Dec 2011