一括表示

− 野ざらし言 −

[2127] マクロを書いた

としき 2007/07/11(Wed) 22:59
http://www.hinocatv.ne.jp/~toshiki/
いつもはキーボードマクロでふにふにと仕事をする人間なんだけど、キーボ
ードマクロでは追いつかない処理があった物で。何かというと、&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さまさま、という感じ。
 

[2128] Re: マクロを書いた

めざら 2007/07/14(Sat) 06:37
[2127]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 一時的なやっつけ仕事だと手作業ということもありますが,大抵は何か楽が出来ないか考えますね。まぁ,その時々で VZ だけだったり,SED を併用したり,Excel なんぞを使っちゃうこともありますけど。タブ区切りデータの列を入れ替えるときなどは,結局スプレッドシートの方が手軽だったりしますので。

 ところで,このマクロは行頭の項目は括弧付き数字だったりするわけですね。プロが日常的に扱うデータで余程おかしなものって無いのでしょうけど,不特定の人が作ったデータなんかだと括弧が半角・全角混在していたりして,#f が実に便利なんですよね。

 …と言うか,英数字の文字タイプを上位にして必ずストップするようにした c.mos さんの感覚は凄いと言うべきでしょうか。

> これだけのことを、今までは外部のソートを呼び出して別ファイルを作って

 別ファイルを作ってコンペアというのは,実際のデータをソートしちゃったらダメということでしょうか。

> いやはや、Vzさまさま、という感じ。

 7〜8000円で買って,十数年使い倒して,さらに仕事の時間を節約できちゃうのだから,元を取ってお釣りが来ちゃいます。(^^)

[2129] Re^2: マクロを書いた

としき 2007/07/14(Sat) 10:58
[2128]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  ところで,このマクロは行頭の項目は括弧付き数字だったりするわけですね。

ちょっと違います。
現在、ちょっとド忘れしていますが、行頭項目は6桁か7桁の固定長になっ
ていて、桁数の少ない数字の場合は半角空白が入っています。なので、数値
の開始点までカーソルを動かしてやっているのですが、もしかして、半角空
白の場合はそんなことせずに&nで数値を取得できてしまうのでしょうか。
ちなみに、人間が入力した物ではなくコンピュータが吐き出してきた物なの
で、そんなにおかしいデータは出現しません。たまにデータが化けているこ
とはありますけど、数年に1回程度の頻度でしかお目にかかれません。

>  別ファイルを作ってコンペアというのは,実際のデータをソートしちゃったらダメということでしょうか。

ソートしてUNIQかければ、求める物に非常に近い物ができ上がるのはわかっ
ています。これだけではヘッダが尻尾にくるのですが、単純に2行ほどカッ
ト&ペーストで求める物が得られる場合もありえます。でも、多くの場合は、
これではNG。行頭の番号が同じで真ん中あたりだけちょっと異なっている、
というのが多くて、その場合、結局このマクロで同一数値の連続が現れない
かをチェックするのが確実かつ簡単、という事になります。今までは目の子
で追いかけていたので、発覚していないミスが多いかもしれません。
でも、ちょっとしたこだわりというか、場合によっては番号順に並んでいな
い方が良い事も極まれにあって、そういうのも一律に潰されてしまう単純ソ
ート方式は今後も導入しない予定です。
 

[2131] Re^3: マクロを書いた

めざら 2007/07/16(Mon) 12:38
[2129]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
> の開始点までカーソルを動かしてやっているのですが、もしかして、半角空
> 白の場合はそんなことせずに&nで数値を取得できてしまうのでしょうか。

 いいえ,あくまでもカーソル位置以降の数字を 16ビット整数値として取得します。
なぜ行頭が括弧かと想像したかと言うと,
#f を発行して安全なデータは行頭が英数字でないものだ…と考えた時に,
何故か全角文字や空白類はまったく考えが及ばなかったのです。
すると,記号類かなと。

 スペースパディング(という言い方があるかどうか知りませんが)された
数値データということなのですね。桁が埋まることがなければ問題なしでしょう。

> 今までは目の子で追いかけていたので、発覚していないミスが多いかもしれません。

 うわ。それはちょっと怖い。(^^;
 やっぱり機械にまかせたほうがよいでしょうね。

[2132] Re^4: マクロを書いた

としき 2007/07/16(Mon) 13:16
[2131]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  スペースパディング(という言い方があるかどうか知りませんが)された

ま、普通は、固定長データという言い方をすることが多いでしょう。
確認したのですが、行頭データには6桁が確保されていました。
取りうる値は99999までなので、行頭は1桁目は必ず半角空白になります。
何も考えずに作ったマクロなんですが、とりあえず悪いことが起きる可能性
は低そうなことがわかってちょっとほっとしています。
 
>  うわ。それはちょっと怖い。(^^;

でも、削除しなければいけない物が削除漏れ、という方向でのミスのはずな
ので、してはいけない物を削除してしまった、という物に比べればダメージ
は軽いはず。
 

↑ このページの先頭