RPG

369. 複数モジュールの組合せは×

[誤ったILEの開発]

ILEの一番の誤解として複数モジュールから成るプログラムを作成してしまうというのが
誤った使い方である。
どういうことかというとILEとはRPGの異なるソースからモジュールを
作成してそれをプログラムに合成するという方法である。


  RPGソース(1)---------------(モジュール)---+
               CRTRPGMOD                    |
                         |
  RPGソース(2)---------------(モジュール)---+--------------->(プログラム)
               CRTRPGMOD                    |  CRTPGM
                                            :
                                            :
                                            |
  RPGソース(N)---------------(モジュール)---+
        CRTRPGMOD

最終的に生成されたプログラム(*PGM)にはすべてのRPGモジュール(*MODULE)の
オブジェクトが含まれている。
従って RPGソース(?)に変更があると RPGソース(?)のモジュールの再作成(CRTRPGMOD)と
プログラムの再作成(CRTPGM)の両方をつねに行わなければならない。
このような構成はILEでも何でもない。

・作成したモジュール(*MODULE)はつねに次の再作成の備えてどこかのライブラリーに
保存しておかねばならない。
本来、モジュール(*MODULE)はオブジェクト(*PGMまたは*SRVPGM)作成のために
一時的に作成するもので QTEMP に一時的にだけ作成してオブジェクトの作成が
終わればモジュールは不要である。
これはWindowsの場合でも同じことでWindowsの場合では拡張子 .obj を
コンパイル時に一時的に作成するが .exe または .dll が作成すれば .objは
不要である。

・異なる複数モジュールから生成されるプログラム(*PGM)にはすべての
モジュールが含まれているためサイズは大きくなり使わないロジックも含まれている。
ロードは遅くなりプログラムも不要なメモリ・サイズを確保してしまう。

・何よりモジュール・ソースに変更があると毎回、モジュールとプログラムの
両方の二重コンパイルが必要となる。
不便そのものである。

・ILEの利点としてのプロシージャーの公開も再利用もできない。

[正しいILEの開発]

正しいILEの開発はメイン・ルーチンのみモジュールから生成して
他のロジックはサービス・プログラム(*SRVPGM)として生成してプログラムを組み立てる。

 
  RPGソース(1)---------------(モジュール)-----------+----------------->(プログラム)
               CRTRPGMOD                           ↑  CRTPGM                  
                                                    |
                                                    |
  RPGソース(2)---------------(モジュール)---(サービス・プログラム) -----+
  RPGソース(3)---------------(モジュール)---(サービス・プログラム)      |--->(他のプログラムも再利用可能)
   :                             :                  :                   :
  RPGソース(N)---------------(モジュール)---(サービス・プログラム) -----+

 

…RPGソース(2)(3) …(N)で作成したサービス・プログラムは他のプログラムからでも
再利用が可能である。

ILEの構造を正しく理解していないと開発が複雑で労力が増えてしまうだけである。
ILEはこんなに大変になるのかと感じたのであればそれは方法が誤っていると考えたほうがよい。
IBMは何も不便で大変になる方法を押しつけるようなことはしない。