一年ちかく放置してしまったので,小ネタで埋めます。
小遣い帳として,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マクロならではです。さて,愛用している小遣い帳,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],.
【修正理由】:
日が負数になった場合,前月の日数から絶対値を減じることで確定するところを
前月の日数から負数を減じ,結果的に絶対値を加えてしまっている。