RPG

431. RPG命令 IF文

ILE-RPGのIF文には2つの書き方がある。

XXXXX IFEQ YYYYYY

IF XXXXX = YYYYYY

という方法である。
どちらの場合でも意外と知られていないIF文のテクニックを
紹介しよう。

0001.00 H DFTNAME(TESTIF1) DATEDIT(*YMD/) BNDDIR('QC2LE')                                  
0002.00 F********** IF のテストその 1 *****************************************            
0003.00 F*                                                                                 
0004.00 F**********************************************************************            
0005.00                                                                                    
0006.00 D TESTLIB         S             10A   INZ('QGPL      ')                            
0007.00                                                                                    
0008.00 C     TESTLIB       IFEQ      'QGPL       '                                IFEQ    
0009.00 C     'QGPL EQ '    DSPLY                   ANS               1                    
0010.00 C                   ELSE                                                   NOT EQ  
0011.00 C     'QGPL NOT EQ' DSPLY                   ANS                                    
0012.00 C                   ENDIF                                                  NOT EQ  
0013.00 C                   SETON                                        LR                
0014.00 C                   RETURN                                                         

問題は

    
      TESTLIB       IFEQ      'QGPL       '

と書けばよいのかまたは

   TESTLIB       IFEQ      'QGPL'

ではいけないのだろうか

答えは「どちらでもよい」である。
TESTLIBには 「QGPL 」という値が入っているが
これを比較するのに後続のスペースまで義理堅く

    TESTLIB       IFEQ      'QGPL       '

と書く必要はない。後続のスペースは無視して

    TESTLIB       IFEQ      'QGPL'

 として比較することができる。
これは

                  IF       TESTLIB = 'QGPL'

としても同じことである。
さらにこの後続スペースを省略して比較するのはRPGだけでなく
CLPであっても同じ比較ができる。