RPG

387. 文字列に含まれている長さを調べる%LEN

%LEN は OS Ver6.1から使えるようになった文字列の中の実際に
含まれている文字の数を調べる関数である。
それまでは

24. 文字列の中の有効な文字数を調べるには?
で紹介した古典的な CHECKR を使って

 ' '       CHEKRSTRING    LEN     

 

のようにして調べるしか方法がなかったが %LEN
一発で有効文字数を調べてくれる。

ソースはこちらから

0001.00 H DFTNAME(TESTLEN) DATEDIT(*YMD/) BNDDIR('QC2LE')                      
0002.00 F********** %LEN の使用方法 *******************************************
0003.00 F*                                                                     
0004.00 F**********************************************************************
0005.00                                                                        
0006.00  *( 作業変数 )                                                         
0007.00 D AR              S              1A   DIM(256)                         
0008.00 D LEN             S              4S 0                                  
0009.00 D MSG             S             80                                     
0010.00 D DSP40           S             40                                     
0011.00                                                                        
0012.00 C                   MOVEL(P)  ' 電卓 '      MSG                        
0013.00  /FREE                                                                 
0014.00     LEN = %LEN(%TRIMR(MSG));                                           
0015.00     DSP40 = ' 電卓の長さは ' + %CHAR(LEN) +' 桁です ';                 
0016.00  /END-FREE                                                             
0017.00 C     DSP40         DSPLY                   ANS               1        
0018.00 C                   SETON                                        LR    
0019.00 C                   RETURN        


                                       

[解説]

LEN = %LEN(%TRIMR(MSG)) は MSGの中に入れた「電卓」という文字の長さを
戻す。
実行してみると

                       プログラム・メッセージの表示

DSPLY   電卓の長さは 6 桁です

  応答を入力して,実行キーを押してください。
    応答 . . .                              
                                            
                                            
 F3= 終了    F12= 取消し                    

となる。