RPG

457. 効果的な組込み関数の使い方 %CHAR と %DEC

数字の値を文字に変換するときはMOVE命令で文字フィールドに
コピーすることが良く知られているが%CHAR%DECを使うと
作業フィールドにMOVEする必要がない。
 
 

■ 効果的な組込み関数 %SIZE の使い方の TESTCHAR

ソースはこちらから

0001.00 H DFTNAME(TESTCHR) DATEDIT(*YMD/) BNDDIR('QC2LE')                           
0002.00 F********** %CHAR と %DEC の組込み関数テスト **************************     
0003.00 F*                                                                          
0004.00 F**********************************************************************     
0005.00                                                                             
0006.00  * CRTBNDRPG PGM(OBJLIB/TESTCHR) SRCFILE(SRCLIB/QRPGLESRC) DFTACTGRP(*NO)   
0007.00  * ACTGRP(*NEW) DBGVIEW(*SOURCE) AUT(*ALL)                                  
0008.00                                                                             
0009.00 D STRING          S             80A                                         
0010.00 D N               S              4S 0                                       
0011.00 D VALUE           S             10A                                         
0012.00 D DEC70           S              7S 0 INZ(0)                                
0013.00                                                                             
0014.00 C                   EVAL      STRING = ' これは ' + %CHAR(N) +              
0015.00 C                             ' 番目のレコードです '                        
0016.00 C                   EVAL      VALUE = '4 165,000 '                          
0017.00 C                   EVAL      DEC70 = %DEC(VALUE:7:0)                       
0018.00  /FREE                                                                      
0019.00      STRING = ' これは ' + %CHAR(N) + ' 番目のレコードです ';               
0020.00      VALUE = '4 165,000 ';                                                  
0021.00      DEC70 = %DEC(VALUE:7:0);                                               
0022.00  /END-FREE                                                                  
0023.00 C                   SETON                                        LR         
0024.00 C                   RETURN 



[解説]

数字を文字に変換する%CHARの使い方はそのままで簡単であるが
文字を数字に変換する%DECは %DEC(元の文字変数: 数字の長さ: 小数部の長さ)というように
数字フィールドの定義の長さを示して変換する必要がある。

いずれにせよこの二つの関数を見れば文字や数字の変換であることが
一目瞭然である。MOVEで変数をコピーしているのではそれが直ちに文字や数字を変換するために
MOVEしているとは理解できない。
組込み関数を使用することは演算の無駄を省くだけでなく見ればわかるわかりやすさを
表現するという点で大きな利点がある。