SQLの動かし方

i am BESTでSQLの書き方を連載(?)しており、興味を持って呼んでいる方も多いのではないでしょうか。

とはいえ、OPM-RPG/COBOLなどによる開発やメンテナンスが主で、SQLを動かしたことが無い方も多いと思います。

i/OSでは用途や状況に応じて様々な方法でSQLを実行することができます。ユーザー・インターフェースも5250画面は当然とし、Windows(主としてODBC)、WebアプリケーションやiNaviなどのツール(主としてJDBC)などなど不足を感じることはないでしょう。

こちらではi/OSにおけるSQLの「動かし方」をいくつかご紹介します。

.

サンプルとして使用するデータベース(テーブル)はおなじみ(?)のTOKMSPです。定義は下図のようになっています。これはSQL文(CREATE TABLE)によって作成されたものではありませんし、ジャーナルもかかっていませんがSQLによる参照のみであれば問題ありません。 

DSPFMT                       レ コ ー ド 設 計 書
                                **************************
物理ファイル名   TESTLIB/TOKMSP
レコード様式名   TOKMSR                 記述    得意先マスター・レコード
 項目名       桁数   属性  BYTE 開始  終了   入出力属性      欄見出し/テキスト'記述'
----------  -------- ----  ---- ----- -----  ----------     -----------------------------
TKBANG          5      A      5     1     5   入出力         得意先   番号
TKNAKN         20      A     20     6    25   入出力         得意先   仮名
TKNAKJ         20      O     20    26    45   入出力         得意先   漢字
TKADR1         20      O     20    46    65   入出力         住所1
TKADR2         20      O     20    66    85   入出力         住所2
TKTIKU          2      A      2    86    87   入出力         地区   コード
TKPOST          6      A      6    88    93   入出力         郵便番号
TKTELE         13      A     13    94   106   入出力         電話番号
TKGURI          9  0   P      5   107   111   入出力         当月   売上高
TKNURI          9  0   P      5   112   116   入出力         当年   売上高
TKZURI          9  0   P      5   117   121   入出力         前年   売上高
TKUZAN          9  0   P      5   122   126   入出力         売掛金   残高
TKGEND          9  0   P      5   127   131   入出力         信用   限度額
TKNYUK          6  0   P      4   132   135   入出力         最終   入金日
TKSIME          1      A      1   136   136   入出力         締め日   コード
__________  ________ ____  ____ _____ _____  __________     _____________________________
                            レコード長    136

 

ではこのテーブルをSQLから読み込んでみましょう。

1. 5250画面から実行

もっともお手軽な方法です。なお、PCOMMのコードページは939または1399、ジョブのCCSIDは5035または1399とします。TOKMSPのデータもこれらのCCSIDで記録されているとします。

1-1. 57xx-ST1(SQL開発キット)

ライセンス・プログラム、57xx-ST1(DB2 QUERY MGR AND SQL DEVKIT)がインストールされていれば、STRSQLコマンドで「SQL ステートメントの入力」画面が表示され、任意のSQLステートメントを実行することができます。

例えばTOKMSPから得意先番号(フィールド名「tkbang」)が「02010」のデータを検索するには次のように入力し、実行キーを押します。

> select * from testlib/tokmsp where tkbang = '02010'

するとRUNQRYのような画面が表示されます。

                                                           データの表示

  行の位置指定 . . . . . . .
 ....+....1....+....2....+....3....+....4....+....5....+....6....+....7.
  得意先    得意先                得意先                住所1
  番号      仮名                  漢字
  02010    アイカワ センタ-              相川センター       東京都江東区
 ********  データの終わり  ********

対象のレコードが選択されていることがわかります。実行キーで前の画面に戻ります。

1-2. qshell

qshell(i/OSのオプション30)からdb2コマンドを使用してSQLを実行することができます。5250コマンドラインから、qshコマンドを実行し、「QSH コマンド入力」画面を出します。

前の例と同じSQLを実行するには次のように入力し、実行キーを押します。

> db2 "select * from testlib.tokmsp where tkbang='02010'"

ライブラリーとデータベースの区切り文字(.)など微妙に異なりますね。結果は画面がスクロールして表示されます。

   TKBANG  TKNAKN               TKNAKJ               TKADR1               TKADR2
                  TKTIKU  TKPOST  TKTELE        TKGURI      TKNURI      TKZURI
       TKUZAN      TKGEND      TKNYUK   TKSIME
   ------- -------------------- -------------------- -------------------- ------
   -------------- ------- ------- ------------- ----------- ----------- --------
   --- ----------- ----------- -------- -------
   02010   アイカワ センタ-             相川センター      東京都江東区      新木
    場1?4     23      136     03-512-9478       705200     4029900     618
   3600     2000000     2000000   880501  1

     1 RECORD(S) SELECTED.

 ===>

2. Windowsから実行

2-1. iNavi

Access for WindowsがPCにインストールされていることが前提です。スタート → プログラム(P) → IBM System i Access for Windows → System i ナビゲーター でiNaviを起動します。

下図のように、①で対象のSystem i を選択、②でデータベースを選択、③でSQLスクリプトを起動します。

「SQLスクリプトの実行」画面が表示されたら、④でSQL文を入力し、⑤をクリックして「全てを実行」すると、⑥に結果が表形式で表示されます。

このスクリプトは保管しておいて後から再実行することもできます。便利ですね。

2-2. MS-Query

Microsoft Excelなどの製品にはMicrosoft Query(以下MS-Query)が付属します。MS-Queryの詳細はマイクロソフトのサイトをご覧ください。

通常MS-QueryはExcelなどから呼び出されますが、直接起動することも可能です。パスはインストールした環境やOfficeのバージョンにより異なりますが、例えば手元の環境では、スタート → ファイル名を指定して実行(R...) で「名前(O):」に「"D:\Program Files\Microsoft Office\Office10\MSQRY32.EXE"」(パスに空白があるのでダブル・クオーテーションで囲むこと)と入力し、OKをクリックすると起動します。

メニュー・バーから ファイル(F) → SQLの実行(E)... を選択します。

「SQLの実行」ウインドゥが開くので、データソース(T)...をクリックします。

「<新規データソース>」が選択されていることを確認し、OKをクリックします。

1に適当な名前(この例では「iOS」)を入力し、2に「iSeries Access ODBC Driver」(Access for Windowsのバージョンによって名前が異なる)を選択して3の接続をクリックします。

いろいろとオプションがありますが、とりあえずそのままOKをクリックします。

OKをクリックするとデータソースの選択画面に戻ります。

新しいデータソースが選択されているのを確認し、OKをクリックします。

「SQLの実行」ウインドゥに戻るので、SQL文を入力して実行(X)をクリックします。

MS-Queryに結果が戻されます。

 

.

 いろいろな方法で簡単にSQLが実行できることがお分かりいただけたと思います。SQLを使用したプログラムもご紹介したいと思いますが、そちらはいずれまた...

 


 

  ここに書かれている内容は私の所属する会社、組織とは関係ありません。 内容を誰かが保証する物ではありません。

iForum: SQLの動かし方
http://www.iforum.ne.jp/article.php/20090722182019989