[リストへもどる]
一括表示
タイトル文字検索について
記事No2582
投稿日: 2009/02/02(Mon) 23:33
投稿者西村@愛知
LET V01="土建管-電水-消" ; LET V02="建-とガ-水-具清" の文字列から "水-"(水マイナス) の文字列が有れば "1"を無ければ"0"を表示したいのですが方法が分かりません。
文字列の中の"水"の位置は不規則で、単に"水"だけの場合も有ります。
("水-"は一般水道を、"水"は特定水道を表しています)

タイトルRe: 文字検索について
記事No2583
投稿日: 2009/02/03(Tue) 10:43
投稿者入川@松戸
西村さん

> LET V01="土建管-電水-消" ; LET V02="建-とガ-水-具清" の
> 文字列から "水-"(水マイナス) の文字列が有れば "1"を無け
> れば"0"を表示したいのですが方法が分かりません。

 次のようにしたらよいと思います。

<NISHI>
LET V01="土建管-電水-消";
  IF INSTR(1,V01,"水-")=0 THEN LET V40="0" ELSE LET V40="1";
MESSAGE V40;  /*確認のためです*/
STOP;

 ‘INSTR’は「インストリング」と読み、ここでは文字列V01の1桁目以降に‘水-’を検索し、見付けた位置(桁)を求めます。
 見つからなければ、‘0’を返します。

> 文字列の中の"水"の位置は不規則で、単に"水"だけの場合も有ります。

この場合なら
 IF INSTR(1,V01,"水")=0 THEN 〜〜
とすればよいでしょう。

 一度試してください

タイトルRe^2: 文字検索について
記事No2586
投稿日: 2009/02/03(Tue) 17:37
投稿者西村@愛知
>  ‘INSTR’は「インストリング」と読み、ここでは文字列V01の1桁目以降に‘水-’を検索し、見付けた位置(桁)を求めます。
>  見つからなければ、‘0’を返します。

ありがとうございました。
'INSTR' は文字列を検索するのですね。今まで、文字(この場合は'水')だけだと思っていました。

タイトルRe: 文字検索について
記事No2585
投稿日: 2009/02/03(Tue) 16:47
投稿者入川@松戸
西村さん

> 文字列の中の"水"の位置は不規則で、単に"水"だけの場合も有ります。
> ("水-"は一般水道を、"水"は特定水道を表しています)

 次のようにしてもチェック出来ますね。

IF V01="=*水*" THEN LET V40="1" ELSE LET V40="0";
 V01文字列のどこかに「水」があれば ということで、指令‘CS’の検索条件式と同じです。
 大分前に使っていたのを思い出しました。

タイトルRe^2: 文字検索について
記事No2587
投稿日: 2009/02/03(Tue) 19:03
投稿者西村@愛知
文字列 LET V01="土建管-電水-消" で、"水" のみ場合は"1","水-" 又は "*水*"が無い場合は "0"と表示するには?

(理由)
応札条件で、許可書が"水"(特定事業者)のみで、"水-"(一般事業者)は除外される場合の資格該当者の検索。

タイトルRe^3: 文字検索について
記事No2588
投稿日: 2009/02/03(Tue) 22:16
投稿者入川@松戸
>
> 文字列 LET V01="土建管-電水-消" で、"水" のみ場合は"1","水-" 又は "*水*"が無い場合は "0"と表示するには?
>
> (理由)
> 応札条件で、許可書が"水"(特定事業者)のみで、"水-"(一般事業者)は除外される場合の資格該当者の検索。

 段々難しくなってきました
 トコトンお付き合いしましょう

 次のプログラムを実行してみてください。
 IF文は3つとも同じです。

<NISHI3>
$#1: LET V01="土建管-電-消";
     IF INSTR(1,V01,"水-")=0 & INSTR(1,V01,"水")>0 THEN LET V40="1" ELSE LET V40="0";
     MESSAGE V01+" = "+V40;

$#2: LET V01="土建管-電水-消";
     IF INSTR(1,V01,"水-")=0 & INSTR(1,V01,"水")>0 THEN LET V40="1" ELSE LET V40="0";
     MESSAGE V01+" = "+V40;

$#3: LET V01="建-とガ-水具清";
     IF INSTR(1,V01,"水-")=0 & INSTR(1,V01,"水")>0 THEN LET V40="1" ELSE LET V40="0";
     MESSAGE V01+" = "+V40;
STOP;

 結果は満足出来るレベルでしょうか?

タイトルRe: 文字検索について
記事No2589
投稿日: 2009/02/04(Wed) 19:43
投稿者伊藤@瀬戸
> LET V01="土建管-電水-消" ; LET V02="建-とガ-水-具清" の文字列から "水-"(水マイナス) の文字列が有れば "1"を無ければ"0"を表示したいのですが方法が分かりません。
> 文字列の中の"水"の位置は不規則で、単に"水"だけの場合も有ります。
> ("水-"は一般水道を、"水"は特定水道を表しています)

PIPSでするならばMPUでしょう。
条件式でワイルドカードもつかえます。

最初の条件式
"=*水*"を指定し0とか1等とせず実行式で"特定水道"を指定列に代入し
2番目の条件式
"=*水-*"を指定し実行式は"一般水道"を指定列に代入すればいいのでは。
定義表を作成すればかなり複雑な仕訳ができますね。
具体的な表があればすぐできますよ。