>>300
やりたいのはつまりこういうこと?

(defun my-upcase-word (p)
(interactive "p")
(if (eolp)
(let ((pos (point)))
(upcase-word (- p))
(goto-char pos))
(upcase-word p)))