プログラムの点から言えば、2つの論点を含んでいると思います。
(1)「ローマ字で入力しても日本語で入力しても検索でき」
例えばデータとして、(A)漢字名とは別にもう1項目(B)ローマ字名を、検索するファイル(マスター主)ファイル)に持てば、問い合わせ入力された文字が漢字かローマ字かを判別して(A)項目を見るか(B)項目を見るか切り分けるわけです。
問い合わせ入力された文字が漢字かローマ字かを判別するプログラムを組める力が必要なのと、ローマ字データをマスターファイルに加える労力が必要です。
(2)「入力すればするほど絞込みがされるようにしたいのですが」
通常下記(B)は採らないでしょう。
(A)まず初回の検索の結果(通常全マスタ数>検索結果レコード数)を一時的ワークファイル(ディスク)に書き出します。
続けて絞り込み条件が入ったら、上記一時的ワークファイルを対象にして検索します。初回検索と絞込み検索は、出来るだけプログラムの形が一緒になるようにします。通常初回のル-チンを通せば良いように出来るものです。
その後は絞り込み検索ステップの繰り返しです
。
(B)条件だけ、以前のステップ分も憶えておいて、詳しくして、毎回全マスターファイルを検索する方法。
これは時間的に無駄があり、操作者がイライラして耐えられないケースでは、不適当ですが、瞬時に終わる
ようなら、プログラムルーチンが1つで、検索キーだけ変わって、繰り返しそのステップを流せるので、簡単になります。
条件=検索キー
初回 関東
絞込み第1回 関東+○○線
絞込み第2回 関東+○○線+△△(駅)
(3)実際の例
例えばSQLをご存知ですか。SQL文は検索対象ファイル名の部分(From XX)や検索条件の部分(WHERE XX)が、テキストで表現できるので、そこを実行の前に変えて実行できるというシステムがある場合(アクセスなど)、非常に柔軟性があり、都合が良いのです。
変数化を許さない、別定義の文字列指定を許さないSQLもあると思うので、状況を比較し勉強してください。
お礼
お礼が遅くなってすみません。 今はまだ出来ませんでしたが、今後勉強して完成させたいとおもいます。 ありがとうございました。