†逆襲のOS/2†
作成開始日 2021.11.16
最終更新日 2021.11.16
DLLの検索パスはCONFIG.SYS内の「LIBPATH=…」で設定されているので、ここを書き換えれば良い。たとえば、通常のDLLは「\OS2\DLL」に収納されているが、新たに「\OS2\DLL_OLD」というディレクトリを作成し、旧版のDLLをこちらに収録し、必要に応じて「LIBPATH=C:\OS2\DLL_OLD;…」のように設定を変更すれば良い。ただし、この方法では、変更の度にシステムリブートが必要なる。
あるいは、「LIBPATH=」の先頭はカレント・ディレクトリ(.)になっていることが多いので、優先的に使用したいバージョンのDLLをカレント・ディレクトリに置いておくという方法もある。だが、使用する場所が固定されている、または「作業ディレクトリー」を設定できるアプリケーションならばともかく、どのディレクトリで使用するか判らないスクリプト類では、この方法も実用性が低い。
このような場合、「SET BEGINLIBPATH=」命令を使用すると便利。これは、CONFIG.SYS内のLIBPATH設定を変更しないまま、DLLの検索パスの先頭に、新たなパスを追加する機能。上述の例ならば;
/*** MY REXX SCRIPT ***/ Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs' Call SysLoadFuncsの要領で使用する。これにより、まず「C:\OS2\DLL_OLD」内が検索され、続いてCONFIG.SYSの「LIBPATH=」で設定されているパスが検索される。なお、「SET BEGINLIBPATH=」はコマンドライン命令であって、REXXの命令ではないので、引用符('や")で括る必要がある。'SET BEGINLIBPATH=C:\OS2\DLL_OLD;' ……
また、この設定の有効範囲はそのセッションに限定されるようだ。つまり、あるプログラムでこのコマンドを実行しても、別のプログラムには影響を与えない。これによって、プログラムごとに異なったバージョンのDLLを選択することができるようになる。