以前にも %REPLACE の使用方法は解説しているが
もう少し進んだ使い方を解説する。
_
[ TESTRPL : %REPLACEの使い方サンプル・ソース ]
ソースはこちらから
0001.00 H DATEDIT(*YMD/) COPYRIGHT('(C) OfficeQuattrb Co,.Ltd Japan 2016-') 0002.00 F********** %REPLACE のテスト ***************************************** 0003.00 F* 0004.00 F********************************************************************** 0005.00 D VALUE S 40A 小数 0006.00 D POS S 4S 0 小数 0007.00 0008.00 *(1) ABC を 12345 に変更する ) 0009.00 C MOVEL(P) 'TEST ABCDEF 'VALUE 0010.00 C VALUE DSPLY ANS 1 0011.00 C EVAL POS = %SCAN('ABC':VALUE) 0012.00 C IF POS > 0 0013.00 C EVAL VALUE = %REPLACE('12345':VALUE:POS:3) 0014.00 C VALUE DSPLY ANS 1 0015.00 C ENDIF 0016.00 *(2) ABC を 12345 に変更する ) 0017.00 /FREE 0018.00 VALUE = 'TEST ABCDEF '; 0019.00 VALUE = %REPLACE('12345':VALUE:%SCAN('ABC':VALUE):3); 0020.00 /END-FREE 0021.00 C VALUE DSPLY ANS 1 0022.00 C SETON LR 0023.00 C RETURN
[解説]
(1) の方法は固定記述で ABCという文字列を見つけた位置から3文字分を 12345 という
5文字に置き換えることを指示している。
%REPLACEで指定する文字数は検索している対象の文字数を指定することに
注意して欲しい。
(2)のほうはフリー・フォーマットで(1)の演算をひとつの式にまとめたものである。
このようにフリー・フォーマットの記述では POS という作業用のフィールドを
定義する必要もなくひとつの式にまとめて記述することができる
スマートな方法である。
_