DFU, Query, SQL

63. QUERYが導入されていない環境でもQUERYは実行できるのか?

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は使えないとあきらめていた方、
目からウロコは落ちましたか?