%SCAN は文字列の中から該当する文字列を探す組込み関数である。
見つかると見つかった位置を戻してくれる。
このように文字列の中から該当する文字列を探索する機能はRPG IIIではなかった。
ILE-RPGの組込み関数 %SCANで初めて可能になったのである。
このようにILE-RPGでは組込み関数を使うことによって
RPG IIIではできなかった様々な演算が可能になる。
%SCAN の実践的な使い方を紹介しよう。
■ 効果的な組込み関数 %SCAN の使い方の TESTSCN
ソースはこちらから
0001.00 H DFTNAME(TESTSCN) DATEDIT(*YMD/) BNDDIR('QC2LE') 0002.00 F********** 効果的な組込み関数 %SCAN の使い方 ************************** 0003.00 F* 0004.00 F********************************************************************** 0005.00 0006.00 * CRTBNDRPG PGM(OBJLIB/TESTSCN) SRCFILE(SRCLIB/QRPGLESRC) DFTACTGRP(*NO) 0007.00 * ACTGRP(*NEW) DBGVIEW(*SOURCE) AUT(*ALL) 0008.00 0009.00 D VALUE S 40A 小数 0010.00 D POS S 4S 0 小数 0011.00 0012.00 C MOVEL(P) 'TEST ABCDEF 'VALUE 0013.00 C EVAL POS = %SCAN('ABC':VALUE) 0014.00 C IF POS > 0 0015.00 C EVAL VALUE = %REPLACE('12345':VALUE:POS:5) 0016.00 C ENDIF 0017.00 /FREE 0018.00 VALUE = 'TEST ABCDEF'; 0019.00 POS = %SCAN('ABC':VALUE); 0020.00 IF POS > 0; 0021.00 VALUE = %REPLACE('12345':VALUE:POS:5); 0022.00 ENDIF; 0023.00 /END-FREE 0024.00 C SETON LR 0025.00 C RETURN
[解説]
この例はABCDEFという文字列を含む変数 VALUE の中から文字列’ABC’を%SCANで見つけて
その位置から%REPLACEで12345という文字列に置き換えるものである。
%REPLACEという組込み関数と組み合わせて%SCANを使うことによって
%SCANの用途がより具体的に理解できるのではないかと思う。