一括表示

− 野ざらし言 −

[4578] LXCash.defへの追加機能

めざら 2021/02/27(Sat) 11:25
http://mezala.la.coocan.jp/
一年ちかく放置してしまったので,小ネタで埋めます。

小遣い帳として,EmmettさんのLXCash.defを愛用しています。
近頃は,現金払いすることがすっかりなくなってしまい,電子決済等の場合は
その都度,銀行口座(コードP)から財布(残金)に代金分を収入扱いで入れます。
面倒だし,店はほぼ決まっているので,支払いの記載を入力した直後に
シフト起動すると自動的に収入記載して,財布の残金と一致するようにしました。

まず,マクロ冒頭に分岐処理を設定しておきます。(名称はaddの意)
71 ^OQ "lxcash.def"	;起動キーは2ストロークで
	(ks&1)?{ pm="lxcashad", >88 }	;マクロローダー使用の場合

次に,マクロのディレクトリに追加マクロを置きます。
よく使う店名をヒストリに入れて選択できるようにしておくと便利。
(CCはクレジットカード,PPは携帯電話で電子決済とかの種別代わり)
= lxcashad.def = by H_ear
#if 0
支払分をCC/PPで再入力補助
#endif
* mad for vz!
1 ^\ "" ?.
	&s mb-, #<
	(ct)??#n
	(cd>='0' && cd<='9')?{ #x #n }
	#e #b &x(11) #k #x #i "P " #e &x(50) #b &x(62) #k #x
;---- カスタマイズ shops
	&Sh(pa,"CC ヤフ")
	&Sh(pa,"PP 711")
	&Sh(pa,"PP 池徳")
;---- $
	&d
	pw[=pa,
	&g("CC/PP ショップ名[↑]",24) &Cr
	pw],
	&s
	(r+1&&r+2)?{&?("%s",pa)}?{&?("CC/PP")}
	(lx>36)?{ &x(36) #l }
	Eu[+, &#V(38) #> #i &#V(62) #> Eu],
	#e #e #b #> #k #x #x #i
	&d #] .
*

トレースしたまま,ってのをすぐに書けるのも,VZマクロならではです。

[4600] LXCash.defのバグ修正について

めざら 2021/11/03(Wed) 14:30
[4578]へのコメント http://mezala.la.coocan.jp/
さて,愛用している小遣い帳,EmmettさんのLXCash.def(v0.34)ですが,
月初めだけ発現可能性のあるバグに気付いたので修正情報です。

【現象】:
 メインメニューから「一昨日の日付」を選択したとき,
 当該日付が前月となる場合に誤った日付が出力される。
 (前月の総日数を超えた値の日付。曜日に影響なし。)

【条件】:
 月初め(1日または2日)に「一昨日」を選択した場合に発現する。

【発現例】:
 11月1日(月)に「一昨日」を選択すると,「10/32(土)」と出力される。

【修正箇所】(ローカル6番の「日が1未満」条件のブロック)
06:     ;---- print timestamp --------------------------------------------
        ; in  (r): r days before today
        ;     (d): date of last item
        ;     (m): month of last item
        ; out (r): month
        ;
        yy[,mm[,dd[,n[=r,w[,

        ax=$2A00, &i($21)
        yy=cx, mm=dx>>8, dd=dx&31, w=ax&7,
        dd-=n,
        (dd<1)?{                        ;★日が1未満の場合の実行部分
                (mm--<1)?{ mm=12, yy--, }
                &07                     ;month-date table
                dd=r.mm+dd,             ;★元のコード:dd=r.mm-dd,
        }
        w=(w-n)%7, (w<0)?w+=7,
        &16                             ;if new month, DLM
        &?("%02d/%02d(%2s)  ",mm,dd,"日月火水木金土"+w*2)

        (mm) w],n],dd],mm],yy],.

【修正理由】:
日が負数になった場合,前月の日数から絶対値を減じることで確定するところを
前月の日数から負数を減じ,結果的に絶対値を加えてしまっている。

[4601] Re: LXCash.defのバグ修正について

めざら 2021/11/03(Wed) 16:44
[4600]へのコメント http://mezala.la.coocan.jp/
20年とか使い続けていて,どうして今まで気付かなかったのだろう,なぜ一度も発現することがなかったのだろうと考えたところ……

LXCash.def は月初めに普通に起動・入力すると,前月分の自動集計をいきなり実行します。なので,月初めにはたいていメインメニューから[ESC]連打でデータファイルをオープンし,カレントの残額と財布の中身が合っているかを確認します。

必要に応じて残っているレシートの入力とか,残金が合わない場合は不明金とか入力します。このときはおそらく日付の直接入力をしています。

そして前月の決算を行ったうえで,当月最初の予算(月極めの小遣いの額)を入力します。つまり,月初めに一昨日の日付を出力する機会がまったくなかったのだろうと想像されます。

作成者もおそらく同様の使用パターンがあり,気付かなかったのでしょう。

↑ このページの先頭