Path: sran124!katsu From: katsu@sra.co.jp (WATANABE Katsuhiro) Message-ID: Date: 19 Jun 90 20:36:41 Organization: Software Research Associates, Inc.,Japan In-reply-to: katsu@sra.co.jp's message of 18 Jun 90 01:17:38 GMT Newsgroups: sra.test Subject: Re: Today's Junk article. [Unimaga 1990Jun little language] Distribution: sra References: 「本日のゴミ記事」 この企画の趣旨: 特になし。やりたいからやってるだけ。日記をめざしている。 「惰性のプログラミング」 (またまた失敗例) 記事 で katsu@sra.co.jp (WATANABE Katsuhiro) いはく > > でも、数字にカンマをつけることぐらいはできそうなので、ちょっと > > nroff でやってみました。 > > 式の評価をしなくてもよくて、カンマをつけるだけだったらそれこそもう > 色々なコマンドでできるようです。(Unix Magazine の元の記事でこれを adb にも計算の機能や、formatted output の機能があるので、ちょっと やってみました。 ファイルが3つにわかれてしまっています。 ---------------- comma.adb 0t1000000000>7 0t10>6 0t0>5 #(#(<8&0x80000000))>3 '- ',<3=c (<8*#<3)|((‾<8+1)*<3)>8 $5 (<8%<7),<5=d (<6-1)>6 0,<6$4 ', ',(#<4&<5)=c (<8-((<8%<7)*<7))>8 (<7%0t10)>7 $8¥ <- 2行にわたっています。 $,<,== 等)がない。 ただし、# という演算子があって、 #0 -> 1 #x -> 0 ただし x は 0 以外 ということをやってくれるので、(早い話が論理否定の演算子) if (register) { ... } というふうに書きたければ、 repeat_times (#(#(register))) { ... } のような意味のことを書いた。 3.「1,0>x」(私は最初「1 を x に代入することを 0 回繰り返す」すなわち if (0) x = 1; という意味に理解していた。)は、レジスタ x に必ず 1 が代入される。つまり 代入の場合繰り返し回数は無視される。(1,12345678>x とやっても一瞬で終る。) よって、 if (register8 < 0) register8 *= (-1); のようなものを、if がないから繰り返しで代入しようということにして repeat_times (#(#(register8 < 0))) { register8 *= (-1);} のように書くことはできない。 register3 = #(#(register8 < 0)); (register8 * #(register3)) | (register8 * register3) のように場合分けをしないような表現にせねばならなかった。(comma.adb の 4、6行目) [adb で書くことによる利益] とても面白い。 [果たせなかった考え] 数字を1文字づつ表示させているため結果に改行が入ってしまっているが、 ?(テキスト空間)か / (データ空間)に文字列のための十分に大きい 領域をとってそこに一旦貯蔵し、最後に s(文字列)として表示させれば この問題は解決するはずです。 これを目指してがんばったのですが、以下のような結果に終りました。 1.「adb -w ... 」とやってファイルの大きさ分だけ領域を確保するやり方は、 引数に指定されたファイルの内容を書き換えずに終了するやり方がわからずに 挫折。$q で抜けても、^D で抜けても kill -9 しても書き換わってしまう。 (これは恐ろしい仕様ですが、adb の使用目的を考えると、こうでなければ ならないのでしょうね。) しかし一方、-w スイッチをつけた時は、書き込めないファイルを指定することは できない。 2.-w をつけないでファイルを指定してやると、書き込む時に 「not in write mode」というメッセージが出てできない。 3.map と register をいろいろいじくってやっても、ファイルを指定しないで おいて書き込める領域を作ることに(私は)成功しない。 -- ----____----____ 渡邊克宏 環境開発部 今月の歌: 「♪ 僕等の名前を覚えて欲しい 大型機を知らない子供達さ ♪」