桐でGrep(桐10対応版)   2018年01月  3.10版  (C)悲しげ 【目的】 「桐でGrep2.5」なるものがこのDLコーナーの#093に有ります。 基本骨格は何と前世紀の1999年にv8で作ったもので、中味は流石に稚拙な部分もあり、 且つ桐10用には使えないという・・・。 その後は例えば#138、#139。#141、#170等、素敵な作品が上がっていますが、まずは 自分の作ったものを桐10対応に移植してみた次第です。 対象ファイルは、tbx、cmx(cmd)、kex(kev)、k3x(k3)、txt、csvです。 旧のtblデータについては、超遅く、時には落ちてしまうので対象から外しました。 この点は深追いせず、それらは別途作成する桐v9用の改訂版に委ねることにします。 旧版作成時の主な目的は、tbl横断的に入力データを検索したいということでしたが、 実際に自分が使っていく内には、殆どがkevとcmdの記述の検索用となっていました。 そのため、tbl(tbx)の検索に関しては詰めが甘いものとなっているのは否めません。 ま、実際にあまり活用していないことの反映です(^^;)。 対象ファイル名の取得は、別掲『桐10移行計画3』と同様に「#ファイル検索」の利用 を嫌って、専ら「dir」コマンドを利用しています。 具体的には「bat」ファイルを「印字」出力させたものを「シェル実行」で。 その関係で幾つか填まったドツボは後述※。(^^;) サブフォルダ指定も「dir」の「/b /s」を利用することとし、単フォルダの場合も全て フルパスで作動させています。「当該フォルダのみ」の扱いなんぞは、発想を逆転して 「dir」の「/b /s」でサブフォルダごとのフルパスで取得してから、当該フォルダのみ を絞り込んで処理させています(^^)v。 【使い方】 この処理一式を任意のフォルダに置きます。 (私の場合 某ドライブ:\TOOL\桐でGrep10 フォルダに) 起動は「桐でGrep10.wfx」から。(必要ならwfxのショートカットをデスクトップにでも) こうすることで、処理対象フォルダに作業ファイルを逐一手動でコピーすることなく、 汎用的(フォルダ横断的)に処理を行うことが可能なように作ったつもりです。 前回処理フォルダ名を記憶させてみました。(意外と便利かも) 処理作業の進行状況も表示させています。 「kex」と「cmx」については、どちらも基本構造は表ファイルなので、拡張子を「tbx」 としてリネームコピー後、表データを検索する形で実行してます(少々「反則」かも?)。 「あいまい検索」つまり部分一致検索に対応(というかその場合が大半かと)。 検索結果は、「Grep結果一覧」フォームにて表示させます。 表示内容は以下の7つ;  ・検索文字列  ・拡張子名  ・folder名  ・file名  ・行番号  ・項目名(表の場合のみ)  ・値 Grep検索の結果は印刷可能で、プリント結果を基に原データに当たるという作りです。 検索結果画面からダイレクトに原データの訂正に飛ぶことまでは対応できていません。 表が開けないケースについても   「原因はともあれ、このファイルは開けないので、検索対象から外します!           →必要ならメモを! 」 として逃げています。原因のひとつ、未定義変数由来に関しては「変数管理」ボタン で事前対応できるかもしれない、あるいは「利用者コード」関連でもボタンを用意し ましたがどうでしょう? 表引き対象表の不在についてはそれなりに対処したつもりではあります。 それとk3、csv、txtのデータについても、実は付録的に入れてある程度で、一部未検索 が出るところに関しては深追いはしていません。これらtxt系データのGrepについては、 もっと優れたアプリが既存だからです。自分でもそっちを使うかなとか。(^^;) 本検索処理では「〓」の字をデータの区切りとして使用しているので、検索データ中にこ の文字「〓」が存在した場合の対応は不完全になります。また制御文字「\n」や「\t」が あった場合も然りです(画面ではメッセージを出すようにはしてますが)。 【ドツボ】 例えば「シェル実行」で「同期=する」指定を忘れて暫しの間ドツボにはまっていた。(^^;) 「印字開始」コマンドで「制御文字展開=しない」関連の不具合に遭遇してひどい目にあった。 私の場合、上述したように、\TOOL フォルダなんかに置いたものだから「\t」がタブ展開 されてしまったとか(あと「\n」なんかも困るのかも?)。 どうやら「印字開始」コマンドの指定よりも、環境設定の指定が優先されることがあるよ うなので、対策としては(ヘルプにもあるが)個々に   #文字置換(#文字置換(&フォルダ名,"\t","\\t"),"\n","\\n")  /*さらに大文字対応も?*/ とやるべきなのだが、面倒なので、その辺り起動時に次のメッセージを時々出して逃げてある。   この処理を使う場合は、環境設定/一括/高度な設定において   「印字コマンドでコントロール文字を展開する」にチェックを   入れないでおいて下さい。 試してないけど、まとめて「#文字置換(&フォルダ名,"\","\\")」でもいいらしい。 (これらは桐10ビルド番号#2238の不具合らしく、その後修正されているかもしれない) それと(Vision Makerさんから)フォルダ名にスペースが含まれている時にうまく動かな い旨の指摘も戴き、改善しています。 【最後に】 不具合あればお知らせ下さい。バグが多発して、かなりつぶしたつもりではありますが、 他にもきっとあるでしょう。 それと上述したように少々「反則技」的だし、未究明部分も幾つかあるので、検索結果を 保証するものではありません。あくまで参考程度に。