記事の最後に載せたプログラムのコメントにも書きましたが、ポイントは2つあります。
- 基準日の年と生年の差
- 基準日がその年の誕生日よりも前のときは1を減算する
2015/8/31
NARITA Shoさんから「Excel 界隈では「基準日」という語が使われているみたいですね。」とのコメントを頂きました。ありがとうございました。
以下、xyzzy lispとC#での実装を記載します。
2015/9/2
C#での実装例を追加しました。
(require "bookmark") (use-package "bookmark")
(global-set-key '(#\C-c #\a #\b) 'bookmark-add-current-buffer) (global-set-key '(#\C-c #\l #\b) 'bookmark-list-bookmarks)
; convert-xml
(defparameter *conversion-alist*
'((#\< . "<")
(#\> . ">")
(#\& . "&")
(#\" . """)
(#\' . "'")))
(defun convert-xml ()
(interactive "*")
(let ((input-buffer (window-buffer (selected-window))))
(with-output-to-temp-buffer ("*Converted*")
(with-open-stream (s (make-buffer-stream input-buffer))
(loop
(let ((c (read-char s nil)))
(if c (format t "~A" (convert-char c *conversion-alist*))
(return nil))))))))
(defun convert-char (c alist)
(let ((conversion (assoc c alist)))
(if conversion (cdr conversion)
c)))