前章の「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 が起動されていることがわかる。
これによってモジュールをバインドしてしまっているような製品であっても、すっかり裸同然であり
完全なコンバージョンが行えるようになる。