データベースカーソルのパフォーマンスを最大にするような TARGETDB 指令を指定したデータベースで COBOL カーソルが正しく一致するよう OpenESQL に指示します。BEHAVIOR は複数のプリミティブな指令を作成し、使用する DBMS によってはプリミティブな各指令のデフォルト値を関連付けます。また、プリミティブな指令のデフォルト設定を上書きすることもできます。
注:BEHAVIOR 指令を使用するには、最初に SQL 定義で TARGETDB を指定する必要があります。
構文:
BEHAVIOR={ANSI | MAINFRAME} [primitivedirective [value]]...
パラメタ:
ANSI |
OpenESQL が ANSI 標準のように動作し、アクセススピードが向上します。 |
MAINFRAME |
OpenESQL がメインフレーム上であるかのように動作し、アクセススピードが向上します。 |
primitivedirective |
BEHAVIOR を微調整するオプションの指令。 |
次の表に、組み合わせによるデフォルトのプリミティブな指令を示します。
SQL(TARGETDB=dbtarget BEHAVIOR=MAINFRAME) |
SQL(TARGETDB=dbtarget BEHAVIOR=ANSI) |
SQL(TARGETDB=dbtarget |
SQL(TARGETDB=MSSQLSERVER BEHAVIOR=MAINFRAME) |
SQL(TARGETDB=MSSQLSERVER BEHAVIOR=ANSI) |
SQL(TARGETDB=MSSQLSERVER) |
dbtarget は、MS SQL Server を除くデータベースターゲットです。これらのデフォルト設定を使用する場合は、他のプリミティブな指令は指定しません。
AUTOFETCH |
AUTOFETCH フラグをオンにします。 |
DEF_CURSOR=RO |
不定 COBOL カーソルは、読み取り専用と仮定されます。 |
ISOLATION=CR |
分離レベルは、コミット読み取りです。 |
PF_RO_CURSOR=8 |
読み取り専用 COBOL カーソルが 1 回の読み取りで 8 レコードを、事前取り込みします。 |
PF_UPD_CURSOR=8 |
更新可能 COBOL カーソルが 1 回の読み取りで 8 レコードを、事前取り込みします。 |
RO_CURSOR=FORWARD |
読み取り専用 COBOL カーソルは forward のみです。 |
UPD_CONCURRENCY=LOCK |
更新可能 COBOL カーソルの並行性は lock です。 |
UPD_CURSOR=KEYSET |
更新可能 COBOL カーソルは keyset データベースカーソルです。 |
>> 0-1: SQL(TARGETDB=dbtarget BEHAVIOR=MAINFRAME) のデフォルト設定
AUTOFETCH |
AUTOFETCH フラグをオフ (NOAUTOFETCH) にします。 |
DEF_CURSOR=UPD |
不定 COBOL カーソルは、更新可能と仮定されます。 |
ISOLATION=CR |
分離レベルは、コミット読み取りです。 |
PF_RO_CURSOR=8 |
読み取り専用 COBOL カーソルが 1 回の読み取りで 8 レコードを、事前取り込みします。 |
PF_UPD_CURSOR=8 |
更新可能 COBOL カーソルが 1 回の読み取りで 8 レコードを、事前取り込みします。 |
RO_CURSOR=FORWARD |
読み取り専用 COBOL カーソルは forward のみです。 |
UPD_CONCURRENCY=LOCK |
更新可能 COBOL カーソルの並行性は lock です。 |
UPD_CURSOR=KEYSET |
更新可能 COBOL カーソルは keyset データベースカーソルです。 |
>> 0-2: SQL(TARGETDB=dbtarget BEHAVIOR=ANSI) のデフォルト設定
NOAUTOFETCH |
AUTOFETCH フラグをオフにします。 |
DEF_CURSOR=UPD |
不定 COBOL カーソルは、更新可能と仮定されます。 |
ISOLATION=CR |
分離レベルは、コミット読み取りです。 |
PF_RO_CURSOR=1 |
読み取り専用 COBOL カーソルが 1 回の読み取りで 1 レコードを、事前取り込みします。 |
PF_UPD_CURSOR=1 |
更新可能 COBOL カーソルが 1 回の読み取りで 1 レコードを、事前取り込みします。 |
RO_CURSOR=FORWARD |
読み取り専用 COBOL カーソルは forward のみです。 |
UPD_CONCURRENCY=LOCK |
更新可能 COBOL カーソルの並行性は lock です。 |
UPD_CURSOR=KEYSET |
更新可能 COBOL カーソルは keyset データベースカーソルです。 |
>> 0-3: SQL(TARGETDB=dbtarget) のデフォルト設定 (BEHAVIOR 指令の指定なし)
AUTOFETCH |
AUTOFETCH フラグをオンにします。 |
DEF_CURSOR=RO |
不定 COBOL カーソルは、読み取り専用と仮定されます。 |
ISOLATION=CR |
分離レベルは、コミット読み取りです。 |
PF_RO_CURSOR=1 |
読み取り専用 COBOL カーソルが 1 回の読み取りで 1 レコードを、事前取り込みします。 |
PF_UPD_CURSOR=8 |
更新可能 COBOL カーソルが 1 回の読み取りで 8 レコードを、事前取り込みします。 |
RO_CURSOR=IC_FH |
読み取り専用 COBOL カーソルは independent-connection fire-hose データベースカーソルです。 |
UPD_CONCURRENCY=LOCK |
更新可能 COBOL カーソルの並行性は lock です。 |
UPD_CURSOR=DYNAMIC |
更新可能 COBOL カーソルは dynamic データベースカーソルです。 |
>> 0-4:SQL(TARGETDB=MSSQLSERVER BEHAVIOR=MAINFRAME) のデフォルト設定
AUTOFETCH |
AUTOFETCH フラグをオンにします。 |
DEF_CURSOR=UPD |
不定 COBOL カーソルは、更新可能と仮定されます。 |
ISOLATION=CR |
分離レベルは、コミット読み取りです。 |
PF_RO_CURSOR=1 |
読み取り専用 COBOL カーソルが 1 回の読み取りで 1 レコードを、事前取り込みします。 |
PF_UPD_CURSOR=8 |
更新可能 COBOL カーソルが 1 回の読み取りで 8 レコードを、事前取り込みします。 |
RO_CURSOR=IC_FH |
読み取り専用 COBOL カーソルは independent-connection fire-hose データベースカーソルです。 |
UPD_CONCURRENCY=LOCK |
更新可能 COBOL カーソルの並行性は lock です。 |
UPD_CURSOR=DYNAMIC |
更新可能 COBOL カーソルは dynamic データベースカーソルです。 |
>> 0-5: SQL(TARGETDB=MSSQLSERVER BEHAVIOR=ANSI) のデフォルト設定
NOAUTOFETCH |
AUTOFETCH フラグをオフにします。 |
DEF_CURSOR=UPD |
不定 COBOL カーソルは、更新可能と仮定されます。 |
ISOLATION=CR |
分離レベルは、コミット読み取りです。 |
PF_RO_CURSOR=1 |
読み取り専用 COBOL カーソルが 1 回の読み取りで 1 レコードを、事前取り込みします。 |
PF_UPD_CURSOR=1 |
更新可能 COBOL カーソルが 1 回の読み取りで 1 レコードを、事前取り込みします。 |
RO_CURSOR=DYNAMIC |
読み取り専用 COBOL カーソルは dynamic データベースカーソルです。 |
UPD_CONCURRENCY=LOCK |
更新可能 COBOL カーソルの並行性は lock です。 |
UPD_CURSOR=DYNAMIC |
更新可能 COBOL カーソルは dynamic データベースカーソルです。 |
>> 0-6: SQL(TARGETDB=MSSQLSERVER) のデフォルト設定 (BEHAVIOR 指令の指定なし)
プリミティブな指令に代替値を使用してデフォルト設定を上書きし、BEHAVIOR 指令を微調整できます。
COBOL カーソルの移行に BEHAVIOR を使用する方法の詳細は、前述の『COBOL プログラムの移行方法』の節を参照してください。
これらの指令は、ターゲットデータベースセットで BEHAVIOR 指令 を指定した場合のみ動作します。これらは、BEHAVIOR のデフォルト設定を上書きしたい場合のみ指定します。次に使用例を示します。
SQL(TARGETDB=INFORMIX BEHAVIOR=MAINFRAME DEF_CURSOR=UPD)
このカーソル指令は、不定 COBOL カーソルのデフォルトカーソルタイプを指定します。読み取り専用または更新可能のどちらかです。この指令は、DECLARE CURSOR 文で FOR READONLY 句と FOR UPDATE OF 句のどちらも指定されていない場合に使用します。
DEF_CURSOR={RO | UPD}
- RO は、読み取り専用です。
- UPD は、更新可能です。
- 通常、メインフレーム上のデフォルトは RO です。
- ANSI SQL のデフォルトは UPD です。ただし、元の開発者が RO と仮定している場合は、UPD はパフォーマンスに悪影響を与えます。
1 つのクライアント要求をもつ DBMS から 1 回に複数の読み取り専用レコードを、事前取り込みする指令です。
PF_RO_CURSOR={numberofrows | buffersizeK | buffersizeB}
-
numberofrows は、取り込む行数です。
-
buffersizeK は、バッファサイズを KB で指定します。
-
buffersizeB は、バッファサイズをバイトで指定します。
- RO_CURSOR で FORWARD または IC_FH を選択すると、この指令は動作しません。
1 つのクライアント要求をもつ DBMS から 1 回に複数の更新可能レコードを、事前取り込みする指令です。
PF_UPD_CURSOR={numberofrows | buffersizeK | buffersizeB}
-
numberofrows は、取り込む行数です。
-
buffersizeK は、バッファサイズを KB で指定します。
-
buffersizeB は、バッファサイズをバイトで指定します。
- UPD_CURSOR で FORWARD を選択すると、この指令は動作しません。
この指令は、読み取り専用 COBOL カーソルのデータベースカーソルタイプを決定します。
RO_CURSOR={SCROLL | FORWARD | DYNAMIC | KEYSET | STATIC | FF | IC_FH}
- SCROLL、FORWARD、DYNAMIC、および KEYSET は、標準 ODBC タイプです。
- FF (fast forward) と IC_FH (independent connection fire hose) は、MS SQL Server 固有のカーソルです。
- MS SQL Server では、FORWARD と IC_FH を選択すると、事前取り込みしません。
- その名前が示すように IC_FH カーソルは、MS SQL Server に独自の独立接続をもちます。このため、これらのカーソルは、分離レベルに敏感で、アプリケーションプログラムで以前のデータアクセスのプロトコルをロックします。
この指令は、更新可能 COBOL カーソルの並行性レベルを選択します。
UPD_CONCURRENCY={LOCK | OPTIMISTIC | OPTCC | OPTCCVAL}
LOCK、OPTIMISTIC、OPTCC、および OPTCCVAL は、標準 ODBC タイプです。
この指令は、更新可能 COBOL カーソルのデータベースカーソルタイプを決定します。
UPD_CURSOR={SCROLL | FORWARD | DYNAMIC | KEYSET | STATIC}
- SCROLL、FORWARD、DYNAMIC、KEYSET、および STATIC は、標準 ODBC タイプです。
- FORWARD を選択すると、事前取り込みしません。