!--a11y-->
特定のパターンを使用して文字項目を検索する場合は、
SEARCH 命令を次のように使用します。構文
SEARCH <c> FOR <
文字列 > < オプション >.この命令により、項目
<c> 内で < 文字列 r> 内の文字列が検索されます。見つかった場合は、リターンコード SY-SUBRC の値は0に設定され、 SY-SDPOS には、項目 <c> 内の文字列のオフセットが設定されます。含まれている場合は、 SY-SUBRC は4になります。検索文字列
< 文字列 > で使用できる書式は次のいずれかです。
<str> |
機能 |
<pattern> |
< パターン > (任意の文字列)を検索します。後続の空白は無視されます。 |
.<pattern>. |
< パターン > を検索します。後続の空白は無視されません。 |
*< パターン > |
< パターン > で終わる単語が検索されます。 |
<pattern>* |
< パターン > で始まるワードが検索されます。 |
ワードとは、空白、コンマ、ピリオド、セミコロン、コロン、疑問符、感嘆符、カッコ、スラッシュ、プラス符号および等号で区切られた文字列です。

DATA STRING(30) 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
各種のオプション
(< オプション >) を使用すると、文字項目 <c> を下記のように検索することができます。
項目
<c> で < 文字列 > にある文字列を含む単語が検索されます。文字は他の文字で区切ることができます。単語の一文字目と文字列 <str> は同じでなければなりません。
項目
<c> の位置 <n1> から < 文字列 > を検索します。処理結果 SY-FDPOS は <n1> を基準としたオフセット値で、項目の開始位置を基準にしたものではありません。
項目
<c> で < 文字列 > が <n2> 桁まで検索されます。
検索文字列が検出されると、検索文字列内のすべての文字(および
ABBREVIATED を使用している場合にはその間のすべての文字)が大文字に変換されます。

DATA: STRING(30) 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:
10This is a fast FIRST example.
SY-FDPOS:
4Off:
15ワード‘
fast ’を検出した後で‘ ft ’を含む第2のワードを検索するには、オフセット SY-FDPOS に2を加算して位置 POS から検索を開始する必要があります。そうしないと、ワード‘ fast ’がもう1度検出されることになります。項目 STRING の開始位置を基準とした‘ first ’のオフセットは、 POS と SY-FDPOS から計算して求められます。
