• 検索結果がありません。

分散リレーショナル・データベース・プログラムの作成

ドキュメント内 rbal1pdf.ps (ページ 151-159)

SQL を使用してプログラムを作成するときは、ホスト・プログラムに SQL ステートメントを組み込むこ とができます。

ホスト・プログラム とは、次に挙げるホスト言語 のいずれか 1 つで書かれ、SQL ステートメントが含ま れているプログラムのことです。すなわち、PL/I、PRPQ、ILE C、COBOL/400、ILE COBOL、FORTRAN/

400、RPG/400、または ILE RPG プログラミング言語です。ホスト・プログラムの中では、ホスト変数と 呼ばれる変数を使用します。これらは、SQL ステートメントの中で使用され、ホスト・プログラムに対し て識別可能な変数のことです。 RPG では、フィールド名 と呼ばれています。これらは

FORTRAN、PL/I、および C では変数 といい、COBOL ではデータ項目 と呼ばれます。

分散 DB2 for i プログラムは、分散ではない DB2 for i プログラムの場合と似た方法でコーディングする ことができます。 ホスト言語を使用して、SQL ステートメントをホスト変数とともに組み込みます。ま た、分散でない DB2 for i プログラムの場合と同じように、分散 DB2 for i プログラムを特定のプロセス で作成します。

ただし、分散 DB2 for i プログラムでは、データにアクセスするために SQL パッケージもサーバー上で 作成しなければなりません。

このトピック・コレクションでは、分散 DB2 for i プログラムの場合の違いを概説し、上記のプロセスの ステップを説明します。

SQL ステートメントを含むプログラムのプリコンパイル:

組み込み SQL ステートメントが入っているアプリケーション・プログラムは、その実行に先立って、プリ コンパイルとコンパイルが必要です。 そのようなプログラムのプリコンパイルは、SQL コンパイラーによ って行われます。

SQL プリコンパイラーは、アプリケーション・プログラム・ソースの各ステートメントを走査し、以下の ことを行います。

v SQL ステートメント、およびホスト変数名の定義を検索する

v 各 SQL ステートメントが有効で、構文エラーがないかどうかを検査する v データベースの中の記述を使用して、SQL ステートメントの妥当性検査をする v 各 SQL ステートメントをホスト言語でのコンパイルができるように準備する v 各プリコンパイル済み SQL ステートメントについての情報を作成する

プリコンパイラーへの主要な入力は、アプリケーション・プログラミング・ステートメントと組み込み SQL ステートメントです。 SQL プリコンパイラーでは、ホスト言語ステートメントが構文上正しいこと を前提としています。ホスト言語ステートメントが構文上正しくない場合には、プリコンパイラーは SQL ステートメントおよびホスト変数宣言を正しく識別できないことがあります。

SQL プリコンパイル処理では、リストと一時ソース・ファイル・メンバーが作られます。また、プリコン パイラー・コマンドの OPTION および RDB パラメーターに指定される値によっては、 SQL パッケージ が作られます。

関連資料:

145ページの『アプリケーション・プログラムのコンパイル』

DB2 for i プリコンパイラーは、プログラムのプリコンパイルが正常に終了すると、 *NOGEN プリコンパ イラー・オプションが指定されていなければ、自動的にホスト言語コンパイラーを呼びます。

リスト作成:

出力リストは、 CRTSQLxxx コマンドの PRTFILE パラメーターで指定された印刷装置ファイルに送られ ます。

以下の項目が印刷装置ファイルに書き込まれます。

v プリコンパイラー・オプション

これは、CRTSQLxxx コマンドで指定されたすべてのオプション、およびソース・メンバーが最後に変更 された日付のリストです。

v プリコンパイラー・ソース

この出力が作成されるのは、非 ILE プリコンパイラーに *SOURCE オプションが、または ILE プリコ ンパイラーに OUTPUT(*PRINT) パラメーターが使用されている場合です。 各プリコンパイラー・ソー ス・ステートメントが、プリコンパイラーによって割り当てられたそのレコード番号、原始ステートメ ント入力ユーティリティー (SEU) の使用時に表示される順序番号 (SEQNBR)、およびレコードが最後に 変更された日付とともに示されます。

v プリコンパイラー相互参照

この出力が作成されるのは、OPTION パラメーターに *XREF が指定された場合です。ホスト変数また は SQL エンティティー (テーブルおよび列など) の名前、その名前が定義されているレコード番号、そ の名前が定義されていること、および名前が現れるレコード番号が示されます。

v プリコンパイラー診断リスト

この出力は診断メッセージを提供し、エラー状態のステートメントのプリコンパイラー・レコード番号 を示します。

一時ソース・ファイル・メンバー:

プリコンパイラーが処理したソース・ステートメントは、 QTEMP ライブラリーの QSQLTEMP

(CRTSQLRPGI を使用して作成されたプログラムでは QTEMP ライブラリーの QSQLTEMP1) に書き込まれ ます。

プリコンパイラーによって変更されたソース・コードでは、SQL ステートメントは、 SQL インターフェ ース・モジュール QSQROUTE、QSQLOPEN、QSQLCLSE、および QSQLCMIT に対する注記および呼び 出しに変換されています。一時ソース・ファイル・メンバーの名前は、 CRTSQLxxx の PGM パラメータ ーに指定されている名前と同じです。このメンバーは、コンパイラーに対する入力として使用される前には 変更できません。

コンパイルを後にしたい場合には、 QSQLTEMP または QSQLTEMP1 をプリコンパイルの後で永続ライ ブラリーに移すことができます。一時ソース・ファイル・メンバーのレコードを変更する場合には、コンパ イルを後で試みると、正常に行われません。

SQL パッケージの作成:

CRTSQLxxx コマンドのコンパイル時に、プリコンパイル・プロセスの一部として、 SQL パッケージと呼 ばれるオブジェクトを作成することができます。

関連概念:

149ページの『SQL パッケージの処理』

SQL パッケージとは、特に分散リレーショナル・データベース・アプリケーションによって使用される SQL オブジェクトです。これには、サーバー上のデータにアクセスする各 SQL ステートメントの制御構 造が含まれます。

関連資料:

145ページの『アプリケーション・プログラムのコンパイル』

DB2 for i プリコンパイラーは、プログラムのプリコンパイルが正常に終了すると、 *NOGEN プリコンパ イラー・オプションが指定されていなければ、自動的にホスト言語コンパイラーを呼びます。

145ページの『アプリケーションのバインド』

アプリケーション・プログラムで実行できるようにするには、その前にプログラムと参照されるテーブルお よびビューとの間の関係が確立されていなければなりません。この処理がバインドと呼ばれるものです。

プリコンパイラー・コマンド:

IBM DB2 Query Manager and SQL Development Kit for i ライセンス・プログラムには、各ホスト言語に 対して 1 つずつ、7 つのプリコンパイラーがあります。

ホスト言語 コマンド

PL/I PRPQ CRTSQLPLI

ILE C 言語 CRTSQLCI

COBOL/400 言語 CRTSQLCBL

ホスト言語 コマンド

ILE COBOL 言語 CRTSQLCBLI

FORTRAN/400 言語 CRTSQLFTN

RPG III (RPG/400 言語の一部) CRTSQLRPG

ILE RPG 言語 CRTSQLRPGI

各言語ごとに別のコマンドが存在しているので、各言語はその言語だけに適用されるパラメーターを持つこ とができます。たとえば、オプション *APOST および *QUOTE は COBOL に固有のものです。これらは 他の言語用のコマンドには含まれていません。プリコンパイラーは、 SQL プリコンパイラー・コマンドの 1 つが呼び出すときに指定するパラメーターによって制御されます。これらのパラメーターは、入力の処理 方法および出力の提示方法を指定します。

プログラムのプリコンパイルには、プログラム・ソース・ステートメントを含んでいるメンバーの名前を CRTSQLxxx コマンドの PGM パラメーター (非 ILE プリコンパイラーの場合)、または OBJ パラメータ ー (ILE プリコンパイラーの場合) として指定する以外は、何も指定する必要がありません。SQL は、す べてのプリコンパイラー・パラメーターに対してデフォルト値を割り当てます (ただし、値を明示的に指定 すれば、デフォルト値を指定変更できます)。

以下のリストで、分散リレーショナル・データベースをサポートするために使用される、すべての CRTSQLxxx コマンドに共通なパラメーターを簡単に説明します。

RDB

SQL パッケージ・オプションを作成するリレーショナル・データベースの名前を指定します。 *NONE を指定すると、プログラムまたはモジュールは非分散オブジェクトになり、 構造化照会言語パッケー

ジの作成 (CRTSQLPKG) コマンドは使用できなくなります。リレーショナル・データベースの名前は、

ローカル・データベースの名前とすることができます。

RDBCNNMTH

CONNECT ステートメントの働き方のタイプ、すなわち、リモート作業単位 (RUW) または分散作業 単位 (DUW) の別を指定します。

SQLPKG

SQL パッケージの名前とライブラリーを指定します。

USER

会話の開始時にリモート・システムに送られるユーザー名を指定します。このパラメーターは、会話が プリコンパイル・プロセスの一部として開始される場合だけ使用します。

PASSWORD

会話を開始するときに、リモート・システムで使用されるパスワードを指定します。このパラメーター は、会話がプリコンパイル・プロセスの一部として開始される場合だけ使用します。

REPLACE

プリコンパイルの一部として作成されるオブジェクトが、既存のオブジェクトを置き換えられるように する場合に指定します。

以下の例では、INVENT という名前の COBOL プログラムを作成し、それを SPIFFY という名前のライブ ラリーに保管します。 SQL 命名規則が選択され、指定されたテーブルから選択された行は、すべてが回復 単位の終了までロックされます。プログラムと同じ名前の SQL パッケージが、 KC000 という名前のリモ ート・リレーショナル・データベースに作成されます。

CRTSQLCBL PGM(SPIFFY/INVENT) OPTION(*SRC *XREF *SQL) COMMIT(*ALL) RDB(KC000)

ドキュメント内 rbal1pdf.ps (ページ 151-159)