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 を指定すること。

元々、リリース・ダウンは完全に保証されているわけではないので、製品開発やソフトウェア開発を
ビジネスにしている場合は、リリース・ダウン・コンパイルはプロダクトの品質を保証することは
できないと考えるべきである。