8.189 SCANSTRING

文字列に対して、あるパターンの最初のオカレンスをスキャンします。

 

引数

次の表に、このファンクションで使用する引数を示します。

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

スキャン対象の文字列

1

無制限

 

 

2

A

必須

検索するパターン。必要に応じて大文字または小文字を使用して入力してください。

このパラメータはRDMLXリストでは無視されます。どの値でも指定できます。リスト・エントリーの長さにかかわらず、正しく保管されます。

1

無制限

 

 

3

N

任意

スキャンを開始する位置。範囲: 1~スキャン対象文字列の最大可能長

デフォルト: 1

1

11

0

0

4

A

任意

大文字を比較するかどうかを指定

1 = いいえ、大文字/小文字の両方で比較
0 = はい、大文字で比較

デフォルト: 1

を参照してください。

1

1

 

 

5

A

任意

パターンの末尾ブランクを除去するかどうかを指定

1 = はい
0 = いいえ

デフォルト:1 - ワイルド・カード・パターンから末尾ブランクを除去

1

1

 

 

6

A

任意

スキャン・パターンのワイルド・カード。値:

ブランク = ワイルド・カードなし

ブランク以外 = ワイルド・カードあり

デフォルト:ワイルド・カードなし

パターンの一番左の文字にブランクを使用しないでください。使用すると、エラーが発生します。

1

1

 

 

 

戻り値

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

N

必須

文字列での最初のオカレンスの位置またはエラー・コード

次の値のうちの1つが戻されます。

+p = 位置"p"で検出されたパターンのオカレンス

0 = スキャン対象の文字列にパターンなし

-1 = エラー(パターンが文字列より長い)

-2 = エラー(パターンの長さが1より短い)

-3 = エラー(パターンの最初の文字がワイルド・カード)

-4 = エラー(パターンがブランクで、除去が指定されている)

-5 = エラー(開始位置が無効)

1

3

0

0

 

結果は、文字列を比較するために大文字に変換されます。以下は結果の例です。

検索対象の文字列

大文字比較パラメータの指定

結果

検出されるかどうか

ABC

1  (いいえ)

123abc4

Yes

123ABC4

Yes

ABC

0  (はい)

123abc4

No

123ABC4

Yes

abc

1  (いいえ)

123abc4

No

123ABC4

No

abc

0  (はい)

123abc4

Yes

123ABC4

No

 

次のコードによって、テキスト "find where it exists" にある文字列 "where" が検索されます。

Function    Options(*DIRECT)
Define      Field(#PATTERN) Reffld(#SKILCODE) Label('Find Pattern') Default(WHERE)
Define      Field(#STARTPOS) Reffld(#STD_IDNOS) Label('Start Pos') Default(1)
Override    Field(#STD_FLAG) Label('Case (1/0)?') Default('''1''')
Define      Field(#TRIM) Reffld(#STD_FLAG) Label('Trim (1/0)') Default('''1''')
Define      Field(#WILD) Reffld(#STD_FLAG) Label('WildCard?') Default('')
Override    Field(#STD_IDNOS) Label('Occurs at Pos.') Edit_Code(L)
Change      Field(#STD_TEXTS) To('''Find where it exists''')
Begin_Loop
Request     Fields((#STD_TEXTS *LOWER) #PATTERN #STARTPOS #STD_FLAG #TRIM #WILD (#STD_IDNOS *OUT))
Use         Builtin(SCANSTRING) With_Args(#STD_TEXTS #PATTERN #STARTPOS #STD_FLAG) To_Get (#STD_IDNOS)
End_Loop