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 に記述したレコードを出力
の説明を参考に適用すれば、これららのレコードのみを出力対象とすることができます。