作者: 藤岡和夫
日時: 2003/8/20(21:30)
久し振りにIconを使いました。Windows用の9.3です。
wiのコンソールに、風つかいさんのスクリプトをコピーして、コンパイル、実行
形式に変換。実行。

C:\TEMP\Soundspell>dicref


english.dic を読込中です。
開始:21:12:19
********************************************************************************
********************************************************************************
********************************************************************************
*****************
終了:21:12:21
english.dic の読込を終わりました。
257650 語ありました。
参照テストを開始します。
開始:21:12:21
heavy: OK
rain: OK
yveah: NG
niar: NG
終了:21:12:21
参照テストを終わりました。

WindowsXP, Pentium4 1.6GHz, 256MBで2秒。まあ、妥当なところですか。

WiコンソールはSJIS日本語も正常に表示されますね。文字化けは起こらない。

FAQを読むとIconは文字は8bitで取り扱うことは変わっていないようですが、・
・・

On Wed, 20 Aug 2003 00:10:48 +0900
Hiroshi Shinohara <hshinoh@...> さんwrote:

> Iconミニ講座1(辞書読込)
>  今回は、辞書の読み込みです。 辞書と言っても、単語がずらっと並んでいる
> テキストファイルですので、テキストファイルの読込プログラムと変わりはあり
> ません。 後々、時間が問題に気になりそうなので、現在時刻を書き出すように
> しました。 &clockは、現在時刻を hh:mm:ss形式で保持している組込キーワード
> です。  最初、動作モニター用の表示は、エラー出力へ出していましたが、
> アップの都合上、標準出力へ出すように修正してあります。
> 
> -----^ DICREF.ICN ( date:03-08-19 time:23:32 ) -------------<cut here
> ####################
> # 辞書読込・辞書参照の習作。
> ####################
> # dicref.icn Rev.1.0 2003/08/19 windy 風つかい H.S.
> ####################
> # Usage dicref 文字列
> #    english.dicは、スペルチェック用の英単語が順に並んだもの。
> #    このプログラムのテストでは、DD SOFT SoundMixSpellコンポーネント
> #    Ver 0.3.0 に 同梱の辞書ファイルを使用。
> # This file is in the public domain.
> 
> procedure main()
>   # 辞書読込
>   dic := "english.dic"                          # 辞書ファイル名
>   dir := open(dic) | stop(dic," が見つかりません")   # 辞書ファイルオープン
>   S_dic := set()                                # 辞書格納 set生成
> #  write(&errout,dic," を読込中です。")          # 辞書読み込み
>   write(dic," を読込中です。")                  # 辞書読み込み
> #  write(&errout,"開始:",&clock)
>   write("開始:",&clock)
>   n := 0                                        # 辞書行数カウンタ
> 
>   while word := read(dir) do {                  # 辞書を1行ずつ読み込んで、
>     insert(S_dic,word)                          # setに登録
>     n +:= 1
>     if n % 1000 = 0 then writes(&errout,"*")    # 読み込み状況表示
>   }
> 
>   close(dir)                                    # 辞書ファイルクローズ
>    write(&errout)
> #  write(&errout,"終了:",&clock)
>   write("終了:",&clock)
> #  write(&errout,dic," の読込を終わりました。\n",*S_dic," 語ありました。")
>   write(dic," の読込を終わりました。\n",*S_dic," 語ありました。")
> 
>   # 辞書参照テスト
>   L := ["heavy","rain","yveah","niar"]          # テストデータ
> #  write(&errout,"参照テストを開始します。")
>   write("参照テストを開始します。")
> #  write(&errout,"開始:",&clock)
>   write("開始:",&clock)
>   every s := !L do {                            # テストデータを順次読み出し
>     writes(s)
>     if member(S_dic,s) then write(": OK")       # 辞書にあるかチェック
>                        else write(": NG")
>   }
> 
> #  write(&errout,"終了:",&clock)
>   write("終了:",&clock)
> #  write(&errout,"参照テストを終わりました。")
>   write("参照テストを終わりました。")
> 
> end
> -----$ DICREF.ICN ( lines:53 words:154 ) -------------------<cut here
> 
> dicref >aaa としますと、こんな結果になります。
> -----^ AAA ( date:03-08-19 time:23:35 ) --------------------<cut here
> english.dic を読込中です。
> 開始:23:35:43
> 終了:23:35:51
> english.dic の読込を終わりました。
> 257650 語ありました。
> 参照テストを開始します。
> 開始:23:35:51
> heavy: OK
> rain: OK
> yveah: NG
> niar: NG
> 終了:23:35:51
> 参照テストを終わりました。
> -----$ AAA ( lines:13 words:20 ) ---------------------------<cut here
> 
>  私のPCでは、辞書読込・setへの格納に、8秒ほどかかっています。
>  CPU Celeronで、クロック 733M、メモリーは多分32M、MS-DOS版
> の Iconを、Windows-MEのDOS窓で動作させています。
> 
> 風つかい(hshinoh@...)
> IconのWWWは、  http://www.cs.arizona.edu/icon/
> UniconのWWWは、http://unicon.sourceforge.net/index.html
> BGM: Battery's not included /森山威男&杉本喜代志

藤岡 和夫
FGALTS@...
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/