NDBS 35


NDBS No.35 主表から1項目多数候補で検索 c:\serchout.exe  
 データベースに対して1項目の文字あるいは数値からなる複数のデータで単純検索


NDBS35-1 概要
  任意の主表の中の任意の位置を、複数行に記述した情報で検索し、
    該当したレコードを xschdata.txt に出力します。
    検索したい情報は所定の形式に従ってテキストエデイタで作成しておきます。

  このプログラムを制作した動機を紹介しましょう
  ・1,882種の科学技術庁五訂日本食品標準成分表を記録した主表 seibund がありました。
  ・秋田市の保健センターでは独自に278種の食品成分を記録した主表 seibunh を使用しています。
   この主表には五訂日本食品標準成分表の食品コードが記録されています。
  ・秋田市の保健センターでは278種の seibunh に25種の食品分類コードを付けています。
  ・一方1,882種の seibund には18種の食品分類コードを付けています。
  ・ seibunh の25種の食品分類コードを seibund に記録させることになりました。
   せめて278種だけは自動的に記録させたいと思いました。
   それには seibunh から全278レコードの食品番号を取り出し、
   これと一致した食品番号をもつ seibund のレコードを取り出せば良いことになります。
   この作業を手作業で行いますと、膨大な時間がかかる上誤りも発生します。
   この目的のためにこのプログラム serchout.exe を作成しました。
   正確に、かつ高速に行うことができました。



NDBS35-2 準備
 検索したい情報を記述したテキストファイル scrhform.txt が作業場所の form の下に必要です。
  テキストエデイタを使用して次のように記述します。
    パラメータファイル form\scrhform.txt 記述例
      1 行目: 何を書いても良い    <---この行は実行に無関係ですが必要
      2 行目: 被検索RFファイル名 ,Data\adrsdata
      3 行目: レコード長 ,320
      4 行目: 検索項目位置 ,9
      5 行目: 検索項目長 ,16
      6 行目: 数値 1 か文字列 2 か ,2  <---数値で比較したい場合は 1 にします。
      7 行目: 出力SF.パス名 ,xschdata.txt
      8 行目: 以下検索データを一行に一つ記述  <---この行は実行に無関係ですが必要
      9 行目: 佐藤
      10 行目: 高橋

  この例題は c:\usr\ndbtrain で練習に用いられている住所録データを対象にしています。
  主表 adrsdata 9 バイト目から 16 バイト、すなわち 氏名 を記録しているところに、
    検索データと一致したデータがあるかを調べて、
    あればそのレコード番号を xschdata.txt に書き出します。
    検索項目長が検索データのバイト数より長い場合は途中にある文字も検索します。
  NDBS No.1 レコード単位入力 や、 NDBS No.18 絞込・任意項目出力 のプログラムでは、これより高度な検索ができますので、
    このプログラムの存在価値はあまりないように思われますが、
    検索データ数がきわめて多い場合に威力を発揮します。


NDBS35-3 起動と使用方法
 実行プログラムは c:\ndbs\serchout.exe です。
 作業場所に メニューショートカット NDBS3 を作成して、これをダブルクリックし、そのメニュー画面で、
    35 主表の1項目多数候補で検索 をダブルクリックして下さい。
 メニューの組み込み方法は、 NDBS 38 業務実行メニュー を参照して下さい。
 プログラム serchout.exe が呼び出された後、
   form\scrhform.txt が読み込まれて MS-DOS の黒い画面が現れます。

 マルチサーチ作業のパラメータファイルは form\scrhform.txt で良いですか。
            【はい】 -- '1 Enter'   【いいえ】 -- 'Enter'

   のメッセージに対しては 1 Enter と入力します。

 開始しますか。  はい '1 Enter'   いいえ 'Enter'

   のメッセージに対しても 1 Enter と入力します。
   ただし実行されると、出力ファイル xschdata.txt が既に存在していても警告なしに書き変わります。
   書き変わって困る場合は単に 'Enter' して下さい

 実行後、 xschdata.txt に出力しました。 というメッセージが出ます。
 上記の例では xschdata.txt の内容は次のようになっています。

       Data\adrsdata
       320
       1 , 14
       1 , 75
       1 , 99
       1 , 106
       1 , 116
       1 , 126
       1 , 138
       1 , 145
       1 , 169
       1 , 175
       1 , 179
       1 , 189
       2 , 29
       2 , 44
       2 , 78

 つまり、1番目の検索データである 佐藤 氏名 の中に含むレコードは次の12 であり、
     1 , 14, 75, 99, 106, 116, 126, 138, 145, 169, 175, 179, 189
 2番目の検索データである 高橋 氏名 の中に含むレコードは次の3 であったということになります。
     29, 44, 78、

 次にこの出力ファイル xschdata.txt の第一項目と、それに続く半角カンマをエディタで矩形カットして下記のようにします。

       Data\adrsdata
       320
        14
        75
        99
        106
        116
        126
        138
        145
        169
        175
        179
        189
        29
        44
        78

 この後このファイルを、 NDBS No.18 絞込・任意項目出力 のプログラムの、 NDBS18-3 ページの、
  (5) 指定レコード出力 xschdata.txt に記述したレコードを出力
 の説明を参考に適用すれば、これららのレコードのみを出力対象とすることができます。