==================== カレンダー形式テキストジャーナル 出力ツール: 「便所のそれ並みに地味なこよみ」 「手水に小蛙、青やつで」 ということで「満朔めくりv0.01」とでも。 サンポール、リゾ、観音竹の竹の子。 錆びた三輪車、うすいガラス板の裏木戸。 CopyRight Miyama. 2025 April http://kazutomimiyama.sakura.ne.jp KazutomiMiyamaSub@gmail.com 他の作品はベクターさんにあります。 www.vector.co.jp ==================== ・・・スケジューラが必要だ、と想ってい て、素直に百均に紙のカレンダーを買いに行 けばいいのに、また悪い虫が起こって、ツー ルを作ってしまいました。 というか、生理的にしばらく触っていなか ったので、統合製作環境をいじりたくなって しまったのです。 結果的にはよかったのでしょう、無償コン パイラの更新にライセンスがらみの手続きが 必要だったこともあり、煩瑣なその手間を完 遂することができたようです。 (以下の雑文はファイル末) ・使用条件 フリーウェアです 使用配布は自由です。 ・動作条件 WINDOWS10上、VB2017で開発しました。 ライブラリは各OS標準装備されていますの で実行exeだけで動作するはずです。 必要環境、WIN7以上のwindows まったく同じ条件で開発したソフトが問題 なく7上で動作していますので、これも動作 すると推測します。 ・使用方法と特性 テキストファイルとしてのカレンダーを出 力するツールです。 メモ帳などで開き記事予定などを書き込ん でください。 十数年も前に似たようなツールをVb6で開発 したことがあります。(古いツールでも、VB6 互換のライブラリを組み込んである高位のwin dowsで動作することがありますが、いろいろ おかしい挙動もするようです) いわれてみればの事実なのですが、日にちの 配列としては、、カレンダーは14種類しかあ りません。 元旦が日曜から土曜まででわけられる7通り と、閏かそうでないかの組み合わせによって 7*2=14という理屈です。 そのプログラムは、欲しい年の元旦の曜日を 入力してください、という身もふたもないダイ レクトなインターフェースだったので比較的内 部論理は単純だったのですが、 今回は、クロスワードのような論理訓練もか ねていたので、ロジックでその年の元旦の曜日 (内部論理的には、前年の大みそかの曜日、日 付の変数が都合丁度0になるため)を割り出す 仕様にしました。 面白かったです。 仕事でなければなんでも。笑 ですから、入力の詳細は、 たとえば本日の月日、曜日を入力すればツー ルは内部演算し、カレンダーのデータを出力し ます。 月 日 曜日 今年が閏かどうか あと出力として元旦から何日目かを付記す るかどうか聞いてきます(元旦は1日目です)。 ラジオボタンやプルダウンセレクトをつか えば楽なのですが、ぶっきらぼうなインター フェースで内部ロジックを堅牢に組む訓練も してみました。 対話式のインプットボックスが出てきます。 メッセージは簡単な英語です。大した機能 ではないので文言の日本語化は行いませんで した。 不適切な文字や数値を入力すると、条件判 断で何回も聞いてきます。:このような論理 に今回はあえてdo while〜loopをつかって みました。 癖がある:論理判断に数値しか使えない?、 ということを知りました。 画面は、目安程度のテキストボックスと ボタン二個、 実行go ALT+Gと終了exit ALT+Xです。 goで実行、対話入力が始まり、 処理が終わるとテキスト窓にカレンダーの 内容が表示されます。 縦カレンダーのみです。プログラム名の JVはジャーナルバーチカルの略です。 表示と同時に実行ファイルのあるフォルダ にoutput.txtが出力されます。同一内容です。 このファイルに書き込みする場合は、必ず 別名保存をしてください。 ツールが再度動作しますと上書きされてし まいます。 テキスト窓には編集保存機能はありません。 動作の目安と、範囲指定>Ctrl+Cでの貼り 付けに使用することを想定しました。 exitボタンで終了します。 ーーーーー切り取りーーーーーー ここからあとはツールの実務使用氏にはあ まり関係ないことなので読み飛ばしてくださ い。 内部論理は以下のようになっています。 機械に大の月小の月またうるうの処理をお ぼえこませ、 現在の月日からそれが元旦から何日目かを 算出します。 そのトータルの通し日数から、ループによ ってつぎつぎ7の数字を引いていき、残7日 以下になったところで、一月の第一週になっ たと判断します。 一月の第一週の日にち列と、現在今週の曜 日列を突き合わせ、 元旦、(正確には前年大みそか)の曜日を 突き止めます。 あとは1日目から365日(うるうなら 366日)まで通し日数をインクリメントし ていき、二月のうるうの処理も条件処理でこ なしながら、データ列を大きな最終文字列に 格納していきます。 曜日や月数字は監視論理が繰り上がりを処 理しています。 曜日は日数が7の倍数を通過することを気 を付けていればいいので、論理は比較的単純 ですが、 月の日数は、個々の日数が不規則なのでそ れは月ごとの配列に日数を記憶させてありま す。 最終的には、日番が365ないし366に なったところで、年がうるうかそうでないか の論理ブーリアンと突き合わせて、余計な最 期の行を出力するかしないかを決めています。 ・・・人間だったらどう考えるか、を論理 文字列で再現したにすぎません。 もっとエレガントな方法があるのかもしれ ませんが、器用かもしれないけれどもわかり にくいプログラムは、メンテ修正が難しくな るという意味で場合によっては危険なしろも のになる、ということをどこかで読んだこと があります。 一番普遍的な蹉跌は、たとえばループ処理 で条件分岐離脱をするとき、 ループ管理定数がインクリメントされつつ 処理をこなす系の場合、 条件非整合論理離脱時の監視定数が、+1 状態のままになってしまい、 次に離脱時状態の呼び出し引数としてそれ を不用意に代入すると、 最初の状態非整合の事象を引っ張ってきて しまうことです。 ループ処理では、一個次、一個前はどうな っているのか、つねに考える姿勢が大切です。 ーーーーー切り取り#2ーーーーーー 以下雑文続き、毒なので切り捨て希望。 * プログラミングが、 論理的なトレーニングになるのは、クロン ダイクに通じるものがあります。 最近の筆者はまち時間に遊ぶこともあるの ですが、たいていの手札であれば3分半でク リアできます。 ただしこれは早いんだか遅いんだかはわか りません。 インベーダーのむかしから、廃人:敬称の 域に達する人々は究極的な信じられない数字 をたたき出しますが、背後からみていて、そ れが必ずしも幸福なたたずまいではないのは、 もちろん皆がうすうす同意するところのこと なのでしょう。 オタクに対する名エッセイがまとめられた ペーパーバックに、おたくとはアイルトン・ セナそのものである、という論調が載ってい ました。セナの人生ははたして幸せなものだ ったのか、と。 価値観を他人がとやかくいうことはできま せんが、その項の執筆氏は、そのような人生 はいかがなものかとの論調でしたが。 これがこうでこうだからという無意識を巻 き込んでの訓練はあります。 なかなかむずかしいですが、耽溺没頭を回 避できさえすれば、 切り分けと暫定前進としての論理訓練とは、 生活と仕事に役には立つのでしょう。 戒めとして書くのですが:苦笑:あくまで 時間を上手に使うことさえできれば、たしな みとしてのプログラミングは人生を豊かにす ることも、