Path: sran124!katsu From: katsu@sra.co.jp (WATANABE Katsuhiro) Message-ID: Date: 12 Jun 90 17:33:47 Organization: Software Research Associates, Inc.,Japan Newsgroups: sra.test Subject: Today's Junk article. [Unimaga 1990Jun little language] Distribution: sra 梅雨入り記念特別企画 「本日のゴミ記事」 この企画の趣旨: 特になし。やりたいからやってるだけ。日記になればいいかな? Unix Magazine 1990年6月号の「Little Language」は、コンマつきの数字を 扱う企画でした。その中で、bc の関数を使って普通の表記の数をコンマつきの 数に直すようなことを試みているのですが、数字を表示した後の改行を取り除く ことができずに srekcah さんはあきらめてしまっています。 しかし、bc でも「無理に」やろうとすれば、次のようにすることができると 思います。 ---------------- ファイル comma.bc scale=0 define u(x){ auto d, s, i, y if (x == 0) return(x) if (x < 0) { x = -x "-" } for (i = 0; x > 0; i++){ s[i] = x % 10 x = x / 10 } for (i--; i > 0; i--){ d = p(s[i]) if (i % 3 == 0) "," } return(s[0]) } define p(x){ if (x == 0) "0" if (x == 1) "1" if (x == 2) "2" if (x == 3) "3" if (x == 4) "4" if (x == 5) "5" if (x == 6) "6" if (x == 7) "7" if (x == 8) "8" if (x == 9) "9" if (x > 9) { d = p(x / 10) d = p(x % 10) } } ---------------- 「bc comma.bc」で bc を起動して、u(1234567890) などとやってみてください。 comma.bc で工夫してあるのは、数を文字列として表示して改行を避けている X-) 所と、3桁ごとではなくて1桁ごと計算しているところです。 # いうまでもありませんが、Unix Magazine の記事は、 #「コンマつきの数を扱う」のが目的で、決して「bc をカリカリに使う」 # というのが本質ではありません。適当なところで bc に見切りをつけた # srekcah さんの選択は全く妥当だと思います。 # # それとは別に、この記事の目的は、「bc をカリカリに使う」です。:-P comma.bc のようなものと共に bc を使えば、uexpr は expr のために 引数を quote したり、コンマで区切るために sed で力まかせに変換したり する必要はなくなると思います。ああ、でも、comma.bc がそのぶんの歪みを 全部かかえこんでますかね。 -- ----____----____ 渡邊克宏 環境開発部 今月の歌: 「♪ 僕等の名前を覚えて欲しい 大型機を知らない子供達さ ♪」