===== LXCLND.DEF (v2.01) ========= #if 0 99/12/29 ##k 180921 連続移動表示改善 ##k 240427 祝日変更対応 ■ ユーザオプション (ymfcst.def 用) -------------------------------------------------------------------------- #OLD_LXLOADER - ; LXLoader v3.1x 以前を + 使う - 使わない -------------------------------------------------------------------------- ■ その他、カスタマイズ可能な箇所 %menu_color メニューの表示色 %cursor メニュー中の擬似カーソル %holiday 休日テーブル #endif *macro 70 ^^ "LXCalendar.def" (s>4)?. #] &01 ;push / set k=ks&1, ;//// カスタマイズ・テーブル ///////////////////////////////////// #if DOSV ; aa="$$7", ;平日の色 ; bb="$$4", ;日曜・祝日の色 ; cc="$$2", ;土曜日の色 aa="$ag", ;平日の色 bb="$av", ;日曜・祝日の色 cc="$al", ;土曜日の色 ; ag$f,av$c,al$b, #elseif 98 aa="$$7", ;平日の色 bb="$$2", ;日曜・祝日の色 cc="$$4", ;土曜日の色 #endif ;aa="$$7", ;モノクロ・ ;bb="$$!", ;ディスプレイの ;cc="", ;色設定の例 e=1960, ;春分・秋分テーブルの開始年 f=2099, ;春分・秋分テーブルの終了年 h=1985, ;振替休日制度の開始年 ;///////////////////////////////////////////////////////////////// ;---- main routine ------------- &m("$ ;★★★##k 180921 Shift+矢印=カーソル Ctrl+矢印=月/年 [←][→]=3月 [TAB]=today [^v]=lxschd") &03 ;chk %LXSCHD% && set mm :T &04 ;get today's y/m/d :A &10 ;make menu ; &m("$ ;;Shift+ARROW=cursor Ctrl+ARROW=month/year [←][→]=3months [TAB]=today") ;Shift+矢印=カーソル Ctrl+矢印=月/年 [←][→]=3月 [TAB]=today [^v]=lxschd") mg..2..2[=pq..148+2, af[=aw, !01 af], mg..2..2=0], (r==-1)? >Z r=r&$FF+$100, ;---- command keys ------------- (r)>!{ (#r) { r=7, &11 } (#c) { r=7, &12 } (#37) { r=7, &11 } ;[RLDN] [PGUP] (#38) { r=7, &12 } ;[RLUP] [PGDN] (#a) { r=1, &11 } (#f) { r=1, &12 } (#39) (y--) ;^[ UP ] ^[Home] (#40) (y++) ;^[DOWN] ^[End ] (#<) { r=1, &13 } (#>) { r=1, &14 } (#s) { r=3, &13 } ;^S ← (#d) { r=3, &14 } ;^D → (#21) >T ;[TAB] (#h) &15 ;print date (#v) >20 ;go lxschd } >A :Z ;---- exit --------------------- &02 &m("") &d#] ; | ; \ | / ; --- LOCAL * MACROS --- ; / | \ ; | 01: ;---- push / set ------------------------------------------------- &Sm(pq..149,pc+292,46) ;push all double user vars an[, ac[, wl[=12, ag[$f,av[$c,al[$b, ; ii=ic, ;ic==-1: from LXSchd.def jj=r, ;y,m,d from LXSchd.def hh=pq..149+46, ;holiday table (26 bytes) &72 ;set hh..x p=hh+26, ;work area 02: ;---- pop -------------------------------------------------------- &s (mm==-1)? >P (mm>>8==0 || mm>>8==2)?{ #U (mm&$FF)? #X (mm>>8 && s==0)? #E } :P al],av],ag], ; wl], ac], an], &Sm(pc+292,pq..149,46) ;pop all double user vars 03: ;---- chk %LXSCHD% && set mm ------------------------------------- i=pq..148+2, i.0-, &Se(i,"LXSCHD") &So(i,"/X:") (r)?{ mm=wn, ;mm: monochro flag (-1: color) }?{ mm=-1, } &So(i,"/S:") (r)?{ &Sw(i=r+3) &Sc(pa,i,r) ;(pa) LXSCHD.DAT dir keeper }?{ &Sc(pa,"A:\") } ;---- set color ---- &s (mm==-1)?{ ;if color, set background an=7, ;1, ;normal color ★★★テキストカラー ac=1, ;controle code color }?{ aa="$$7", bb="$$!", cc="", mm|=s<<8, ;keep sysmode (s==0 || s==2)?{ ;black out display if possible (s)?{ #95 }?{ (mm)? #X } #_ #> (lx)? #m ky=0, } } &d 04: ;---- get today's y/m/d ------------------------------------------ (ii==-1)?{ ii-,. } ;if from LXSchd.def, ax=$2A00, &i($21) y=cx, m=dx>>8, d=dx&31, (k)?{ mx[+,an[=7, &g("9999/99/99") &Cr (r|1+1)??>Z &s #J #e #< &n (r==-1)?>Y y=r, #f &n (r==-1)?>Y m=r, #f &n (r==-1)?>Y d=r, :Y #[ :Z an],mx], ss-, } 10: ;---- make menu -------------------------------------------------- pr..0 = pq..148+2, pr..1 = " 0000 / 00 ", pr..2 = " Su Mo Tu We Th Fr Sa ", &70 pr..3 = r, ;m-d table pr..4 = p, pr..5 = hh, &71 ;equinox table pr..6 = v, pr..7 = a, pr..8 = e, ;equinox table start year pr..9 = f, ;equinox table last year pr..10 = h, pr..11 = pq..135, pr..12 = aa, pr..13 = bb, pr..14 = cc, pr..15 = "$$3($$7", ;right of today pr..16 = "$$3)$$7", ;left of today pr..17 = y, pr.36 = m, pr.37 = d, ax=pr, &> b=di, 10: ;---- mklxclnd.asm ---- &i(3+$)."$ $(8B,E8,E8,42,00,8B,7E,00,E8,FA,01,E8,17,02,83,EF)$ $(02,32,C0,AA,B9,03,00,8B,76,04,E8,F3,03,E2,F8,32)$ $(C0,AA,B9,06,00,8B,76,18,E8,E5,03,B0,20,AA,51,33)$ $(C9,E8,21,02,E8,2D,02,41,83,F9,03,75,F4,32,C0,AA)$ $(59,E2,E2,32,C0,AA,C3,8B,5E,08,8B,46,22,8A,56,24)$ $(FE,CA,0A,D2,75,04,80,C2,0C,48,33,C9,89,47,02,88)$ $(57,04,C6,47,05,01,E8,23,01,E8,1F,00,E8,28,00,E8)$ $(3D,00,FF,07,41,83,F9,03,73,10,83,C3,08,FE,C2,80)$ $(FA,0C,76,04,80,EA,0C,40,EB,D2,C3,60,B0,2A,F6,E1)$ $(03,46,16,89,07,61,C3,60,8B,47,02,E8,33,01,8B,76)$ $(06,8A,47,04,32,E4,03,F0,8A,04,88,47,07,61,C3,60)$ $(8B,3F,57,B9,2A,00,B0,00,F3,AA,5F,E8,0B,00,E8,62)$ $(00,E8,2E,00,E8,A6,00,61,C3,60,47,8A,4F,06,32,ED)$ $(8B,F1,B9,2A,00,B2,07,8B,C6,F6,F2,0A,E4,75,05,80)$ $(0D,02,EB,08,80,FC,06,75,03,80,0D,01,47,46,E2,E7)$ $(61,C3,60,53,8A,5F,04,32,FF,D1,E3,8B,76,0A,8B,30)$ $(5B,E8,08,02,72,1B,57,03,F9,8B,4F,02,3B,4E,14,72)$ $(0A,8A,15,F6,C2,06,74,03,47,EB,EE,80,0D,04,5F,EB)$ $(E0,61,C3,60,80,7F,04,03,75,05,8B,76,0C,EB,0D,80)$ $(7F,04,09,75,05,8B,76,0E,EB,02,EB,2F,8B,47,02,3B)$ $(46,10,72,27,3B,46,12,77,22,03,F0,2B,76,10,8B,3C)$ $(81,E7,FF,00,03,3F,8B,4F,02,3B,4E,14,72,0A,8A,15)$ $(F6,C2,06,74,03,47,EB,EE,80,0D,04,61,C3,60,8B,46)$ $(22,3B,47,02,75,14,8A,46,24,3A,47,04,75,0C,8B,3F)$ $(8A,46,25,32,E4,03,F8,80,0D,08,61,C3,60,8B,C8,80)$ $(FA,03,73,04,49,80,C2,0C,8A,C2,B6,0D,F6,E6,04,08)$ $(B6,05,F6,F6,32,E4,8B,F0,03,F1,BF,04,00,E8,4E,00)$ $(03,F0,BF,90,01,E8,46,00,03,F0,BF,64,00,E8,3E,00)$ $(2B,F0,46,8B,C6,33,D2,BF,07,00,F7,F7,88,57,06,61)$ $(C3,60,8B,5E,06,C6,47,02,1C,8B,C8,BF,90,01,E8,1D)$ $(00,0B,D2,74,14,BF,04,00,E8,13,00,0B,D2,75,0D,BF)$ $(64,00,E8,09,00,0B,D2,74,03,FE,47,02,61,C3,8B,C1)$ $(33,D2,F7,F7,C3,B8,01,01,AB,33,C0,AB,B8,E1,00,AB)$ $(47,B0,44,AA,B0,07,AA,32,C0,AA,B0,FF,AA,B9,08,00)$ $(33,C0,F3,AB,C3,8B,5E,08,B9,03,00,8B,76,02,E8,DF)$ $(01,51,57,83,EF,13,8B,47,02,B9,04,00,E8,A9,01,83)$ $(C7,05,8A,47,04,32,E4,B9,02,00,E8,9B,01,5F,59,83)$ $(C3,08,E2,D7,C3,51,8B,5E,08,0B,C9,74,05,83,C3,08)$ $(E2,FB,59,C3,51,8B,37,8A,14,80,7F,05,00,75,0A,B9)$ $(15,00,B0,20,F3,AA,E9,8E,00,80,7F,05,01,75,0D,8A)$ $(47,06,B1,03,F6,E1,8B,C8,B0,20,F3,AA,8A,14,F6,C2)$ $(08,74,07,8B,76,1E,4F,E8,76,01,F6,C2,01,74,06,8B)$ $(76,1C,E8,6B,01,F6,C2,02,75,05,F6,C2,04,74,06,8B)$ $(76,1A,E8,5B,01,8A,47,05,32,E4,B9,02,00,E8,28,01)$ $(80,FA,00,76,06,8B,76,18,E8,45,01,F6,C2,08,74,08)$ $(8B,76,20,E8,3A,01,EB,03,B0,20,AA,FE,47,05,FF,07)$ $(8A,57,05,3A,57,07,76,18,C6,47,05,00,8B,37,F6,04)$ $(02,75,0B,B9,03,00,B0,20,F3,AA,FF,07,EB,EE,EB,07)$ $(8B,37,F6,04,02,74,85,B0,20,AA,59,C3,53,57,80,3C)$ $(00,74,4C,E8,9A,00,83,F9,FF,74,3B,0B,C9,74,07,83)$ $(F9,1F,77,02,EB,3C,0B,C9,74,05,3B,4F,02,77,1B,E8)$ $(7E,00,0B,C9,74,05,3B,4F,02,72,0F,E8,72,00,83,F9)$ $(FF,74,13,83,F9,1F,77,17,EB,18,AC,0A,C0,74,10,3C)$ $(3B,75,F7,4E,EB,B8,E8,0D,00,0B,C9,74,02,EB,03,F9)$ $(EB,01,F8,5F,5B,C3,50,53,52,B9,02,00,AC,3C,41,72)$ $(08,3C,5A,77,04,2C,41,EB,02,B0,FF,86,C4,FE,C0,E2)$ $(EB,8A,57,06,33,C9,8B,D8,3C,00,7C,20,FE,C8,B6,07)$ $(F6,E6,8A,D8,80,FF,00,7C,13,80,C7,07,2A,FA,8A,C7)$ $(32,E4,F6,F6,02,DC,FE,C3,32,FF,8B,CB,5A,5B,58,C3)$ $(50,53,52,57,33,C9,33,DB,BF,0A,00,80,3C,3A,72,06)$ $(80,3C,3F,77,01,46,AC,3C,30,72,10,3C,39,77,0C,2C)$ $(30,32,E4,91,F7,E7,03,C8,43,EB,EB,4E,0B,DB,75,03)$ $(B9,FF,FF,5F,5A,5B,58,C3,50,51,52,56,BE,0A,00,03)$ $(F9,57,33,D2,F7,F6,0B,C0,75,08,0A,D2,75,04,B2,20)$ $(EB,03,80,C2,30,4F,88,15,E2,E8,5F,5E,5A,59,58,C3)$ $(AC,0A,C0,74,03,AA,EB,F8,C3)" 11: ;---- day(s) backward -------------------------------------------- ; in: r: how many days ;---- d-=r, (d<1)?{ (m--<1)?{ y--, m=12, } &70 d+=r.m, } 12: ;---- day(s) forward --------------------------------------------- ; in: r: how many days ;---- d+=r, &70 (d>r.m)?{ d-=r.m, (m++>12)?{ y++, m=1, } } 13: ;---- month(s) backward ------------------------------------------ ; in: r: how many months ;---- m-=r, (m<1)? { y--, m+=12, } 14: ;---- month(s) forward ------------------------------------------- ; in: r: how many months ;---- m+=r, (m>12)?{ y++, m-=12, } 15: ;---- print date ------------------------------------------------- (s==0 && mr==$80)?. (mm==-1)?{ (s>2)?. >P } (mm>>8-1)>?{ >P ... } &s (mm&$FF)? #X :P y[,m[, (m<3)?{ y--, m+=12, } w=(y+y/4+y/400+(m*13+8)/5+d-y/100)%7, w=w*3+"SunMonTueWedThuFriSat", m],y], &?("%d/%02d/%02d(%3s)",y,m,d,w) #] (mm>>8==0 && mm&$FF)? #X ss-, 20: ;---- Go LXSchd.def ---------------------------------------------- &s &02 ;pop (wc=>tc)?{ &m("Too many texts opened. Hit any key.") &b(20) &d. } sn[+, :S (s)?{ (s-1||sm-2)?{ #[ >S } >O };multimode exec (wt)? &#Y(0) #O :O &?("%sLXSCHD.DAT",pa) #m sn], (s)?{ &m("%sLXSCHD.DAT not found.") #[ #[ &b(20) &d. } #_ #> ps[=pr, mp[, #F &?("\x ^_?%02d/%02d/%02d",y%100,m,d) #m #r (r)? #e mp], ps], &d p="LXSCHD", ;#OLD_LXLOADER- &SX(8+mg..2..-1,"LXLOADER") (r)??{ &Sc(8+mg..2..-1,p) nn=0,. } ;#OLD_LXLOADER. &Zs(p) (r)? >* &Sc(pu,"&qmg..2..3-,&z(p)(r)??>*&d") &e(pu) 70: ;---- month-date table ------------------------------------------- ; out (r): table ptr ;---- ("$(1F,1C,1F,1E,1F,1E,1F,1F,1E,1F,1E,1F)"-1) 71: ;---- equinox definitions ---------------------------------------- ; 1960-2099 ;---- ;---- vernal equinoxes (14h=20, 15h=21) ---- v="$ $(14,15,15,15,14,15,15,15,14,15)$ $(15,15,14,15,15,15,14,15,15,15)$ $(14,15,15,15,14,15,15,15,14,15)$ $(15,15,14,14,15,15,14,14,15,15)$ $(14,14,15,15,14,14,15,15,14,14)$ $(15,15,14,14,15,15,14,14,15,15)$ $(14,14,15,15,14,14,14,15,14,14)$ $(14,15,14,14,14,15,14,14,14,15)$ $(14,14,14,15,14,14,14,15,14,14)$ $(14,15,14,14,14,15,14,14,14,14)$ $(14,14,14,14,14,14,14,14,14,14)$ $(14,14,14,14,14,14,14,14,14,14)$ $(14,14,14,14,14,14,14,14,14,14)$ $(14,14,14,14,14,14,14,14,14,14)", ;---- autumnal equinoxes (16h=22, 17h=23, 18h=24) ---- a="$ $(17,17,17,18,17,17,17,18,17,17)$ $(17,18,17,17,17,18,17,17,17,18)$ $(17,17,17,17,17,17,17,17,17,17)$ $(17,17,17,17,17,17,17,17,17,17)$ $(17,17,17,17,17,17,17,17,17,17)$ $(17,17,16,17,17,17,16,17,17,17)$ $(16,17,17,17,16,17,17,17,16,17)$ $(17,17,16,17,17,17,16,17,17,17)$ $(16,17,17,17,16,16,17,17,16,16)$ $(17,17,16,16,17,17,16,16,17,17)$ $(16,16,17,17,16,16,17,17,16,16)$ $(17,17,16,16,17,17,16,16,16,17)$ $(16,16,16,17,16,16,16,17,16,16)$ $(16,17,16,16,16,17,16,16,16,17)", 72: ;---- holiday definition ----------------------------------------- ; ; (1) n 月の祝日は、hh..n のところに 数文字列 の形で記述する。 ; (2) 1 ヶ月に複数の祝日がある場合は『;』で区切って列挙する。 ; (3) 祝日のない月も、必ず "" (空文字列)が定義されていることが必要。 ; (4) 数字の順序は別に小さいものから順になっていなくても構わない。 ; (5) a 年から b 年に限って d 日を祝日表示する、という場合は、a>b=d ; という形式で記述する。この場合、a,b の位置に 1〜31 の数値を指定 ; してはならない(日付と解釈される)。また、a,b に 0 を指定すると ; ∞の意味に解釈される。年限指定を省略して日付だけを書くと、常に ; 祝日表示される(つまり、d は 0>0=d と同じ意味)。 ; (6) 日付の位置に半角大文字アルファベットを書くと「?回目の?曜日」 ; を指定したことになる(回数の数値は A==1, B==2, ...を意味し、曜日 ; は A==日曜日, B==月曜日 ... を意味すると解する)。 ; (7) 春分・秋分の日は記入しないこと(マクロ側で自動設定する)。 ; ;----------------------------------------------------------------- hh..1 = "1874>0=1;1874>1948=3;1949>1999=15;2000>0=BB", hh..2 = "1874>1948=11;1967>0=11;2020>0=23", hh..3 = "", hh..4 = "1874>1948=3;1928>1988=29;1989>2006=29;2007>0=29", hh..5 = "1949>0=3;1985>2006=4;2007>0=4;1949>0=5", hh..6 = "", ; hh..7 = "1996>0=20", hh..7 = "1996>2002=20;2003>0=CB", hh..8 = "2016>0=11", ; hh..9 = "1948>0=15", hh..9 = "1948>2002=15;2003>0=CB", hh..9 = "1948>2002=15;2003>0=CB;2009>2009=DC;2015>2015=DC;2026>2026=DC;2032>2032=CC;2037>2037=DC;2043>2043=DC;2049>2049=CC;2054>2054=DC;2060>2060=CC;2071>2071=DC;2077>2077=CC;2088>2088=CC;2094>2094=CC;2099>2099=DC", hh..10 = "1874>1948=17;1966>1999=10;2000>2019=BB;2020>0=BB", hh..11 = "1874>0=3;1874>0=23", hh..12 = "1989>2018=23", *