(defun hira-kana (str)
(map 'string (lambda (x) (cdr (assoc x *kana*))) str))

*kana*はこんな感じの平仮名から片仮名へのalist。
(setf *kana* '((#\あ . #\ア) (#\い . #\イ) ...))

処理系が仮名を一文字として扱えること。