next up previous contents index
: さらなる理解のために : 計算機処理の実際 : Perl による処理   目次   索引

Emacs Lisp によるプログラム

Lisp で頻繁に使われる emacs の上で決算計算を行うプログラムを開発した。 emacs のバッファ上で領域指定すると、指定範囲の仕訳をたちどころに集計し、 残高試算表を作成してくれる。 メモ書きソフト howm に触発され、日々の記録から、いつでも資産残高が 計算できるので、便利である。 Perl のソフトよりもはるかに簡便に計算できるが、 キャッシュフロー試算表などは出力されない。

プログラムは、本書の最初のページにリンクが張ってあるので、そこから ダウンロードして欲しい。

[概要]

  emacs で region (C-space で始点を定め、カーソルの現在位置が終点とな
る領域) を指定し、その間に存在する特定の文字列の組み合わせを仕訳とし
て会計計算する。
region 内の科目ごとの総計を計算し、region の直後に一行
空行の後、表示する。

  region の最初に表われた単語をタグ (@a@ や $$$ のような
通常の単語として使わないものが望ましい) とし、
	`タグ 科目 金額'
	`タグ 科目 科目 金額'
の組み合わせを仕訳とみなす。

[書式の詳細]

  タグ、科目は、空白、TAB で区切られた任意の文字列 (!*- などが入って
いてもよい)。金額は区切りコンマと、負数のためのマイナスを許す。

[複式簿記として使う場合]

  `タグ 科目 科目 金額' の形式を原則とする。最初の科目を左借方科目、
次の科目を右貸方科目とみなす。つまり `左借方科目 金額 右貸方科目 金額' 
の省略形である。

  費用を 現金 で支払うような `タグ 科目 現金 金額' の場合は、頻度が高い
ので、`タグ 科目 金額' と略してよいこととした。

  収入は、原則、`タグ 現金 収入科目 金額' とするが、省略形で、金額を負
数にしてもよい。

  データの最初に前期の B/S を付けておき、そこから region を設定すると
region の最後の日付における残高試算表が得られる。この名目勘定部分から 
P/L (損益計算書) が、実在勘定部分から B/S (貸借対照表) が簡単に得られ
る。なお、残高試算表の名目勘定の部分だけを region に設定して 
accounting-region を実行すると、当期利益が現金 (もちろん、本当の現金
ではない) という項目で計算できる。

  当期の仕訳部分だけを region に設定すると、当期のフロー試算表が得ら
れる。

データ例:

...@a@ [前期 B/S] ...
...@a@ 現金 純資産 20,000 前期繰越 ...
...@a@ 預金 純資産 95,000 前期繰越 ...

...@a@ [当期仕訳帳] ...
...@a@ !食費 500 2005/1/3 ...
...@a@ 現金 !給料 100,000 2005/1/25 ...

データは通常の文中にあっても OK。ただし、タグから数字の間に CR があっ
てはならない。また、region は計算したいデータの最初のタグの開始点に置
かなければいけない。

前期 B/S は次のように書いてもよい。

...@a@ [前期 B/S] ...
...@a@ 現金 .       20,000 前期繰越 ...
...@a@ 預金 .       95,000 前期繰越 ...
...@a@ .    純資産 115,000 前期繰越 ...

空欄に '.' を入れたが、これを空欄とすると、負債や純資産の行、例えば
第三行目の場合、「純資産」の前に長い区切が置かれているとみなされるので、
よくない。この場合、資産の行にも '.' を入れないと、空欄は
現金とみなされるので、現金の総額が合わなくなり、平衡が崩れる。

...@a@ [前期 B/S] ...
...@a@ 現金     20,000 前期繰越 ...
...@a@ 預金     95,000 前期繰越 ...
...@a@ 純資産 -115,000 前期繰越 ...

とするのも手であるが、将来、このプログラムでキャッシュフロー計算書も
出せるように考えており、その場合、行に現金同等物が入っているかどうかで
計算対象とすることを想定しているので、避けておいていただく方が
無難である。

[小遣帳、現金出納帳として使う場合]

  `タグ 科目 金額' とすると、科目ごとの支出が計算できる。収入に対して
は金額を負数にするか、`タグ 現金 収入科目 金額' とする。

  これだけだと、現金の使用額しかわからないが、現金の現在高は、最初の
行に
	`タグ 現金 純資産 金額 前期繰越'
のような仕訳を一行入れておき、そこから region を設定すればよい。

ただし、対した差はないので、複式簿記の概念で記載する方が、すべての
財産が統一的に管理できるので、それを強く薦める。

[預金残高も計算したい場合]

  預金との出入りは、科目の片方を `預金' とすればよい。銀行や口座が複
  数ある場合には、科目を詳細にして `定期(A銀行)' などとすればよい。


next up previous contents index
: さらなる理解のために : 計算機処理の実際 : Perl による処理   目次   索引
Yoichi OKABE 平成20年5月17日