RPG

149. バインド済みのモジュールを別のライブラリーのモジュールに置き換えるには ?

前章の「148.再コンパイルをしないでモジュールを更新するには ?」で紹介したように

UPDPGM を使えばコンパイル済みのプログラム(*PGM) に

同梱されているモジュール(*MODULE) を

UPDPGM コマンドによって置き換えられることがわかった。

ここからはさらに高度な使用方法として、バインド済みのモジュールに対して

別のライブラリーにある同じ名前のライブラリーに置き換える方法を紹介しよう。

弊社としてのストーリーは前章で紹介したようにユーザー・プログラムに既にバインドされて

*PGM として作成されているプログラムに同梱されているモジュールを弊社のライブラリーにある

同じ名前のモジュールに置き換えようというものである。

例えば、今、 TESTLIB/TESTPGM というプログラムは、

 CRTPGM TESTLIB/TESTPGM MODULE(QTEMP/TESTPGM MODLIB/MYMOD)

のようにしてライブラリー MODLIB のモジュール MYMOD をバインドして作成されている。

この MYMOD を新しいライブラリー NEWLIB の MYMOD に置き換えようというものである。

単に、

 UPDPGM TESTLIB/TESTPGM MODULE(MODLIB/MYMOD)

としたのでは TESTPGM内の最新のモジュール MODLIB/TESTPGM

更新されるだけであるが、これを NEWLIB/MYMOD に置き換えるには

 UPDPGM TESTLIB/TESTPGM MODULE(NEWLIB/MYMOD) RPLLIB(MODLIB)

のように置き換えライブラリー(RPLLIB)パラメータに旧ライブラリー名を指定すれば

任意のライブラリーのモジュールに置き換えることができる。

置き換え後に

 DSPPGM TESTLIB/TESTPGM 

でプログラム TESTLIB/TESTPGM を調べてみると依然として MODLIB/MYMOD

バインドしているかのように見えるが、これは DSPPGM の情報表示が不完全なだけであって

実行してみれば NEWLIB/MYMOD が起動されていることがわかる。

これによってモジュールをバインドしてしまっているような製品であっても、すっかり裸同然であり

完全なコンバージョンが行えるようになる。