一括表示

− 野ざらし言 −

[3868] TAG_REV.defの修正は可能か

akabeko 2011/02/14(Mon) 20:59
めざら さん ESTさん 今晩は!
 2006年6月頃にEstさんが、TAG_rev.defというマクロを野ざらし言の場において公表されました。
以下のマクロです。

=====tag_rev.def(v0.02) ====by Est for akabeko
*m
50^\ ""
:a (s)?{ (wa)?#[ ?{ wa=wo, (z)? #[ } >a }
#E "A:\vz\tagsk21p.bat" #m #[ ;★taged.batの場所によって
は要修正
#O &?("A:\vz\tag.txt")#m ;★tag.txtの場所によっては要修正
we250,
#_
#F &?("本日") &d #m #r ;★"本日"を示す文字列によっては
要修正
#< #b mb2, #> mb0, #< ;擬似ブロック
 *
=====END of tag_rev.def ====

めざら さんもご記憶のことと存じます。当時、めざら さん、Estさん、私の3名の間で会話があった
わけです。

当時、私は、Estが折角、タグスケ・ユーザーのために作ってくださったのに、このマクロが一体何の効用(メリット)があるのか、皆目理解できませんでした。そのため、タグスケ.batは毎日使ってきたのに、tag_rev.defについては、現在に至るまで約5年、全く使っていませんでした。

タグスケ.batはMS-DOSの親プロセスで実行するものですが、tag_rev.defは子プロセスを介してタグスケ.batを実行するものですね。わざわざ、親プロセス・プロンプトに降りて行かなくても最終スケジュール表(TAG.txt)の元となる日誌ファイルの編集画面において居ながらにして、tag_rev.defで、タグスケ.batを実行すればTAG.txtが作れるじゃないか(ひと手間手が抜ける)とESTさんは考えたように私は推測します。しかし、この子プロセスを介してタグスケ.batを実行する方法は、欠点(デメリット)があります。

(註)念のためタグスケ・システムを以下に簡単に要約してみます。

a. 案件毎にファイルを作成し、そのファイルに時系列でTo Do 事項(予定事
項)を時間・場所等を1行で簡潔にエディター(VZ EDITORを使っていま
す)で入力します。
b. 記入した未来のTo Do 事項の行頭に#マーク(TAGという。付箋のこ     と)を入力しておきます。
c. タグバッチを実行すると、多数の日誌ファイルの中から#マークのついた将  来のTo Do事項を記録した行のみを拾ってきて時系列で整理して、集計し、  抽出し、日誌ファイル から変身した姿(結果)をスケジュール表として見  せてくれます。
d. スケジュール表と各案件ファイルとの間はVZ EDITORのタグ・ジャンプ機能  で自由にワンタッチで往来できます。
 タグスケとは、大体、こんな仕組みです。

さて、tag_rev.defはどんな欠点があるかということです。
話が長くなって恐縮ですが、聞いてください。

多数の日誌ファイルの中の一つにhlthdth.txt(広く人の生死や健康に関係する事項を記録します)
というファイルがあります。
このファイルに次の予定事項が記録されていたとします。

#2011/02/10/(木)11.00 虎ノ門病院・消化器外科で検診
 #2011/03/21/(月)休日、13.00お彼岸につき、高崎の ○○寺に亡父の墓参。」

或る日、上記の2行目の03/21/(月)の件についての「  」内の予定事項を上記のとおりに記入し、この記録
を保存し、直ちにtag_rev.defを実行したとします。TAG.txtには03/21/(月)の件についての予定事項が転記されません。

ところが、03/21/(月)の件についての予定事項を記入し、この記録を保存し、ファイル終了してから親プロセス・プロンプトに降りてタグスケ.batを実行した場合は、当然のことながら、TAG.txtには03/21/(月)の件についての予定事項がTAG.txtに転記されます。

それでは、tag_rev.defが親プロセス・プロンプトに降りて行かなくても、元ファイルの編集画面でタグスケ.batを実行出来るというメリットを生かしながら、最前入力した予定事項をTAG.txtに転記をすることを可能にする方途はあるか?ということです。それが可能であり、デメリットが修正されれば、tag_rev.defの実用価値が顕著に出てくるということです。

面倒なことをお願いして恐縮ですが、タグスケ・ユーザーのMASAさんのMASA'S WONDERLANDにおけるベータ版のタグスケ2.2をダウンロードしていただきたいと思います。同梱されているタグスケ.bat(Tagsk22p.bat)を見てください。
このバッチの最終行に 「del $? 」とあります。 「del 」を外してこのバッチを実行すると分かるのですが、$?とは$1、$2、$3、$4、$5、$6、$7 のことです。
 タグスケ・システムにおいて、元となる日誌ファイル から変身した姿(結果)をスケジュール表として見せる
プロセスは実は8段階に成っています。$1→$2→$3→$4→$5→$6→$7→TAG.txtという経過をたどって、最終スケジュール表(TAG.txt)が出来上がっています。$1→$2→$3→$4→$5→$6→$7という中間過程は最終段階で消していますが、実際にはこれらの中間ファイルは裏方として働いています。
          
$1に「#2011/03/21/(月)休日、13.00お彼岸につき、高崎の ○○寺に亡父の墓参。」という文字列をブロック指定してブロックした記憶をDOSへ運び、COPY&PASTEするとともに、ファイル名とこの予定事項記入が何行目にあるか
に関する情報を取得し$1にCOPY&PASTEすることができれば、目的は達成できると思うのです。

 編集画面の右上にファイル名が見えますから、ファイル名の情報を取得出来ると思います。
「  」内の記入予定事項が編集中のファイルの上から何行目にあるかについての情報の取得は、マクロ師の方々にとっては、容易なことと思います。コピー先ファイル$1においてのコピーする位置についてですが、文頭で良いと思います。いずれ後でソートされて、適当な場所に移されるのですから。

 残念ながら、あかべこにはマクロ・プログラミングの能力が皆無ですので、めざら さんにご教示をお願いする次第です。ESTさんも出てきていただくと有難いのですが、5年も昔のことですから、駄目かもしれませんね。

[3869] Re: TAG_REV.defの修正は可能か

めざら 2011/02/15(Tue) 21:32
[3868]へのコメント http://homepage3.nifty.com/mezala/
 きちんとセーブしたファイルの内容が出力できないとしたら,バッチの記述が違うか,パスが異なるか,その他もろもろの理由があるのだろうと思います。ただ,その理由というのは,タグスケのような使う人それぞれがカスタマイズして使うことが多いシステムの場合は,使っている本人でなければ絶対に解りません。
 わたしは超能力者ではないので,文字数は多いけれど肝腎な情報に欠けている文章を読んでも,なにも解りません。

 もしかして,子プロセスで実行する前に,既に tag.txt がオープンされていたりしませんか? 既にオープンされているファイルを開く命令を VZ に与えても,現に開いているファイルを差し替えることはありません。

 まずは,実行後に,オープンしている tag.txt 上で,ファイルの再読み込みを行う初期組み込みマクロ(標準のキーアサインは [ESC]U)を実行してみてください。

 見えない環境の問題を解決するには,また,ステップ・バイ・ステップでやってみる必要があります。
 今度は息切れしませんように。。。

 おそらく,tag_rev.def そのものの問題ではないと思われます。

[3870] Re^2: TAG_REV.defの修正は可能か

としき 2011/02/16(Wed) 22:58
[3869]へのコメント http://www1.hinocatv.ne.jp/toshiki/
日ごろのご愛顧に感謝して、というのは作り話ですが、気分転換の腕試しということで、タグスケユーザーでもなんでもないのですが、ちょっと取り組んでみようかと思いました。が、あえなく挫折。
でも、

>  もしかして,子プロセスで実行する前に,既に tag.txt がオープンされていたりしませんか? 既にオープンされているファイルを開く命令を VZ に与えても,現に開いているファイルを差し替えることはありません。

これを読んで、思わず「あぁっ!」と叫んでしまいました。
確かに、これ、ありうる。
というか、「なぜ、ファイルが書き換わってないんだろう?」と、既にオープンされている、ということは書き変わる前の古いバージョンのテキストテキストを上書き保存して、せっかく書き換えた新しいバージョンのテキストを消してしまうことがたまにあるからです。よくあるのは、Delphiのプログラムをデバッグするのに、Delphiの統合環境とVzの両方で開いていて、というパターン。いや、Delphiの統合環境のエディタの使い勝手が悪いのかいかんのですが。


えと、あかべこさんには一つ提案。
もうちょっと端的に

 「どういうファイル」に
 「どういう操作をした」ところ
 「どのような結果が出た」けれど
 「求める結果はこうなってほしい」

というような文章にしていただくことは可能でしょうか。
いろいろな業界ごとにそれぞれ慣用的な用語とか文体というものがあることはご存知かと思いますが、このあたりのマクロ界隈だと、この種の、無味乾燥な文章のほうが早く結果が出ることが多いです。そうなっていれば、運がよければ、めざらさんよりも先に私やそのほかの人が正解にたどりつく可能性があるかも、という程度の話ですけど。

[3871] Re^2: TAG_REV.defの修正は可能か

akabeko 2011/02/17(Thu) 12:01
[3869]へのコメント
めざらさん としきさん 今日は。

>もしかして,子プロセスで実行する前に,既に tag.txt がオープンされていたりしませんか? 
>既にオープンされているファイルを開く命令を VZ に与えても,現に開いているファイルを差し替える
>ことはありません。

としき さんも
>>これを読んで、思わず「あぁっ!」と叫んでしまいました。
>>確かに、これ、ありうる。
と言っておられます。

そのとおり、原因はこの「もしかして」=「まさか」ですね。確かに、この通りだったのですね。
昨年亡くなられた野球評論家の大沢啓二さんの口癖の「まさかの坂を転げ落ち」というのがありました。典型的なオヤジ・ギャグですかね?

子プロセスでのcopy&pasteなどのゴテゴテした記述
即ち
>文字数は多いけれど肝腎な情報に欠けている文章
の部分は
この「まさかの坂を転げ落ち」ているあかべこの「迷走」であることが明白となりました。お粗末様でした。

めざらさん&としきさん の御示唆に従って、
tag_rev.defを子プロセスで実行する前に、
@既に tag.txt がオープンされていないことを確認する。
A編集中のファイルを、ファイルメニューから又は「Alt+S」のKEYから、保存する。
という二つの動作を励行して、その後にtag_rev.defを実行することとしました。
このようにすると、百発百中(こんなに多く実験していませんが、many timesの比喩)、予定事項記入が、見事にTag.txtに転記されていました。成功!です。

>おそらく,tag_rev.def そのものの問題ではないと思われます。
という、めざら さんの予想は当たったのでした。有難うございます。

「TAG_REV.defの修正は可能か」といあかべこの問題提起自体が誤りであったということですね。TAG_REV.def自体には問題はなく、あかべこにおける、このマクロの使い方に問題が有ったということです。恥ずかしい次第です。
また、Estさんには申し訳ない失礼なことを言ってしまったので、お詫び申し上げます。

ついでの質問で申し訳ありませんが、もう一つマクロの関連事項について、めざらさんに教えていただきたいことがあります。宜しくお願いします。
めざら資源→VZ editorマクロ工房→[導入手順書]→マクロのインククルード

>コマンドラインで「+マクロファイル名」を引数にしてやると,起動時に外部
>マクロを読み込んでおくことができます。
とあります。

ところが、読み込んだ後、どのように読み込んだ後で、この外部マクロを呼び出して使うのでしょうか?
例えば、
1、TAG_REV.def をvz.defのその他セクションの1項に記載しマクロメニューか
ら実行
2、TAG_REV.def をマクロメニューから、moremac2.def 経由で実行上記の二つ
の方法で上手くいっていますが
 「+TAG_REV.def」で、読みこんで、して、これをどのような手順で呼び出すのでしょうかでうか。このインクルードの経験がないので宜しくお願いします。

↑ このページの先頭