RPG

494. %REPLACEの使い方

以前にも %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 という作業用のフィールドを
定義する必要もなくひとつの式にまとめて記述することができる
スマートな方法である。
_