!--a11y-->
構造の一部を別の文字列で置き換える場合には、
REPLACE 命令を使用してください。構文
REPLACE <
文字列 1> WITH < 文字列 2> INTO <c> [LENGTH <l>].項目
<c> にパターン < 文字列 1> の先頭から長さ <l> までの部分が含まれるかどうかが調べられます。長さの指定がない場合、パターン < 文字列 1> 全体の長さが検索されます。次に、項目
<c> 内に現れた最初のパターン < 文字列1 > が文字列 < 文字列2 > と置換されます。長さ <l> を指定してある場合は、それに対応する部分だけが置換されます。システム項目
SY-SUBRC のリターンコードの値が0に設定されている場合、これは < 文字列1 > が項目 <c> 内で検出され、 < 文字列2 > により置換されたことを示します。0以外のリターンコード値は、置換が行われなかったことを示します。<
文字列 1> 、 < 文字列 2> および <len> は変数にすることができます。

DATA: T(10) VALUE 'abcdefghij',
STRING LIKE T,
STR1(4) VALUE 'cdef',
STR2(4) VALUE 'klmn',
STR3(2) VALUE 'kl',
STR4(6) VALUE 'klmnop',
LEN TYPE I VALUE 2.
STRING = T.
WRITE STRING.
REPLACE STR1 WITH STR2 INTO STRING.
WRITE / STRING.
STRING = T.
REPLACE STR1 WITH STR2 INTO STRING LENGTH LEN.
WRITE / STRING.
STRING = T.
REPLACE STR1 WITH STR3 INTO STRING.
WRITE / STRING.
STRING = T.
REPLACE STR1 WITH STR4 INTO STRING.
WRITE / STRING.
出力は以下のようになります。
abcdefghij
abklmnghij
abklmnefgh
abklghij
abklmnopgh
最終行で項目
STRING の右側がどのように切り捨てられているかに注目してください。長さ4の検索パターン‘ cdef ’は長さ6の‘ klmnop ’で置換されています。次に、 STRING の残りの部分が項目の端まで埋められます。
