アプリケーション開発の手引き
組み込み SQL ステートメントは次の 3 つの要素からなります。
- 要素
- 正しい COBOL 構文
- 一組のキーワード
- EXEC SQL
- ステートメント・ストリング
- 任意の有効な SQL ステートメント
- ステートメント終了記号
- END-EXEC.
以下はその例です。
EXEC SQL SELECT col INTO :hostvar FROM table END-EXEC.
組み込み SQL ステートメントには、以下の規則が適用されます。
- 実行可能な SQL ステートメントは、PROCEDURE DIVISION になければなりません。
SQL ステートメントの前には、COBOL ステートメントとして段落名を付けることができます。
- SQL ステートメントは、領域 A (列 8 〜 11) または領域 B (列 12 〜 72) のどちらからも開始することができます。
- 各 SQL ステートメントは、EXEC SQL で開始して END-EXEC で終了します。各 SQL ステートメントは、修正済みソース・ファイル内の注釈として、
SQL プリコンパイラーに含まれます。
- SQL ステートメント終了記号を使用しなければならない。使用しない場合、プリコンパイラーはアプリケーション内の次の終了記号まで処理を継続します。これにより、不確定のエラーが起こる恐れがあります。
- SQL 注釈は、組み込み SQL ステートメントの一部となっている行であれはどこでも使用することができる。この注釈は、動的に実行するステートメントでは使用できません。
SQL 注釈の形式は、ダブル・ダッシュ (--) の後に 0 個以上の文字ストリングが続き、行末で終了します。
SQL 注釈を SQL ステートメントの後に置かないようにしてください。これを行うと、注釈が COBOL 言語の一部のように見えるため、コンパイル・エラーの原因となるからです。
- COBOL の注釈は、組み込み SQL ステートメント内のほとんど の場所で使用できます。例外は以下のとおりです。
- 注釈は EXEC と SQL との間では使用できない。
- 注釈は動的に実行されるステートメントでは使用できない。
- SQL ステートメントは、COBOL 言語と同じ行継続規則に従います。ただし、EXEC SQL キーワードを 2 行に分割しないでください。
- SQL ステートメントを含んだファイルの組み込みに COBOL COPY ステートメントは使用できません。
SQL ステートメントはモジュールがコンパイルされる前にプリコンパイルされます。プリコンパイラーは、COBOL COPY ステートメントを無視します。代わりに SQL INCLUDE ステートメントを使用して、これらのファイルを組み込んでください。
INCLUDE ファイルを検索する際、DB2 COBOL プリコンパイラーはまず最初にカレント・ディレクトリーを検索し、次いで DB2INCLUDE 環境変数に指定されたディレクトリーを検索します。次の例を考えてみてください。
- EXEC SQL INCLUDE payroll END-EXEC.
INCLUDE ステートメントに指定されたファイルが単引用符 (') で囲まれていない場合、上記のとおり、プリコンパイラーは最初 payroll.sqb を検索し、次に payroll.cpy、次に payroll.cbl、最後にそれがロックする各ディレクトリーを検索します。
- EXEC SQL INCLUDE 'pay/payroll.cbl' END-EXEC.
ファイル名が単引用符 (') で囲まれている場合、すでに説明したとおり、名前に拡張子は追加されません。
単引用符 (') 内のファイル名に完全パスが含まれていない場合、
DB2INCLUDE の中身によってそのファイルの検索が行われ、何らかのパスが INCLUDE ファイル名に指定されます。たとえば、DB2 (AIX 版) では、
DB2INCLUDE は '/disk2:myfiles/cobol' に設定され、プリコンパイラーは './pay/payroll.cbl'、
'/disk2/pay/payroll.cbl'、
'./myfiles/cobol/pay/payroll.cbl' の順に探索します。プリコンパイラー・メッセージには、実際にファイルが見つかったパスが表示されます。
OS/2 および Windows プラットフォームでは、上の例のスラッシュを円記号 (\) に置き換えます。
注: | DB2INCLUDE の設定は、DB2 コマンド行プロセッサーによってキャッシュされます。何らかの CLP コマンドを発行した後に DB2INCLUDE の設定を変更する場合は、
TERMINATE コマンドを入力してから、データベースに接続し直し、あとは通常どおりプリコンパイルしてください。
|
- ストリング定数を次の行に継続するには、継続行の列 7 に '-' を、また列 12 またはそれ以降にストリング区切り文字を入れなければなりません。
- SQL 算術演算子はブランクで区切らなければなりません。
- 全ラインの COBOL 注釈は、SQL ステートメント内を含め、プログラムのどこで使用してもかまいません。
- SQL ステートメント内のホスト変数の参照時に宣言されたとおりのホスト変数を使用する。
- 行末文字およびタブ文字などの空白文字の置換は、次のように行われる。
- 引用符の外 (ただし、SQL ステートメント内) では、行末文字または TAB 文字は単一スペースと置き換えられる。
- 引用符内では、COBOL プログラムに適合した形でストリングが継続されていれば、行末文字は消去されます。
TAB は修正されません。
行末および TAB に使用される実際の文字は、プラットフォームごとに異なります。たとえば、OS/2 は復帰 / 改行を行末に使用するのに対し、UNIX ベースのシステムは改行のみを使用します。
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]