RPGソースの記述もほんのわずかな工夫だけで見やすくなったり
プログラムの品質の向上に役立つテクニックがある。
今日はその中のひとつを紹介しよう。
RPGソースには右端に注記を記述できる欄が用意されている。
よく使われるのは次のようなフィールドの意味を説明するものである。
0231.00 *( --WUIF-- ) 0232.00 D GUIF_P S * 0233.00 D GUIF DS 1024 BASED(GUIF_P) 0234.00 D QUALIFIED 0235.00 D NAME 1 8A 名前 0236.00 D BYTES 9 12B 0 構造体の長さ 0237.00 D BIT 1 1024 DIM(1024) データ 0238.00 0239.00 *( --WUII-- ) 0240.00 D GUII_P S * 0241.00 D GUII DS 1024 BASED(GUII_P) 0242.00 D QUALIFIED 0243.00 D NAME 1 8A 名前 0244.00 D BYTES 9 12B 0 構造体の長さ 0245.00 D BIT 1 1024 DIM(1024) データ
このような注記の利用方法はよくあることであるが
ここで紹介したいのは DO-LOOPやIF-ELSE-ENDIF などの構造化を示す注記を
次のように記述する方法である。
0343.00 *( WUIS の比較 ) 0344.00 C MOVEL(P) '--WUIS--' ATTR 0345.00 C EXSR SETSTR 0346.00 C EVAL BYTES.NEW = GUIS.BYTES 0347.00 C EVAL BYTES.OLD = OUIS.BYTES 0348.00 C 1 DO GUIS.BYTES N DO 1-GUIS.BYTES 0349.00 * 0350.00 C OPTION IFEQ '*DIFFER' *DIFFER 0351.00 C GUIS.BIT(N) IFNE OUIS.BIT(N) <> 0352.00 C EXSR PRT_GUIS 0353.00 C ENDIF <> 0354.00 C ELSE *DIFFER 0355.00 C EXSR PRT_GUIS 0356.00 C ENDIF *DIFFER 0357.00 C EXSR NXTSTR 0358.00 C ENDDO DO 1-GUIS.BYTES
[解説]
フリー・フォーマットであれば構造化して表示することが可能であるが
伝統的なRPG記述による固定フォーマットの場合は構造化を示すことが難しい。
しかし上記のように DO-LOOP文や IF-ELSE-ENDIF の始まりと終わり
に注記をつけておくと構造化が非常にわかりやすくなる。
これはC言語のテキストとしてよく使われる手法であるが
RPGでもこの方法は有効であるので紹介した。
また参考までにENDではなくENDDOやENDIFと明示的にENDの種類を区別して
記述しておくとコンパイラーが対応を不適切なENDXXをチェックしてくれるので
不用意なエラーを防ぐことができる。
END ではなくENDxxと明示的に記述するようにしたい。