SEARCH(文字の検索)

文字列に関する無効命令

以下の各命令は無効であり、4.6 および 6.10 までのリリースとの互換性を確保するためにのみ利用可能となっています。これらの命令が古いプログラムの中に出現することはありますが、今後は使用すべきでありません。

SEARCH を使用した検索

SEARCH は FIND の前にあった命令です。この命令はリリース 6.10 以降も存在します。
リリース 7.0 以前の、FIND 命令によって取り扱われない機能についてのみ SEARCH を使用する必要があります。特に、そのようなケースとしては特殊文字を使用した検索があります。

リリース 7.0 以降での SEARCH 命令の機能は、見つかったサンプルの選択を例外として (AND MARK オプション)、標準表現を組み込んだ FIND 命令によってカバーされます。必要であれば、見つかった後のサンプル選択をプログラミングするために、オフセット/長さを指定したアクセスを使用することができます。

FIND とは異なり、SEARCH では大文字/小文字は区別されず、長いテキストの検索時には低速となります。

小数点およびアスタリスクは特別なサンプルであり、そのルールはキーワード文書で説明されています。

代码:

 
DATA string(30) TYPE c VALUE 'This is a little sentence.'.
WRITE: / 'Searched', 'SY-SUBRC ', 'SY-FDPOS'.
ULINE /1(26).
SEARCH string FOR 'X'.
WRITE: / 'X', sy-subrc UNDER 'SY-SUBRC',
               sy-fdpos UNDER 'SY-FDPOS' 
SEARCH string FOR 'itt   '.
WRITE: / 'itt   ', sy-subrc UNDER 'SY-SUBRC',
                   sy-fdpos UNDER 'SY-FDPOS' 
SEARCH string FOR '.e .'.
WRITE: / '.e .', sy-subrc UNDER 'SY-SUBRC',
                  sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string FOR '*e'.
WRITE: / '*e ', sy-subrc UNDER 'SY-SUBRC',
                sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string FOR 's*'.
WRITE: / 's* ', sy-subrc UNDER 'SY-SUBRC',
                sy-fdpos UNDER 'SY-FDPOS'.

  结果显示:

SEARCHED SY-SUBRC SY-FDPOS

X            4        0

itt          0       11

.e .        0      15

*e           0       10

s*           0       17
DATA: string TYPE c (30) TYPE c VALUE 'This is a fast first example.',
      pos TYPE i,
      off TYPE i.
WRITE / string.
SEARCH string FOR 'ft' ABBREVIATED.
WRITE: / 'SY-FDPOS:', sy-fdpos.
pos = sy-fdpos + 2.
SEARCH string FOR 'ft' ABBREVIATED STARTING AT pos AND MARK.
WRITE / string.
WRITE: / 'SY-FDPOS:', sy-fdpos.
off = pos + sy-fdpos -1.
WRITE: / 'Off:', off.

 出力

This is a fast first example.
SY-FDPOS:    10
This is a fast FIRST example.
SY-FDPOS:    4

 

原文地址:https://www.cnblogs.com/yjyongil/p/10562667.html