%TRIMR は文字列の右側の後続部分を除去(TRIM)する組込み関数であるが
普段この使い方を知らないと何の役に立つのかと思われがちであるが
文字列の結合に頻繁に使われる組込み関数である。
この例を見てみれば明日から早速使いたくなるはずである。
%TRIMR の実践的な使い方を紹介しよう。
■ 効果的な組込み関数 %TRIMR の使い方の TESTTRM
ソースはこちらから
0001.00 H DFTNAME(TESTTRM) DATEDIT(*YMD/) BNDDIR('QC2LE') 0002.00 F********** 効果的な組込み関数 %TRIMR の使い方 ************************ 0003.00 F* 0004.00 F********************************************************************** 0005.00 0006.00 * CRTBNDRPG PGM(OBJLIB/TESTTRM) SRCFILE(SRCLIB/QRPGLESRC) DFTACTGRP(*NO) 0007.00 * ACTGRP(*NEW) DBGVIEW(*SOURCE) AUT(*ALL) 0008.00 0009.00 D IPADDR S 16A 0010.00 D ADDR S 48A 0011.00 0012.00 *( 文字列 IPADDR の最後尾に NULL を付加する ) 0013.00 C EVAL IPADDR = '192.168.1.15' 0014.00 C EVAL IPADDR = %TRIMR(IPADDR) + X'00' 0015.00 *( ひとつのフィールドに加算する ) 0016.00 C EVAL ADDR =' 東京都 ' 0017.00 C EVAL ADDR = %TRIMR(ADDR) + ' 港区 ' 0018.00 C EVAL ADDR = %TRIMR(ADDR) + ' 六本木 ' 0019.00 /FREE 0020.00 // 文字列 IPADDR の最後尾に NULL を付加する 0021.00 IPADDR = '192.168.1.15'; 0022.00 IPADDR = %TRIMR(IPADDR) + X'00'; 0023.00 // ひとつのフィールドに加算する 0024.00 ADDR = ' 東京都 '; 0025.00 ADDR = %TRIMR(ADDR) + ' 港区 '; 0026.00 ADDR = %TRIMR(ADDR) + ' 六本木 '; 0027.00 /END-FREE 0028.00 C SETON LR 0029.00 C RETURN 0030.00
[解説]
RPG の CAT命令に比べて + 記号による文字列の結合は非常に直感的でわかりやすい。
トリムという命令の意味は文字列のブランクの除去を意味しており特に %TRIMR は文字列の
右側のつまり後続のブランクを除去することを意味している。
この例であれば
IPADDR = 192.168.1.15 X’00’ ではなく後続のブランクを除去して
IPADDR = 192.168.1.15X’00’ とすることを意味している。
今までRPGでは X’00’ (=NULL値)を扱うことが少なかったので
トリムに相当する命令はなかった。
しかしC言語やオープン系のデータとの互換を扱う場面が増えており
トリムの考えが取り入れられてきた。
※ %TRIMRの代わりに %TRIMを使ってもよい。%TRIMは両端のブランクを除去する命令である。
%TRIMR はどのような場面で使うのかよく理解して頂けたと思う。