RPG

95. モジュールかサービス・プログラムか?

ILEプログラム作成(CRTPGM) でモジュール(*MODULE) をバインドして作成するのと
サービス・プログラム(*SRVPGM) をバインドして作成するのとではどちらを選択すべきなのであろうか?

モジュール(*MODULE) をバインドする方法では

  1. CRTRPGMOD で *MODULE を作成
  2. CRTPGM で *MODULE をバインドして *PGM を作成

これに対してサービス・プログラム(*SRVPGM) を作成してバインドするのは

  1. CRTRPGMOD で *MODULE を作成
  2. CRTSRVPGM で *MODULE から *SRVPGM を作成
  3. CRTPGM で *SRVPGM をバインドして *PGMを作成

のように手間が少しかかる。

しかし *MODULE が変更された場合は *PGM を再作成しなければならないが*SRVPGM
変更されたときは *PGM を再作成する必要はない。
元々モジュール化する目的はオブジェクト指向に基づいてオブジェクトの再利用にある。
モジュールの個数が増えてきたときには、モジュールを変更しようとすると、どの *PGM
再コンパイルしなければならないのかを調べる必要があり、これは管理上大変なことになるのは
容易に想像がつく。
VC++ のコンパイラーでも同じ構造を持っているが*SRVPGM とは Windows の世界でいう
DLL に相当する。
DLL が変更されたからといって その DLLを使用している EXE を再作成する必要はない。
DLL はそのような目的で使用されているのである。

さらに *SRVPGM では実行時に元の *MODULE が存在している必要はない。
大規模開発だけなく拡張性に富んだ開発を指向するのであればサービス・プログラム
(*SRVPGM) の使用を強くお勧めする。