=========================  StakeCLN R2025 内部構造の解説と使用方法  miyama. 2025 April  http://kazutomimiyama.sakura.ne.jp  kazutomimiyamaSub.gmail.com =========================  このプログラムの関数群を書きます。  構造を開設すれば動作もわかりやすくなると、技術的 なことを冒頭に置きました。  使用方法に読み飛ばしてもらって構いません。 ーーーーーーーーーーーーーーーーーーーーーーーーー 1 Private Function MSGJpnEngSelect(JpnMSG As String, EngMSG As String) As String 'MSGjpnEngselect 2 Private Sub MakeStakeBTN_Click(sender As Object, e As EventArgs) Handles MakeStakeBTN.Click 3 Private Sub ExecutePayOrDay() 4 Private Function DateCHKFunc(tmpSTR As String) As Boolean 5 Private Sub EachFileOpen(FileName As String) 6 Private Function OverSlushRMV(tmpSTR As String) As String 'slush many chk 7 Private Function MakeDateSTR(tmpSTR As String) As String 8 Private Function FileNameCHK(FileName As String) As Boolean 9 Private Function DayTrunkCHK(FileNameTrunk As String) As Integer 10 Private Function ExtensionCHK(tmpSTR As String) As Integer 11 Private Function TuneExtension(tmpSTR As String) As String 12 Private Function IsItNumCHK(tmpCHR As String) As Integer 13 Private Sub TuneToBatchResultBTN_Click(sender As Object, e As EventArgs) Handles TuneToBatchResultBtn.Click 14 Private Sub ExitBtn_Click(sender As Object, e As EventArgs) Handles ExitBtn.Click ーーーーーーーーーーーーーーーーーーーーーーーーー 1 ダイアローグメッセージの言語を選択する関数です。 2 事実上のスタート直下のメインプロセスです。   動作条件などのやり取りを行います。 3 実行論理本体です。内部で支払いデータか日報コメ   ントかグローバルフラグで実行動作を分けています。   書き込みファイルのオープンクローズはここで行い   ます。 4 ファイル名体幹などの文字列が日付形式かどうかの   判断を子プロセスから上がってきた0/1整数形式   から2ビットのブーリアンに変換して親プロセスに   渡します。 5 多数微細なソースデータファイルを逐一読んで処   理し、書き込みストリームに渡します。 6 支払いデータで、店舗名区切りに用いている半角   スラッシュの多重を除去します。 7 微細ファイル名から、表示と書き込みに用いるス   ラッシュ区切りの年月日を作成します。 8 読み込み前に、対象のデータファイルであるか、   ディレクトリ内のファイル名を検査します。 9 8の子プロセスです。拡張子を除いたファイル名   が数字だけで表現された年月日として解釈できる   文字列yyyymmdd形式かを検査します。    動作条件に用いる範囲入力の時系列のチェック   にも使います。 10 拡張子が、WeekCLNで用いるpayかdayかの判断を   行います。 11 10の子プロセスです。payday内の大文字を小文字   に変換します。 12 ファイル名の体幹にあたる文字列が数字だけでで   きているかどうかを判別します。   範囲入力のデータチェックにも使います。   9 の子プロセスです。  ーーーーー  StakeCLNとしての新設論理はこれで終わりです。 13 旧充填くんの論理本体です。論理は変更していま   せん。入力ファイル名はoutput.csvに戻しました。    旧のファイルシステムオブジェクトのメンバと   してのcreatetextfile、opentextfileではなく、   新ライブラリとしての   (new) streamwriter/streamreaderを用いれば   utf-8の問題はあっけなく解決しました。  ーーーーー 14 フォームをクローズします。データはバックアッ   プしません。  ーーーーー  ・動作構成を念頭に置いた、挙動と操作方法への解説。  このプログラムは300行ほどしかないので、  作業量としてドキュメントを充実させることができそ うです。WeekCLNは対象の小窓が大量にあることもあり、 操作からくる処理が煩雑で、約3000行あります。独 学で行うのは大変でした。機能の不具合の更新もままな りませんでした。  元のデータディレクトリを破壊してはいけないという 配慮から、このプログラムは直接WeekCLNの微細ファイ ルに逐一アクセスしません。  StakeCLNは実行ファイルである、自身exeのあるフォ ルダに作業ディレクトリを作り、初回起動のとき、 weelclnのデータフォルダを丸ごとコピーします。  出力ファイルも、自身が存在しているフォルダ :作業フォルダ内ではない:に出力します。  出力ファイルは、WeekCLNに倣って同じ  output.csv/txtです。  旧充填くん動作ボタンを押すと動作する、旧充填くん 論理の読み込みファイル名もoutput.csvなので注意して ください。上書きはしないのでデータを破壊はしません。 充填くん論理の出力はおなじく  outTuned.csv  です。  ・内部動作からくる挙動。  WeekCLNの作業フォルダはせいぜい数メガバイトの内 容しかないのでデータ量は多くはないはずですが、  日付ごとに事実上無数のファイルがあり、その読み込 みに手間がとられるので、動作に時間はかかります。 (WeekCLNは事実上入力インターフェースツールの色彩 が強いです。)  初回起動時はかならず、  実行ボタンを押し下して聞いてくるダイアローグに、 はいとこたえた場合にも、  ディレクトリデータを丸コピーしますが、数年分のデ ータの場合、win10の標準的なマシンでは5分程度かか ります。  古い日付のデータなど、内容を厳密に更新する必要が なければ丸コピーは必ずしも行う必要はありません。  つぎに、積算を作成する範囲をプログラムは聞いてき ます。  開始日付と、終了日付の二回機械は入力を求めてきま す。  数値文字列の入力は、半角数字でyyyy/mm/dd形式、 WeekCLNのジャンプ機能ダイアログと同じ仕様です。  例えば  2025/04/26  のように入力してください。  区切り文字は半角スラッシュのみ可能です。  スラッシュは省略できます。  不適切な文字列では機械は再度入力を求めてきます。  笑い話として、範囲指定機能は必要最低限の論理しか 使っていませんので、その数値文字列が現実の日付とし てあっているかどうかを、逐一プログラムは判断してい ません。極端な話、13月87日、という入力もできて しまいます。  ただし、数値の前後は判断しますので、  2024/13/87 日は、  2025/01/01 よりは昔だと判断されます。  9999/99/99という入力も可能です。  万年モードでは、WeekCLNは紀元0年から差し渡し一 万年の範囲で使うことはできます。  当然ながら、古代メソポタミアや10万年後とされる ウェルズの世界ではこのプログラムを使うことはできま せん(阿呆)。  もちろん古代エジプトでも使うことはできません。  世間話として、ここに書いておきたく想うのですが、  灼熱の砂漠地帯にある巨石の大神殿は、夜に羽化した ハエやアブが朝になるとすこしでも涼しい日陰を求めて 神殿のなかにまで入ってきます。  が、  日が高くなると神殿のなかでも余裕で50度、ときに は60度にもなることがあり、そのような日には豆腐鍋 のどじょうよろしく、最後までいちばん涼しかった場所 に虫は集まって死にます。アブ死んでる神殿。  <作話癖あり#2。灰皿は投げないでください。  記録が存在していない日付は機械は無視をします。  終了日付が開始日付より若い場合、機械は内部で入れ 替えて解釈します。  ・逐一の結合動作に関して、動作発想がやや粗いです。  もっと精緻に作る:つまり高速になる:ことは可能か もしれませんが、制作の手間として、上梓がかなわなく なるかもしれませんのでこれで通すことにしました。  手順として、  大量にある微細ファイルの目録をいったん全部取得し、 そのファイル名ごとに指定範囲の条件に合うかどうかを 機械は判断して処理を進めます。  指定範囲が能動的にファイル名群を呼び出すのではあ りません。  つまり一番古いファイル名から開始指定範囲まで、  終了指定範囲から一番新しい範囲までの、ファイル名 検証時間は無駄になります。  高速プロセッサなのでファイル名取捨は迅速なはずで すが、なにぶんにも多いので、待ちが長くなります。  ディレクトリ内容copyが終了した後も1、2分以上 機械が沈黙するのはそのような状況です。  使用者氏が不安になってはいけないと思い、現在どの 日付ファイルにアクセスしているかどうかの挙措の窓は もうけました。  終了すれば、普通に積算ファイルを出力します。  編集利用するためには、別の場所に別名コピーをして ください。  日本語表示チェックボックスを解除すると、表示は英 文になります。  ーーーーー  ・付記、旧充填くん相当の機能ボタンについて  TuneToBatchResult ALT+B のボタンを押しくだすと、 充填くんの動作をします。  動作は旧作と同じなので、充填くんのreadmeをご覧く ださい。  バッチツールwStake11が出力したoutput.csvがあれば、 この実行ファイルとおなじディレクトリに置いてこのボ タンを押してください。  UTFー8の問題も解決し、普通に空白セルがデータ で満たされたoutTuned.csvが出力されます。  注意:旧充填くんでは、元ファイルを破壊してはいけ ないとの配慮から、  入力ファイル固定名は、outsort.txtでしたが、混乱 を招くかもしれないので、  output.csv  に戻しました。  入力ファイルはかならずバックアップを取っておいて ください。StakeCLNとしての出力もおなじoutput..csv です。こちらが動作すると強制的に上書きされます。 =========================  ドキュメントの終わり =========================