Symfoware Server アプリケーション開発ガイド(埋込みSQL編) - FUJITSU - |
目次 索引 |
第2章 アプリケーションの設計 | > 2.6 名前の一意性と有効範囲 |
ここでは、SQL埋込みCOBOLプログラムに記述するSQL文中の名前の一意性と有効範囲について説明します。
入れ子構造のSQL埋込みCOBOLプログラムに、以下の埋込みSQL文を記述する場合は、注意が必要です。
埋込み例外宣言
ホスト変数
カーソル宣言とホスト変数の関係
埋込み例外宣言で指定したGOTOの手続き名は、次の同一エラー条件が出現するまで有効となります。
埋込み例外宣言の有効範囲が、複数の入れ子プログラムにまたがる場合は、有効となるすべてのプログラム中にGOTOの手続き名を記述する必要があります。手続き名を記述してない場合は、コンパイル時にGOTO文に指定した手続き名がない旨のエラーとなります。
例
埋込み例外宣言のGOTO手続き名が、入れ子関係のプログラムSAMPLE01、SAMPLE02およびSAMPLE03で有効となる場合には、それぞれのプログラム内にGOTOの手続き名を記述します。主プログラムの埋込み例外宣言で指定したGOTOの手続き名“ERR1”(2)には、各入れ子プログラムから分岐できません。このため、各入れ子プログラム中に、主プログラムの埋込み例外宣言で指定したGOTOの手続き名“ERR1”(1)を記述します。
ホスト変数の名前は、SQL埋込みCOBOLプログラムで一意である必要があります。名前が一意でない場合は、コンパイル時でエラーになります。
このため、複数の入れ子プログラムで共通に使うホスト変数、SQLSTATEおよびSQLMSGは、大域名として一番外側のプログラムに記述する必要があります。例を以下に示します。
例
複数の入れ子プログラムで、共通に使うホスト変数をグローバル域に記述する例
カーソル宣言で使用したホスト変数が評価されるのは、OPEN文の実行時です。このため、複数の入れ子プログラムで、ホスト変数が指定された同一のカーソルをオープンする場合は、カーソル宣言に指定したホスト変数は、大域名として一番外側のプログラムに記述する必要があります。
例
カーソル宣言文を一番外側のプログラムに記述する例を以下に示します。(1) プログラム“SAMPLE01”、“SAMPLE02”で共通に使うカーソル名
(2) プログラム“SAMPLE01”、“SAMPLE02”で共通に使うホスト変数
目次 索引 |