文字列に関する無効命令
以下の各命令は無効であり、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