「26. カンタンにできる遠隔SQLの使用方法」で遠隔SQLもカンタンに使用できることが
おわかり頂けたと思う。
それではRPG、COBOLやC/400にSQL文を埋め込んだSQLパッケージの開発者はこれも
カンタンと考えては早計となる。
SQLパッケージの場合は少々考慮が必要となるので、ここで解説する。
例えば、RPGの場合であれば、もう一度コンパイルのパラメーターを思い出して欲しい。
次はあるSQLを梱包したコンパイルの指示画面である。
ここで「リレーショナル・データベース」パラメータの省略値は「*LOCAL」
となっていることに
注目して頂きたい。
*LOCAL
では遠隔地のRDBには接続することはできない。
遠隔地のRDBに接続できるようにするには次の2つの方法がある。
1.の方法は極めてカンタンである。これによってRPG のSQL文の内部に CONNECT
文を
埋め込んでおけば有効となりRPG内部で遠隔地に接続することができる。
しかしこの方法では予め遠隔RDBの名前がわかってかなければならない。
複数の接続先への対応やソフトウェア製品としてSQLパッケージを配布したいときはこの方法
では無理である。
ソースを配布して客先で再コンパイルしてくださいと言うわけにはいかないであろう。
2.の方法がその解決案である。
もう一度、CRTSQLxx
コマンドの続きのパラメータを見てみよう。
パッケージ/ライブラリーのパラメータに注目して欲しい。
このパラメータが *PGM/*PGMLIB
となっているのは
「このSQLPKG があればここから情報を取得します」
という意味である。
つまり CRTSQLxxx
で生成された *PGM
としてのオブジェクト以外に *SQLPKG
という
オブジェクトも参照できるという意味である。
CRTSQLPKG
コマンドによって CRTSQLxxx
によって作成された *PGM
から *SQLPKG
を生成し、生成段階では任意の RDB を指定することができるのである。
次の画面はその様子である。
つまり *PGM
としてのオブジェクトさえ配布しておけば配布先のユーザーではオブジェクト
*PGM
からRDBを指定した *SQLPKG
を生成してもらえばソースを配布しなくても
指定した任意の遠隔RDB に接続できるようになる。
Panel-Worker Chicago Ver5.1 の「遠隔地RDBの登録」ではこのように内部で
CRTSQLPKG
コマンドを実行して *SQLPKG
を生成している。
このように通常は CRTSQLxxx
の *PGM
の単独で動作するものも *SQLPKG
と
組み合わせることによって動的な機能拡張を行うことができる。