PGM の実行時にはライブラリー・リストによってオブジェクトが検索されることは
iSeries400の開発者であれば、よく知っていると思うが、これと同じようにCRTPGM
のときに *SRVPGM
などのサービス・プログラム(DLL)
を検索してバインドするための
「PATH」が バインド・ディレクトリー である。
プログラムの作成コマンド CRTPGM
において
CRTPGM MYPGM BNDSRVPGM(ASNET.COM/RPGENGINE3)
のようにして BNDSRVPGM
パラメーターに直接、*SRVPGM
を指定しても良いが
バインドする *SRVPGM
の数が増えてくると、CRTPGM
の都度に
どのサービス・プログラムをバインドすればよいかが毎度、検討することが面倒である。
このようなときにバインド・ディレクトリーに必要な *SRVPGM
を登録しておけば
CRTPGM では、ひとつのバインド・ディレクトリー (*BNDDIR)
を指定するだけで
簡単に CRTPGM を実行することができる。
CRTBNRDIR MYLIB/MYDIR AUT(*ALL)
でバインド・ディレクトリー MYDIR
を作成して
ADDBNDDIRE MYLIB/MYDIR OBJ(ASNET.COM/RPGENGINE3))
のようにして *SRVPGM
をバインド・ディレクトリーに追加する。
CRTPGM MYPGM BNDDIR(MYLIB/MYDIR)
のようにしてプログラムを作成する。
例えばC/400の ライブラリー関数は QSYS/QC2LE
という *SRVPGM
に登録されているので
このバインド・ディレクトリーを指定してコンパイルすることによってRPG からでも
C/400のライブラリー関数を使用することができる。