RPG

451. 効果的な組込み関数の使い方 %TRIMR

%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 はどのような場面で使うのかよく理解して頂けたと思う。