FGALDC 15 /RE:17239 RE:あへん  こんにちは、和生 さん やっとじっくりと時間をかけて読んでみました。 で、ちょっと自分のわかりやすいように変形してみました。えぇと、和生さんに はかえってわかりにくくなってしまったかもしれませんが、ご容赦ください。 #? &Sc(pa,cp,40) ;タイトルをバッファに退避 &SO(pa,"$(d,a)") r.0-, ;バッファ末尾をヌルから改行コードに r=k=pa, i-, ;変数初期設定 :r &Sf(r,':') (r)?{ ;バッファに ':' が含まれていれば i++, ;カウンタインクリメント j=r.0~, ;乗数取得 k=r++, ;':' の次の文字にポインタを進める >r ; } &u(j) (r=='E')?{ ;もしも 'E' でなければ j-=$30, ;数字と仮定して数字の数値化 }?{ ;そうでなければ j-, ;j=0 } &Sp(pr,"SUB:RE%c%d:%s",k.2~,j+i,k) ;k.-3:数字の手前のキャラクタ (j)??pr.4-, ;数字がなければタイトルを「SUB:」だけに &m(pr) ;タイトル行表示 さて、質問です。 》 &Sp(pr,"SUB:RE%c%d:%s",k.2~,j+i,k) ;k.-3:数字の手前のキャラクタ k.2~ と k.-3 は同じものなのでしょうか。 ところで、このように &Sf で判定していると、たとえばタイトルの真ん中にその ような文字列があった場合に誤判定してしまうような気がするのでしょうが、そ の辺は大丈夫なのでしょうか。 たとえば「真ん中に RE: があるタイトル」というタイトルの場合、きちんと機能 しないような気がします。気のせいかもしれませんが。 あと、どうもロジックが追いきれていないのですが、ほとんど嫌がらせのような、 例えば「RE:Re^19:re:RE*3:タイトル」というような場合にも「RE^25:タイトル」 というようなレスを作れるのでしょうか。なんとなく難しいような気がします。 ということで、和生さんのマクロにヒントを得つつ、ちょっとアルゴリズムを考 えてみました。1文字づつ lexical analysis をするのも気が重いので、まぁ、 下記のようなもので何とかなるでしょうか。  まず、タイトルの先頭にカーソルを持ってくる  (これは、和生さんもおっしゃっている &x あたりを使えばいいかも)  カウンタ0クリア  以下、繰り返し   先頭3文字が [Rr][Ee][: ] であれば    先頭3文字消去    カウンタインクリメント   そうではなくて、先頭3文字が [Rr][Ee][*^] であれば    カーソルを2文字進める    乗数記号取得    さらにカーソルを1文字進める    もしそこが数字でなければループ脱出    数字なら &n で値取得    取得した値をカウンタ加算    数字消去    次の1文字(多分「:」)消去    先頭3文字消去   先頭3文字がいずれでもなければループから脱出  再び先頭から解析  もしカウンタが0か1なら   先頭に RE: をつける  それ以上の値なら   &m("RE%c%d:",乗数記号,(カウンタ値+1)) う〜ん、まだまだバグがありそうだなぁ。 でも、こんな感じのロジックなら、それこそポインタを使わなくても書けるかも。 もちろん、ポインタを使っても書けると思うけど。                                 としき