いつもはキーボードマクロでふにふにと仕事をする人間なんだけど、キーボ ードマクロでは追いつかない処理があった物で。何かというと、&n。もしか すると、初めて使ったんじゃないかな。 いやぁ、これは楽だ。過去何年間も、外部ツールを呼び出してはVzに戻り して作業していたのだけど、Vzに閉じて作業が終わるというのは気分的に もすこぶる快適。10年くらい前かな、この作業をはじめた時にこのマクロ を作っていたら、今までに延べで2〜3時間は節約できていたような気がす る。もっとも、向こう数年間はこの作業をする予定があるから、今後も延べ で数十分は節約できる見込み。 どんなマクロかというと、こんな感じ。 * M 72 [F13] "" ?. #< #f &n a=r, :a #x #< #f &n b=r, (a<b)?{a=b, >a} * 行頭の項目がソートされていたらOK、というだけの物。 これだけのことを、今までは外部のソートを呼び出して別ファイルを作って コンペアして、NGならばもう一度元ファイルを加工してまたソートを呼び 出して・・・ということを繰り返していたのが、これさえあれば、NGなら 一発でその場にカーソルが移動してくれるので、とってもありがたい。 いやはや、Vzさまさま、という感じ。
> これだけのことを、今までは外部のソートを呼び出して別ファイルを作って
> いやはや、Vzさまさま、という感じ。
> ところで,このマクロは行頭の項目は括弧付き数字だったりするわけですね。ちょっと違います。 現在、ちょっとド忘れしていますが、行頭項目は6桁か7桁の固定長になっ ていて、桁数の少ない数字の場合は半角空白が入っています。なので、数値 の開始点までカーソルを動かしてやっているのですが、もしかして、半角空 白の場合はそんなことせずに&nで数値を取得できてしまうのでしょうか。 ちなみに、人間が入力した物ではなくコンピュータが吐き出してきた物なの で、そんなにおかしいデータは出現しません。たまにデータが化けているこ とはありますけど、数年に1回程度の頻度でしかお目にかかれません。> 別ファイルを作ってコンペアというのは,実際のデータをソートしちゃったらダメということでしょうか。ソートしてUNIQかければ、求める物に非常に近い物ができ上がるのはわかっ ています。これだけではヘッダが尻尾にくるのですが、単純に2行ほどカッ ト&ペーストで求める物が得られる場合もありえます。でも、多くの場合は、 これではNG。行頭の番号が同じで真ん中あたりだけちょっと異なっている、 というのが多くて、その場合、結局このマクロで同一数値の連続が現れない かをチェックするのが確実かつ簡単、という事になります。今までは目の子 で追いかけていたので、発覚していないミスが多いかもしれません。 でも、ちょっとしたこだわりというか、場合によっては番号順に並んでいな い方が良い事も極まれにあって、そういうのも一律に潰されてしまう単純ソ ート方式は今後も導入しない予定です。
> の開始点までカーソルを動かしてやっているのですが、もしかして、半角空
> 白の場合はそんなことせずに&nで数値を取得できてしまうのでしょうか。
> 今までは目の子で追いかけていたので、発覚していないミスが多いかもしれません。
> スペースパディング(という言い方があるかどうか知りませんが)されたま、普通は、固定長データという言い方をすることが多いでしょう。 確認したのですが、行頭データには6桁が確保されていました。 取りうる値は99999までなので、行頭は1桁目は必ず半角空白になります。 何も考えずに作ったマクロなんですが、とりあえず悪いことが起きる可能性 は低そうなことがわかってちょっとほっとしています。> うわ。それはちょっと怖い。(^^;でも、削除しなければいけない物が削除漏れ、という方向でのミスのはずな ので、してはいけない物を削除してしまった、という物に比べればダメージ は軽いはず。