($title_img_alt)

こちらからの投稿は、先頭に表示されているコメントへの返信になります。
2バイト文字のあいまい検索 hamm さん [ 4月3日(木) 13時16分 ]
マスタ照会の検索画面をDDSとRPGで作っています。
マスタというのは品名や取引先等です。

あいまい検索がしたく、1バイト文字ならそれぞれの桁を
SCANしてできるのですが、2バイト文字(漢字やひらがな)
のやり方がわかりません。
どなたかご教授いただけないでしょうか。

RPGでscanを試したり、CLでOPNQRYFの%WLDCRDを
試してみたり色々調べてやってみましたが、うまくいきません。
2バイト文字の両端にあるシフト文字が邪魔をするのだと思います。

QRY400にある LIKE '%入力項目%'のようなことがやりたいのです。
入力項目は変数です。よろしくお願いいたします。
探索 AAA さん [ 4月3日(木) 17時4分 ]
RPG 1行では、無理です。
すべて1バイト文字として扱う。 
まず 探索語を提示します。
(長さ1の配列に並べる。OEOFは除去。)

次に開始1バイトの一致する場所を見つける。
次のバイトをそれぞれ比較する。
探索語の長さまで続ける。



 
RE:探索 IKD さん [ 4月4日(金) 9時39分 ]
漢字で検索しようとすると確かに両端のシフト文字が邪魔になりますね。

これを避けるには検索のために文字を入力するフィールドを
TYPE G (グラフイック・フィールド) として定義してみては
どうでしょうか ?
G フィールドであればシフト文字のない漢字文字列となります
ので漢字を自由に検索することができます。

この方法なら簡単に解決できますね。
RE:探索 INAX さん [ 4月17日(木) 9時14分 ]
以下のように実装してます

例)
検索文字を入力する箇所 10バイト
検索対象 60バイトとします

STEP1:検索入力文字・検索対象から0E、0Fを取って左詰めします。
検索入力文字でしたら、1バイトの長さで10テーブルの配列を用意して
DOで10回 回してOE,OF以外を配列にいれます。
検索対象も同じことをします。

STEP2:配列を1バイトづつ比較
検索入力文字の配列をDOで回して、検索対象文字の配列と1バイトづつ比較して
完全一致したら、DOループをLEAVEする。

他にも方法はあると思いますが、%あああ%のような検索は、
上記のような手順で実装可能です。
がんばってみてください

RE:探索 hamm さん [ 4月30日(水) 19時11分 ]
AAA様 IKD様 INAX様

ご返事が大変遅くなり申し訳ありません。
頑張ってやってみます。
皆さまご丁寧にありがとうございました!



> マスタ照会の検索画面をDDSとRPGで作っています。
> マスタというのは品名や取引先等です。
> 
> あいまい検索がしたく、1バイト文字ならそれぞれの桁を
> SCANしてできるのですが、2バイト文字(漢字やひらがな)
> のやり方がわかりません。
> どなたかご教授いただけないでしょうか。
> 
> RPGでscanを試したり、CLでOPNQRYFの%WLDCRDを
> 試してみたり色々調べてやってみましたが、うまくいきません。
> 2バイト文字の両端にあるシフト文字が邪魔をするのだと思います。
> 
> QRY400にある LIKE '%入力項目%'のようなことがやりたいのです。
> 入力項目は変数です。よろしくお願いいたします。
> 
RE:探索 hamm さん [ 7月14日(月) 11時31分 ]
AAA様 IKD様 INAX様

ご連絡遅くなり申し訳ありません。
最初はまったく意味が分かりませんでしが、
皆様の文書を解釈しながらようやく
完成することができました。なんというか
本当に文書通りのことをやったらできました。
皆さまご丁寧にありがとうございました!
RE:探索 kkk さん [ 8月7日(月) 11時5分 ]
質問者様と同じ事がしたく悩んでいます。
'0E、0Fを取って左詰め'のやり方がわかりません。

どなたかやり方を教えていただけないでしょうか?

お名前

パスワード

メールアドレス

タイトル

ホームページ

アドレス

項目