QUERY/400の契約のない、つまりQUERYが導入されていないLPARやIBM iで
QUERYが実行できるかというと
実行できる。
が答えである。
RUNQRYは QSYSのコマンドでありライセンスの制約はない。
したがって *QRYDFNオブジェクトをQUERYが導入されていないLPAR区画や
IBM iであっても実行することはできる。
ただしWRKQRYコマンドはライブラリー QQRYLIB のオブジェクトであるので
実行することはできない。
要はQUERY/400の契約ライセンスは開発/保守用のライセンスであるので
開発のない実行環境であれば問題なく実行することができる。
同様にして SQLについて考えてみよう。
一般に SQLの契約というのは対話式SQLのことを意味している。
対話式SQL(STRSQL)の契約がないとSQLが動作しないと思っているIBMユーザーが
多いようだが対話式SQLというのはWRKQRYと同じで
SQLの開発のためのツールである。
SQLはすべてのIBM iで動作することができる。
SQLが動作しない、実行できないIBM iはない。
SQLはAPI: QSQROUTE というAPIによってすべて動作するように
できていてこれもすべてのIBM iに導入されているので
すべてのIBM iで SQLは動作できるということになる。
SQLを使っているのは
・ODBCドライバー
・ストアド・プロシージャー
・RUNSQLSTM : SQL ステートメントの実行
・RUNSQLコマンド: SQLステートメントの実行
・RPG/COBOL組込みSQLプログラム
などがある。
それでは対話式SQLとは何のためにあるのだろうか?
対話式SQLとはSQLを適用業務として利用するためのものではなく
開発者がいろいろなSQLステートメントを実行して試すところである。
つまり
対話式SQLとはSQLの学習用の場だけである。
対話式SQLを適用業務に組み込んで実行するという場面はあり得ない。
対話式SQLの導入がなくても今ではRUNSQLコマンドで
十分テストはできる。
IBM提供のRUNSQLコマンドではSELECT文は実行できないが
このサイトで公開しているTOOLSのRUNSQLコマンドであれば
SELECT文も実行することができる。
モデルの大きなIBM iで対話式SQLを導入しようとすると
結構なライセンス費用が発生する。
コスト削減やまた自社には対話式SQLは導入していないので
SQLは使えないのだろうとあきらめていた御仁は今一度
SQLの利用を考えてみてはどうだろうか?
SQL文をRPG/COBOLに組み込むことができるとなれば応用範囲が
広がるはずである。
自分の会社ではSQLは使えないとあきらめていた方、
目からウロコは落ちましたか?