一括表示

− 野ざらし言 −

[4566] 選択曜日の指定範囲の日付を出力

めざら 2019/11/13(Wed) 21:39
http://mezala.la.coocan.jp/
仕事で予定表を作る都合で,一月分の日付リストを出力するマクロを作り,
その後,出力する曜日を選択できるメニューを装備させてみたものです.
今日,メニューの項目の値を全反転する機能を付加したので上げました.

= Datelstw.def v0.20 = by H_ear
#if 0
選択曜日の指定範囲の日付を出力
 ON/OFFメニューのテスト
#endif
* mad for vz!
1 ^\ "" ?.
        (mb || mr==$80)?{ &m("! View/Block mode") . }
        mi[-,
        JU[, JU=$7F+$80,                ;#DEF 初期設定可
                ; +1=日; +2=月; +4=火; +8=水; +16=木; +32=金; +64=土
                ;初期設定は全ビットON, 各ビットで制御可能
                ;; bit 0  1  2  3  4  5  6  7 
                ;;     fa fb fc fd fi fj fx fy
                ;;     日 月 火 水 木 金 土 1ヶ月限定出力フラグに使用
                ;;用途に合わせて on/off しておくことも可能
                ;;例えば,月水木土のみ出力なら JU=$5A+$80 など.
        ax=$2A00, &i($21)               ;当日取得
        ; ---- 年/月入力 ----
 :a     &g("年 [CR]:当年") y=r,         ;<y>年取得
        (r==-1 || r==0)?{ &m("") >z }   ;[ESC] or 数値でないなら終了
        (r==-2)?{ y=cx, }               ;[CR]:当年
 :b     &g("月 [CR]:1-12月") m=r,       ;<m>月取得
        (r==-1)?{ &m("") >z }           ;[ESC]なら終了
        (r==-2)?{ m=1, fy!, }           ;[CR]:1年分
 :c     (m<0 || m>12)?{ >b }            ;範囲外なら再入力を促す

        ;JUを使うことで以下の代入を省略できる
        ;fa=(o&1>0), fb=(o&2>0), fc=(o&4>0), fd=(o&8>0),
        ;fi=(o&16>0), fj=(o&32>0), fx=(o&64>0),
        ;o=fa+fb*2+fc*4+fd*8+fi*16+fj*32+fx*64,
        ; ---- menu ----
 :l     !01
        (r>7)?>R                        ;OKで抜ければrun
        (r>6)?{ JU^=$7F,  >l }          ;全反転
        (r+1)??{ &m("Cancel") >z }      ;r=-1 なら[ESC]
        >l

 :R     ; ---- run ----
        n=31, &00 (n>r.m)?n=r.m,        ;<n>月の日数確定

        ; ---- 朔日の曜日を確定 ----
        ; <-- y,m,d
        ; --> w
        d=1, &01                        ;<d>朔日を渡して<w>曜日を取得

        ; ---- 出力 ----
        #< (ct!=1)?#n                   ;空行出力(オートインデント対応)
 :n                                     ;(n){ ループ内に条件分岐は使えない
        &02                             ;wに応じたビットの値を評価させる
        ;fa==1, fb==2, fc==4, fd==8, fi==16, fj==32, fx==64,
        (r)?{
        &s      ;; ---- 書式カスタマイズ可能 ----
        ;       &?("%4d/%02d/%02d (%2s)",y,m,d,"日月火水木金土"+w*2) #m
        ;       &?("%4d-%02d-%02d (%2s)",y,m,d,"日月火水木金土"+w*2) #m
                &?("%4d%02d%02d (%2s)",y,m,d,"日月火水木金土"+w*2) #m
        }
        &d d++, w=(w+1)%7,
        (n--)?>n                                ;} 擬似ループの末尾

        ; ---- 連続処理 ----
        (fy)?{ &a("次の月を出力します") }?r+,
        (r>0)?{
                m++,
                (m>12)?{
                        (fy)??>q
                        m=1, y++,
                }
                >R
        }

 :q     ; ---- quit ----
        #g                      ;余分な改行を削除
 :z     ; ---- exit ----
        JU], mi],
        &d #] .

00:     ; ---- 日の整合性確認 ----      ;from calendar.def
        r=" $(1f,1c,1f,1e,1f,1e,1f,1f,1e,1f,1e,1f,)",   ;Yushi(__)
;       _______1__2__3__4__5__6__7__8__9__a__b__c       ;month
        (y%4==0 && (y%100!=0 || y%400==0))?r.2=29, ?r.2=28,     ;閏年
        (r)

01:     ; ---- 指定日の曜日を算出(ツェラーの式) ----
        ;1,2月を前年の13,14月として計算する
        ;グレゴリオ暦採用の1583年以降に対応する
        m[, y[,
        (m<3)?{ y--, m+=12, }   ;Zeller(__)
        w=((y+ y/4+ y/400+ (m*13+8)/5+ 1- y/100) +d -1) %7,
        y], m],

02:     ;wに応じたビットが立っているか評価した値を持って戻る
        (w)>?{ (JU&1) (JU&2) (JU&4) (JU&8) (JU&16) (JU&32) (JU&64) }

* popup menu
1 "曜日選択",12,9,4
        "N 日",fa
        "G 月",fb
        "K 火",fc
        "S 水",fd
        "M 木",fi
        "I 金",fj
        "D 土",fx
        "A 全反転"
        "OK"
*

[Variables]
        y,m,d,w 年月日曜
        n       カレント月の日数
        JU
         fa,fb,fc,fd,fi,fj,fx   曜日選択フラグ
         fy     1年分出力フラグ
[Buffers]
                
[History]
2018/03/04 0.10 初版
2019/11/13 0.20 メニューに全反転を追加
[Notes]
月水金なら EU&=1~ で偶数切捨てになるが使えるか?
on/offなら表示用文字列設定不要.「日$(9)off on」なんてする必要なかった.

[4567] Re: 選択曜日の指定範囲の日付を出力

konno 2019/11/20(Wed) 00:32
[4566]へのコメント
> 仕事で予定表を作る都合で,一月分の日付リストを出力するマクロを作り,
> その後,出力する曜日を選択できるメニューを装備させてみたものです.
> 今日,メニューの項目の値を全反転する機能を付加したので上げました.

これ、いいですね。
特定の日付が何曜日だったかとか、ピンポイントで指定できるのが良いです。
私はめざらさんの日付関連マクロは結構使わせてもらっています。
このルーチンを改造してみたいんですが、難しくて手が出ないです。(^^;
勉強させてもらいます。

[4569] Re^2: 選択曜日の指定範囲の日付を出力

めざら 2019/11/20(Wed) 20:40
[4567]へのコメント http://mezala.la.coocan.jp/
> このルーチンを改造してみたいんですが、

そのような需要があるのであれば,参考までに伺いたいのですが……
具体的には,どこのルーチンなのでしょう。

やや説明不足のところは多々ありますが,それほど複雑なことはしてないですよ。

[4572] Re^3: 選択曜日の指定範囲の日付を出力

konno 2019/11/22(Fri) 00:06
[4569]へのコメント
> そのような需要があるのであれば,参考までに伺いたいのですが……
> 具体的には,どこのルーチンなのでしょう。

す、すみません、ルーチンというのは不適切でしたね。
改造ではなく、ルーチンを使わせてもらおうというつもりだったのです。

> やや説明不足のところは多々ありますが,それほど複雑なことはしてないですよ。

はい、ルーチンは丸ごと利用させてもらうつもりなので、それはいいのですが
問題は自分のマクロを作るスキルなんですね。(^^;
まだ具体的な形も仕様も決まっていないので、来年の課題ですね。

[4573] Re: 選択曜日の指定範囲の日付を出力

キャロル 2020/01/31(Fri) 15:20
[4566]へのコメント
> 仕事で予定表を作る都合で,一月分の日付リストを出力するマクロを作り,
> その後,出力する曜日を選択できるメニューを装備させてみたものです.
> 今日,メニューの項目の値を全反転する機能を付加したので上げました.

 めざらさん
 お久しぶりです。
 このマクロ、たいへんいいです。私はこれまで、syoさんの「窓の奈美」に実装されているカレンダーマクロで1年分のテキストをつくり、Vzで、予定管理表、ミニ日記、雑誌の月報原稿作成、に活用していました。これからは、Vzで直接、日付一覧を作成することができます。大いに活用します。ありがとうございました。

[4574] Re^2: 選択曜日の指定範囲の日付を出力

めざら 2020/02/12(Wed) 07:56
[4573]へのコメント http://mezala.la.coocan.jp/
お久しぶりです.
出力部分はいかようにもカスタマイズできますので,お好きなようにカスタマイズしてご利用くださいね.

自分の使い方としては,同一曜日の複数のアイテムを作るために,それぞれ出力してマージ,ソートするということをしています.もう少し便利にできないかと別の側面から考えてもいます.

なにかアイデアがあったら何でもください!

[4575] Re^3: 選択曜日の指定範囲の日付を出力

キャロル 2020/03/07(Sat) 00:50
[4574]へのコメント
 めざらさん
 いろいろ病気をかかえ数種類の薬を服用していますので、なんとか減らそうと、「主観的」には思っていました。ところが先月(2月)、なんか異様に疲れるなあと思い、病院に行きました(2月5日)。その翌日、入院です。糖尿病でした(涙)。入院中、運動療法指導を受けました。病院の起床は朝6時です。私は起床すると、すぐに面会ルームで、指導されたスクワットやかかとアゲサゲを、力一杯やりました。ところが柔軟体操をしなかったため、左足ふくらはぎの肉離れになりました。踏んだり蹴ったりです。いまもしびれが残り、正常な歩行が出来ていません。
 思いっきり飲んで、食べて、ということができなくなりました。おなかに針を突き立て、指先で血糖値を測る毎日です(涙)。

[4576] Re^4: 選択曜日の指定範囲の日付を出力

めざら 2020/03/08(Sun) 10:50
[4575]へのコメント http://mezala.la.coocan.jp/
キャロルさん,ちと困ったことになってしまいましたね.

わたしは痛いのがひどく苦手で…まぁ,好きな人は被虐性向があるわけですが…例えば転んで擦りむくなんてことを想像しただけでちょっとゾゾけるという情けない人間なのですが,自分で自分に注射するとか絶対できないと思うわけです.抗アレルギー剤の何とかペンとか,インスリン注射なんてムリムリ.ですので,糖尿病にはなりたくないとそれなりに節制し,毎日三回歯磨きの時間はいつもスクワットしながらです.一日に合計三百回くらいはできている計算です.

> おなかに針を突き立て、指先で血糖値を測る毎日です(涙)。

いま,かなりゾゾけました.
指先って神経が集中しているところでもあるので,痛いのでしょうね.むしろ痛点の少なそうな前腕の外側とかじゃダメなのでしょうかね.

ともかく今は長生きするために,節制と適度な運動に励んでください.

ひとにはこう言っても,自分は実際には節制はできていないな.先日,生涯最高体重を更新したばかりだし,腹筋運動器具を買っても放置しているし,飼い犬をなくしてからは散歩もしていないし,先日ちょっと畑仕事をしたら息が上がっちゃってるし.

ともかく,面倒と思う気持ちを脇に置いて,地道にいろいろやってみてください.
うちの無農薬野菜を送れるといいけど

[4577] Re^5: 選択曜日の指定範囲の日付を出力

キャロル 2020/03/09(Mon) 02:00
[4576]へのコメント
 めざらさん
 温かい励ましのお言葉をいただきまして、ありがとうございます。
 私も「ゾゾける」くちです。中学生の時、社会科の先生から、その先生の先輩教師の話を聞いたことがあります。治安維持法で警察に拷問された話しです。痛いのが苦手な私は、もし拷問されたら警察の言いなりになって、あることないこと全部話してしまうだろうと思いました。ちなみに、私の父の職業は警察官でしたが(笑)。
 インスリン注射は、退院後から先週月曜日(3/2)まで1日4回でした。月曜日に診察を受け、今は1日1回になりました。インスリン注射をすると言われ、最初ビビりましたが、針が細いので、痛みは「ヤブ蚊」程度でした。ヤブ蚊の場合、こちらが自覚してみていると、チクッと痛みがありますよね。ところが気がつかないときは痛みはほとんどありません。そんな程度でした。インスリン注射は、痛点箇所に刺すと痛いけど、そこを外せば痛みを感じないのです。あたりかな、外れかな、というルーレット感覚で、毎日インスリンを注入しています。
 指先の血糖値検査も、ほとんど痛みを感じません。自分に合った針の深さを選び、ペン型の器具でボタンを押すと、一瞬で必要な血量(ごくわずか)の採取可能な穴をあけてくれます。私は、1日に2〜3回、計測しています。
 医学の進歩に、感謝です。
 そうそう、「ゾゾける」話しで、もう一つ、両眼の網膜剥離手術というのがあります。眼球にメスを入れる話しです。それはまたいずれ(笑)。
 めざらさん、お互い、長生きしましょうね。Vzを道具に使いつつ。
 
 

↑ このページの先頭