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であっても同じ比較ができる。