9.198 SCANSTRING
文字列に対して、あるパターンの最初のオカレンスをスキャンします。
各製品の対応
LANSA/AD |
使用可 |
Visual LANSA for Windows |
使用可 |
Visual LANSA for Linux |
使用可 |
引数
次の表に、このファンクションで使用する引数を示します。
番号 |
タイプ |
必須/任意 |
記述 |
最小長 |
最大長 |
最小小数桁数 |
最大小数桁数 |
---|---|---|---|---|---|---|---|
1 |
A |
必須 |
スキャン対象の文字列 |
1 |
無制限 |
||
2 |
A |
必須 |
検索するパターン。必要に応じて大文字または小文字を使用して入力してください。 このパラメータはRDMLXリストでは無視されます。どの値でも指定できます。リスト・エントリーの長さにかかわらず、正しく保管されます。 |
1 |
無制限 |
||
3 |
N |
任意 |
スキャンを開始する位置。範囲: 1〜スキャン対象文字列の最大可能長 デフォルト: 1 |
1 |
11 |
0 |
0 |
4 |
A |
任意 |
大文字を比較するかどうかを指定 1 = いいえ、大文字/小文字の両方で比較 デフォルト: 1 「注」を参照してください。 |
1 |
1 |
||
5 |
A |
任意 |
パターンの末尾ブランクを除去するかどうかを指定 1 = はい デフォルト: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