RPG

54. 最適化コンパイルの思わぬ注意

RPGコンパイルで実行速度を上げたり、サイズを抑えるためにも、最適化レベル(OPTIMIZE) を

*FULL に設定することがある。

特にソフトウェア・ハウスなどでは多いかも知れない。

しかし、ターゲット・リリース (TGTRLS) を *CURRENT 以下の *PRV や、以前のリリースへ

リリース・ダウンしてコンパイルする場合には OPTIMIZE=*FULL を指定してはならない。

OPTIMIZE=*FULL は TGTRLS=*CURRENT のときのみに正しく動作するが、リリース・ダウンに使用すると

不安定でマシン・チエックを引き起こして原因不明のエラーに悩まされてしまうことになる。

少しでも最適化を希望するのであれば、OPTIMIZE=*BASIC であればリリース・ダウンも可能である。

また、C言語(C/400)によってマルチ・スレッドJOBを開発する場合は OPTIMIZE=*FULL は

TGTRLS=*CURRENT であっても実行時にエラーとなる。

マルチ・スレッドの場合は OPTIMIZE=*BASIC を指定すること。

元々、リリース・ダウンは完全に保証されているわけではないので、製品開発やソフトウェア開発を

ビジネスにしている場合は、リリース・ダウン・コンパイルはプロダクトの品質を保証することは

できないと考えるべきである。