一括表示

− 野ざらし言 −

[4278] LXSchdの休日設定(海の日)がずれてしまいます。

masa 2013/02/09(Sat) 19:49
LXSchdを使っている方がいらっしゃいましたら、教えて下さい。
現在、LXSchdを使ってみようかとテストしています。
LXSchd.def はV2.02、_holiday.defはそれより前に添付されていたもののデータ部分を見直して使っています。
休日設定で、今年の海の日の設定がずれてしまいます。
正:7月15日 誤:7月22日
使っていらっしゃる方、正しく設定されましたか?

海の日の設定は
"/7/3/月" "/海の日"
のごとく、第3月曜日を指定しています。しかし、初回起動の時、7月15日ではなく、7月22日に設定されてしまいます。他の休日は大丈夫でした。
最初に起動したときに手で修正すれば済む話ではありますが、何となく気になります。
どこかの過去ログにあるのかもしれませんが、行き着くことが出来ませんでした。ご存じの方、よろしくお願いいたします。

[4279] Re: LXSchdの休日設定(海の日)がずれてしまいます。

めざら 2013/02/10(Sun) 16:12
[4278]へのコメント http://homepage3.nifty.com/mezala/
以前は使っていたのですが,Googleカレンダーのメール連絡機能を使うようになってからは使っていません。
先に_holiday.defを修正してからLXSchdを起動したところ,春分・秋分が出力されないなど,なんとなくバグっぽい動きはあり,システム日付を8月にして起動してみたところ,確かに7月第4月曜に海の日が出力されることを確認しました。論理的なコードに誤りがあるとも思えないのですが,トレースさせると変な動きになってしまって,テストがおぼつかないという状況です。

こういうマクロの場合,作成時には予期していなかったバグがぽろりと出ることはよくあることだと思いますが,作成者本人でないと直せないと思います。ご本人が使っているかどうか怪しいくらい時が経過しているので,出力結果を手で直してしまうのが手っ取り早いと思います。

以前,LXClnd.defのバグ修正をお願いしたところ,対応しかねるということだったので,かなり無茶な直し方をしてメールしたら,…すごい力技ですね…という返信がありました。何年も前にそんな感じだったので,対応は難しいと思います。

[4281] Re^2: LXSchdの休日設定(海の日)がずれてしまいます。

masa 2013/02/10(Sun) 21:30
[4279]へのコメント
ありがとうございます。

> 以前,LXClnd.defのバグ修正をお願いしたところ,対応しかねるということだったので,かなり無茶な直し方をしてメールしたら,…すごい力技ですね…という返信がありました。何年も前にそんな感じだったので,対応は難しいと思います。

そうですね。私も、今更の対応は望んでいません。年に1回、チェックすれば済むことですし。ただ、過去にあった話かどうかが気になったものですから質問してみました。
手で修正して、テスト使用を続けるつもりです。

[4280] Re: LXSchdの休日設定(海の日)がずれてしまいます。

konno 2013/02/10(Sun) 20:51
[4278]へのコメント
私はLXSchdを愛用していた(過去形?)ので確認して見ました。

> LXSchd.def はV2.02、_holiday.defはそれより前に添付されていたものの
 データ部分を見直して使っています。

げげ、データの作成でエラーになるなぁ、と思ったら_holiday.defが無かった。
うう、これでは愛用していたなんて言えませんね。(;_;)

> 休日設定で、今年の海の日の設定がずれてしまいます。
> 正:7月15日 誤:7月22日

確かに、同じパターンのデータは幾つもあるのにこの日だけずれますね。
マクロが読めないのでトレースして見たら、676行目からのルーチンのようです。


32:	;・・・・ print mother's day etc. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
	&d &t
	#^ &#J(n)
	cx=p+1, &60 p=si,
	#F &?("\x ^_?\0/%02d/01",cx) #m	; 休日の月の1日を検索
	#c #e >c				; ★ 1行上へを追加
:C	#c					;
:c	(r)??{					; ★ジャンプ先追加
	    cx=p, &60
	    ps[=pw,
	    #F &?("\x ^_?\0/\0/\0_?(%2s)",si) #m  ; 曜日を回数分検索
	    (cx){ #c }
	    ps],
	    &x(x) &Sn(si) si+=r+2,
	    (si.0=='/')?{ &?("%s",h) si++, }
	    &?("%s",si)
	    >C
	}
	&Sn(p) p+=r+2,

だいたいのカンでコメントをつけましたが、7月1日が月曜日なので、「月」の
検索が同一行では飛ばされているようにみえたので、★印のように
カーソルを一つ上に上げるよう追加したところ正常に動作したように見えます。

マクロの動作を完全に理解しての修正ではないので、誤動作の可能性もあります。
修正は自己責任でお願いします。

[4282] Re^2: LXSchdの休日設定(海の日)がずれてしまいます。

masa 2013/02/10(Sun) 21:40
[4280]へのコメント

> だいたいのカンでコメントをつけましたが、7月1日が月曜日なので、「月」の
> 検索が同一行では飛ばされているようにみえたので、★印のように
> カーソルを一つ上に上げるよう追加したところ正常に動作したように見えます。

追試の上、解析までありがとうございます。やはり、微妙な条件に合致する休日なんですね。
当面は出力された予定表を手直ししてテスト使用をするつもりです。
戴いたリストは、合わせて自分でも勉強してみます。でも、理解できるかどうか、、。

[4283] Re^2: LXSchdの休日設定(海の日)がずれてしまいます。

めざら 2013/02/11(Mon) 21:10
[4280]へのコメント http://homepage3.nifty.com/mezala/
> 	#F &?("\x ^_?\0/%02d/01",cx) #m	; 休日の月の1日を検索
> 	#c #e >c				; ★ 1行上へを追加

なるほど,ここですか…
その上の #56 側でぼんやりトレースしていたので,
ここまで到達してなかったりして…

そういうことなら,最初だけの話なので,
その直前の &#J(n) を &#J(n-1) でよいのかしら。

[4284] Re^3: LXSchdの休日設定(海の日)がずれてしまいます。

konno 2013/02/12(Tue) 00:43
[4283]へのコメント
> > 	#F &?("\x ^_?\0/%02d/01",cx) #m	; 休日の月の1日を検索
> > 	#c #e >c				; ★ 1行上へを追加

> その上の #56 側でぼんやりトレースしていたので,
> ここまで到達してなかったりして…

私も最初その上のルーチンに &t を入れてました。
マクロが巨大なうえにサブルーチンに同じ番号を使いまわしているので
非常にわかりづらいですね。

> そういうことなら,最初だけの話なので,
> その直前の &#J(n) を &#J(n-1) でよいのかしら。

&#J(n)ってなんだっけ? と思ったら、指定行番号ジャンプですか。
そのひとつ前の番号にするということですね、なるほど。

・・・と思ったけど、よく考えたら私の修正はそのあとの#F #c で月初めに
カーソルが来るので、そこで#e しないとダメですよね。
もっとスマートなやり方があればいいんですが。

↑ このページの先頭