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のライブラリー関数を使用することができる。