プライマリ・コンテンツに移動
Pro*C/C++プログラマーズ・ガイド
12c リリース1(12.1)
B71397-03
目次へ移動
目次
索引へ移動
索引

前
次

プリコンパイラ・オプションの使用方法について

この項は、プリコンパイラ・オプションを簡単に参照できるように構成されています。プリコンパイラ・オプションをアルファベット順に並べ、オプションごとに用途、構文およびデフォルト値を示しています。さらに「使用上の注意」で、オプションについて説明します。

AUTO_CONNECT

用途

CLUSTER$アカウントへの自動接続を可能にします。

構文

AUTO_CONNECT={YES | NO}

デフォルト

NO

使用上の注意

コマンドラインまたは構成ファイルからのみ入力できます。

AUTO_CONNECT=YESで、最初の実行SQL文を処理するときにアプリケーションがまだデータベースに接続されていない場合、次のユーザーIDを使用して接続が試行されます。

CLUSTER$username

usernameは現行のオペレーティング・システムのユーザー名またはタスク名、CLUSTER$usernameは有効なOracleユーザーIDです。

AUTO_CONNECT=NOの場合、Oracleに接続するにはプログラムでCONNECT文を使用する必要があります。

CHAR_MAP

用途

char型またはchar[n]型のCホスト変数およびそれらに対するポインタのSQLへのデフォルトのマッピングを指定します。

構文

CHAR_MAP={VARCHAR2 | CHARZ | STRING | CHARF}

デフォルト

CHARZ

使用上の注意

リリース8.0より前のリリースでは、SQL DECLARE文を使用してCHARなどのcharまたはchar[n]ホスト変数を宣言する必要がありました。外部データ型VARCHAR2およびCHARZが、Oracle7のデフォルト文字マッピングでした。

関連項目:

CINCR

用途

データベースに対してオープンされる物理接続数の次の増分をアプリケーションで設定できるようにします。

構文

CINCR = 範囲は1から(CMAX-CMIN)。

デフォルト

1

使用上の注意

最初は、CMINにより指定されたとおりに物理接続がすべてサーバーに対してオープンされます。それ以降は、必要な場合にのみ物理接続がオープンされます。パフォーマンスを最適にするには、CMINを、アプリケーションによる実行が計画または予想される同時実行文の合計数に設定する必要があります。デフォルト値は2に設定されます。

CLOSE_ON_COMMIT

用途

WITH HOLD句なしで宣言されたカーソルを、コミット時にすべてクローズするかどうかを指定します。

構文

CLOSE_ON_COMMIT={YES | NO}

デフォルト

NO

使用上の注意

コマンドラインまたは構成ファイルからのみ入力できます。

このオプションは、DECLARE CURSOR文でWITH HOLD句を使用せずに宣言されたカーソルがある場合にのみ有効です(WITH HOLD句が指定されていると、このオプションも、MODEオプションに対応するそれまでの動作も無効になります)。CLOSE_ON_COMMITより高いレベルでMODEが指定されていると、MODEが優先されます。たとえば、デフォルトはMODE=ORACLEおよびCLOSE_ON_COMMIT=NOです。コマンドラインでMODE=ANSIと指定した場合は、WITH HOLD句を使用せずに宣言されているカーソルはすべて、コミット時にクローズされます。

CLOSE_ON_COMMIT=NO (MODE=ORACLEの場合)の場合、COMMITまたはROLLBACKを発行しても、クローズされるのはFOR UPDATE句を使用して宣言されたカーソルまたはCURRENT OF句で参照されるカーソルのみです。その他のカーソルはCOMMITまたはROLLBACK文による影響を受けず、オープンされている場合はオープンされたままです。ただし、CLOSE_ON_COMMIT=YES (MODE=ANSIの場合)のときにCOMMITまたはROLLBACKを発行すると、すべてのカーソルがクローズします。

関連項目:

CMAX

用途

データベースに対してオープンできる物理接続の最大数を指定します。

構文

CINCR = 範囲は1から65535

デフォルト

100

使用上の注意

CMAX値は、CMIN+CINCRより大きく設定する必要があります。この値に達すると、物理接続をそれ以上オープンできません。通常のアプリケーションでは、同時データベース操作を100個実行するように設定すれば十分です。ユーザーが適切な値を設定できます。

CMIN

用途

データベースに対してオープンできる物理接続の最小数を指定します。

構文

CINCR = 範囲は1から(CMAX-CINCR)。

デフォルト

2

使用上の注意

CMAX値は、CMIN+CINCRより大きく設定する必要があります。この値に達すると、物理接続をそれ以上オープンできません。通常のアプリケーションでは、同時データベース操作を100個実行するように設定すれば十分です。ユーザーが適切な値を設定できます。

CNOWAIT

用途

この属性は、プール内の他のすべての物理接続が使用中で、物理接続の合計数がすでに最大値に達している場合に、アプリケーションで繰り返し物理接続を要求する必要があるかどうかを決定します。

構文

CNOWAIT = 範囲は1から65535。

デフォルト

未設定を意味する0。

使用上の注意

物理接続が使用できず、これ以上物理接続をオープンできない場合、この属性が設定されているとエラーが発生します。そうでない場合、コールは別の接続が取得されるまで待機します。デフォルトでは、CNOWAITは設定されないため、スレッドは、エラーを戻すかわりに、空いている接続を取得できるまで待機します。

CODE

用途

Pro*C/C++プリコンパイラによって生成されるC関数プロトタイプの書式を指定します。(関数プロトタイプは、関数とその引数のデータ型を宣言します。)プリコンパイラは、Cコンパイラが外部参照を解決できるよう、SQLライブラリ・ルーチンのために関数プロトタイプを生成します。CODEオプションで、プロトタイピングを制御できます。

構文

CODE={ANSI_C | KR_C | CPP}

デフォルト

KR_C

使用上の注意

コマンドラインでは入力できますが、インラインではできません。

ANSI C規格X3.159-1989は、関数プロトタイプを規定しています。CODE=ANSI_Cのとき、Pro*C/C++では、ANSI C規格に準拠する完全な関数プロトタイプが生成されます。次に例を示します。

extern void sqlora(long *, void *); 

プリコンパイラでは、他のANSI準拠の構造体(const型修飾子など)も生成できます。

CODE=KR_C(デフォルト)のとき、生成された関数プロトタイプの引数リストは、次のようなコメントになります。

extern void sqlora(/*_ long *, void * _*/); 

CコンパイラがX3.159規格に準拠していなければ、CODE=KR_Cを指定します。

CODE=CPPのとき、プリコンパイラではC++互換コードが生成されます。

関連項目:

このオプション値を使用するすべての結果は、コードの生成を参照してください。

COMMON_PARSER

用途

SQL99構文のSELECT、INSERT、DELETE、UPDATEおよびDECLARE CURSOR文のカーソル本体がサポートされます。

構文

COMMON_PARSER={YES | NO}

デフォルト

NO

使用上の注意

コマンドラインで入力できます。

COMP_CHARSET

用途

使用するコンパイラでマルチバイト・キャラクタ・セットがサポートされているかどうかを、Pro*C/C++プリコンパイラに指定します。これは、マルチバイトのクライアント環境(たとえば、NLS_LANGがマルチバイト・キャラクタ・セットに設定されているとき)で作業する開発者向けです。

構文

COMP_CHARSET={MULTI_BYTE | SINGLE_BYTE}

デフォルト

MULTI_BYTE

使用上の注意

コマンドラインでのみ入力できます。

COMP_CHARSET=MULTI_BYTE(デフォルト)が指定されると、Pro*C/C++では、マルチバイト・キャラクタ・セットをサポートしているコンパイラによりコンパイルされるCコードを生成します。

COMP_CHARSET=SINGLE_BYTEを指定すると、Pro*C/C++では、シングルバイト系のコンパイラ用のCコードが生成され、マルチバイト文字列中のダブルバイト文字の2バイト目がバックスラッシュ(\)に対応するASCII文字である場合に起きる可能性のある面倒な問題に、生成されたCコードにより対処します。この場合、バックスラッシュ(\)は、前にもう1つバックスラッシュを置くことでエスケープされます。

注意:

この機能は、一般的に、古いCコンパイラを使用してシフトJIS環境で開発をするときに必要になります。

シングルバイト・キャラクタ・セットにNLS_LANGが設定されていると、このオプションは効果がありません。

CONFIG

用途

ユーザー構成ファイルの名前を指定します。

構文

CONFIG=filename

デフォルト

なし。

使用上の注意

コマンドラインでのみ入力できます。

ユーザー構成ファイルの名前および位置をPro*C/C++に通知する方法は、このオプション以外にありません。

CPOOL

用途

このオプションに基づき、プリコンパイラでは、SQLLIBに接続プール機能を有効または無効にするように指示する適切なコードを生成します。

構文

CPOOL = {YES|NO}

デフォルト

NO

使用上の注意

このオプションがNOに設定されている場合、プリコンパイラではその他の接続プーリング・オプションを無視します。

CPP_SUFFIX

用途

CPP_SUFFIXオプションを使用すると、CODE=CPPオプションを指定した場合に生成されるC++出力ファイルに、プリコンパイラによって付けられるファイル拡張子を指定できます。

構文

CPP_SUFFIX=filename_extension

デフォルト

システム固有。

使用上の注意

ほとんどのCコンパイラでは、入力ファイルのデフォルト拡張子は.cになります。しかし、C++コンパイラでは、ファイル名の拡張子がコンパイラごとに異なる場合があります。CPP_SUFFIXオプションを指定すると、プリコンパイラで生成されるファイル名拡張子を指定できます。このオプションの値は、引用符もピリオドも付けない文字列です。たとえば、CPP_SUFFIX=ccまたはCPP_SUFFIX=Cのように指定します。

CTIMEOUT

用途

指定した時間(秒単位)より長い間アイドル状態になっている物理接続を終了し、オープンされている物理接続を最適な数に保ちます。

構文

CTIMEOUT = 範囲は1から65535。

デフォルト

未設定を意味する0。

使用上の注意

接続プールが終了されるまで、物理接続はクローズされません。新しい物理接続を作成すると、サーバーへのラウンド・トリップが必要になります。

DB2_ARRAY

用途

このオプションに基づいて、プリコンパイラは追加の配列INSERTおよび配列SELECT構文をアクティブにします。

構文

DB2_ARRAY={YES |NO}

デフォルト

NO

使用上の注意

このオプションをNOに設定すると、Oracleプリコンパイラの構文がサポートされます。それ以外の場合は、DB2の配列INSERTおよび配列SELECT構文がサポートされます。

DBMS

用途

OracleがOracle9i、Oracle8i、Oracle8、Oracle7、あるいはOracleのネイティブ・バージョン(つまり、アプリケーションが接続しているバージョン)のうち、どの意味上および構文上の規則に従うかを指定します。

構文

DBMS=NATIVE | V7 | V8

デフォルト

NATIVE

使用上の注意

コマンドラインまたは構成ファイルでのみ入力できます。

DBMSオプションの指定によりOracleのバージョンに固有の動作を制御できます。DBMS=NATIVE(デフォルト値)のとき、Oracleはアプリケーションが接続しているデータベース・バージョンの意味上および構文上の規則に従います。

DBMS=V8またはDBMS=V7のときは、OracleはそれぞれOracle9iの規則(Oracle7、Oracle8およびOracle8iの場合と同じ規則)に従います。

OracleではV6_CHARはサポートされておらず、この機能はCHAR_MAPプリコンパイラ・オプションに用意されています。

関連項目:

CHAR_MAP

表10-3 DBMSとMODEの相互作用

状況 DBMS=V7 | V8MODE=ANSI DBMS=V7 | V8MODE=ORACLE

「データが見つかりません」という警告コード

+100

+1403

標識変数を使用しないNULLのフェッチ

エラー-1405

エラー-1405

インジケータ変数を使用しない切捨て値のフェッチ

エラーはなし。sqlwarn[1]が設定されます。

エラーはなし。sqlwarn[1]が設定されます。

COMMITまたはROLLBACKによるカーソルのクローズ

すべて明示的

CURRENT OFのみ

すでにオープンしているカーソルのオープン

エラー-2117

エラーなし

すでにクローズしているカーソルのクローズ

エラー-2114

エラーなし

SQLグループ関数によるNULLの無視

警告なし

警告なし

複数行の問合せでSQLグループ関数をコールするとき

FETCH時

FETCH時

SQLCA構造体の宣言

省略可能

必須

SQLCODEまたはSQLSTATE状態変数の宣言

必須

指定できるがOracleは無視

整合性制約

有効

有効

ロールバック・セグメント用のPCTINCREASE

使用不可

使用不可

MAXEXTENTS記憶域パラメータ

使用不可

使用不可

DEF_SQLCODE

用途

Pro*C/C++プリコンパイラによりSQLCODEの#defineが生成されるかどうかを制御します。

構文

DEF_SQLCODE={NO | YES}

デフォルト

NO

使用上の注意

コマンドラインまたは構成ファイルからのみ入力できます。

DEF_SQLCODE=YESの場合、プリコンパイラでは生成されるソース・コードでSQLCODEが次のように定義されます。

#define SQLCODE sqlca.sqlcode

この定義があれば、SQLCODEを使用して実行SQL文の結果をチェックできます。DEF_SQLCODEオプションは、SQLCODEの使用が必要な規格への準拠のために指定します。

また、次のいずれかを入力して、ソース・コードにSQLCAも組み込む必要があります。

#include <sqlca.h>

または

EXEC SQL INCLUDE SQLCA;

SQLCAを組み込まなければ、このオプションを使用するとプリコンパイル時にエラーが発生します。

DEFINE

用途

#ifdefおよび#ifndef Pro*C/C++プリコンパイラ・ディレクティブで使用できる名称を定義します。定義された名称はEXEC ORACLE IFDEFとEXEC ORACLE IFNDEF文でも使用できます。

構文

DEFINE=name

デフォルト

なし。

使用上の注意

コマンドラインまたはインラインで入力できます。DEFINEでは名称しか定義できません。マクロは定義できません。たとえば、次のような定義は無効です。

proc my_prog DEFINE=LEN=20 

DEFINE文を正しく使用すれば、次のような指定ができます。

proc my_prog DEFINE=XYZZY 

するとmy_prog.pcに次のコードを記述できるようになります。

#ifdef XYZZY 
... 
#else 
... 
#endif 

または、単純にコーディングできます。

EXEC ORACLE IFDEF XYZZY; 
... 
EXEC ORACLE ELSE; 
... 
EXEC ORACLE ENDIF; 

次の例は無効です。

#define XYZZY
...
EXEC ORACLE IFDEF XYZZY
...
EXEC ORACLE ENDIF;

EXEC ORACLE DEFINEまたはDEFINEオプションでマクロが定義されているときにかぎり、EXEC ORACLE条件文が有効となります。

DEFINE=を使用して名前を定義してから、Pro*C/C++プリコンパイラの#ifdef(または#ifndef)ディレクティブを使用して条件を含めた(または除外した)場合は、Cコンパイラを実行するときにその名前が定義されていることを確認します。たとえば、UNIXのccでは、-Dオプションを使用してCコンパイラの名前を定義する必要があります。

DURATION

用途

後続のEXEC SQL OBJECT CREATE文とEXEC SQL OBJECT DEREF文に使用される確保継続時間を設定します。キャッシュ内のオブジェクトは、保持期間の終わりに暗黙的に解放されます。

構文

DURATION={TRANSACTION | SESSION}

デフォルト

TRANSACTION

使用上の注意

EXEC ORACLE OPTION文を使用してインライン入力できます。

TRANSACTIONは、オブジェクトがトランザクションの完了時に暗黙的に解放されることを意味します。

SESSIONは、オブジェクトが接続の終了時に暗黙的に解放されることを意味します。

DYNAMIC

用途

このマイクロ・オプションでは、動的SQL方法4の記述子の動作を指定します。MODEの設定によりDYNAMICの設定が決まります。

構文

DYNAMIC={ORACLE | ANSI}

デフォルト

ORACLE

使用上の注意

EXEC ORACLE OPTION文を使用してインラインで入力することはできません。

DYNAMICオプション設定については、表14-2を参照してください。

ERRORS

用途

エラー・メッセージを端末とリスト・ファイルの両方に送信(YES)するか、リスト・ファイルにのみ送信(NO)するかを指定します。

構文

ERRORS={YES | NO}

デフォルト

YES

使用上の注意

コマンドラインまたは構成ファイルでのみ入力できます。

ERRTYPE

用途

型ファイルの処理中に生成されたエラーを書き込む出力ファイルを指定します。省略すると、エラーは画面に出力されます。INTYPEも参照してください。

構文

ERRTYPE=filename

デフォルト

なし。

使用上の注意

生成されるエラー・ファイルは1つのみです。複数の値を入力すると、最後の値がプリコンパイラで使用されます。

EVENTS

用途

アプリケーションが通知の登録および受信に対応しているかどうかを指定します。

構文

EVENTS={YES | NO}

デフォルト

NO

使用上の注意

コマンドラインからのみ入力できます。

FIPS

用途

ANSI SQLの拡張機能に(FIPSフラガーで)フラグを立てるかどうかを指定します。拡張機能とは、ANSIの形式または構文規則(権限適用規則は除く)に違反するSQL要素を指します。

構文

FIPS={SQL89 | SQL2 | YES | NO}

デフォルト

なし。

使用上の注意

インラインまたはコマンドラインで入力できます。

FIPS=YESの場合、FIPSフラガーは使用可能になります。このときANSI SQLのOracle拡張機能または非準拠の方法でANSI SQL機能を使用すると、(エラーではなく)警告メッセージが発行されます。プリコンパイル時にフラグ付けされるANSI SQL拡張機能には次のものがあります。

  • FOR句を含む配列インタフェース

  • SQLCA、ORACAおよびSQLDAデータ構造体

  • DESCRIBE文を含む動的SQL

  • 埋込みPL/SQLブロック

  • 自動データ型変換

  • DATE、NUMBER、RAW、LONGRAW、VARRAW、ROWID、VARCHAR2およびVARCHARデータ型

  • ポインタ・ホスト変数

  • ランタイム・オプション指定用のOracle OPTION文

  • ユーザー・イグジットのTOOLS文

  • CONNECT文

  • TYPEおよびVARデータ型の同等文

  • AT db_name

  • DECLARE...DATABASE文、...STATEMENT文および...TABLE文

  • WHENEVER文でのSQLWARNING条件

  • WHENEVER文におけるDO function_name()、DO BREAKアクションおよびDO CONTINUEアクション

  • COMMIT文のCOMMENT句およびFORCE TRANSACTION句

  • ROLLBACK文でのFORCE TRANSACTION句およびTO SAVEPOINT句

  • COMMIT文およびROLLBACK文でのRELEASEパラメータ

  • WHENEVER...GOTOラベルおよびINTO句のホスト変数の前に任意指定で付加するコロン

HEADER

用途

プリコンパイル済ヘッダー・ファイルを許可します。プリコンパイル済ヘッダー・ファイルのファイル拡張子を指定します。

構文

HEADER=extension

デフォルト

なし

使用上の注意

ヘッダー・ファイルをプリコンパイルする場合、このオプションは必須で、ヘッダー・ファイルのプリコンパイルによって生成される出力ファイルのファイル拡張子の指定に使用されます。

通常のPro*C/C++プログラムをプリコンパイルする場合、このオプションは任意です。指定すると、Pro*C/C++プログラムのプリコンパイル時に、プリコンパイル済ヘッダーのメカニズムを使用できます。

どちらの場合も、このオプションで#includeディレクティブの処理時に使用するファイル拡張子も指定できます。指定した拡張子の付いた#includeファイルが存在する場合、Pro*C/C++ではそのファイルをPro*C/C++によって以前に生成されたプリコンパイル済ヘッダー・ファイルとみなします。Pro*C/C++は、#includeディレクティブを処理してインクルードされるヘッダー・ファイルをプリコンパイルするかわりに、そのファイルからデータをインスタンス化します。

このオプションは、コマンドラインまたは構成ファイルでのみ使用できます。インラインでは使用できません。このオプションを使用する場合は、ファイル拡張子のみを指定します。ファイル・セパレータは含めないでください。たとえば、拡張子にピリオド(.)は含めないでください。

HOLD_CURSOR

用途

カーソル・キャッシュでのSQL文およびPL/SQLブロック用カーソルの処理方法を指定します。

構文

HOLD_CURSOR={YES | NO}

デフォルト

NO

使用上の注意

インラインまたはコマンドラインで入力できます。

HOLD_CURSORを使用すると、プログラムのパフォーマンスを改善できます。パフォーマンスのチューニングも参照してください。

SQLデータ操作文を実行すると、その文に関連付けられたカーソルが、カーソル・キャッシュ内のエントリにリンクされます。そのカーソル・キャッシュ・エントリは、文の処理に必要な情報が格納されるOracleプライベートSQL領域にリンクされます。HOLD_CURSORは、カーソルとカーソル・キャッシュの間のリンクで発生する処理を制御します。

HOLD_CURSOR=NOのとき、OracleがSQL文を実行してカーソルがクローズされた後に、プリコンパイラはそのリンクに再利用可能とマークします。このリンクは、それが示すカーソル・キャッシュ・エントリが別のSQL文に必要になると、すぐに再利用されます。これにより、プライベートSQL領域に割り当てられたメモリーが解放され、解析ロックが解除されます。

HOLD_CURSOR=YESを指定した場合は、リンクは維持され、プリコンパイラはリンクを再利用しません。これによって、以降の実行をスピードアップし、文を再解析したり、OracleプライベートSQL領域にメモリーを割り当てる必要がなくなるため、実行頻度の高いSQL文に使用すると便利です。

暗黙カーソルをインラインで使用する場合は、SQL文の実行前にHOLD_CURSORを設定してください。明示カーソル用としてインラインで使用するときは、カーソルをクローズする前にHOLD_CURSORを設定してください。

RELEASE_CURSOR=YESはHOLD_CURSOR=YESをオーバーライドし、HOLD_CURSOR=NOはRELEASE_CURSOR=NOをオーバーライドします。この2つのオプションの相互作用方法を示す情報は、表B-1を参照してください。

IMPLICIT_SVPT

用途

新しくバッチ処理された挿入を開始する前に、暗黙的なセーブポイントを設定するかどうかを制御します。

構文

implicit_svpt={YES|NO}

デフォルト

NO

使用上の注意

implict_svpt=yesの場合、行の新しいバッチの開始前に、セーブポイントが設定されます。挿入時にエラーが発生すると、暗黙的な「セーブポイントへのロールバック」が実行されます。このオプションは、DB2との互換性のために用意されていますが、余分なラウンドトリップとなるためマイナス面であることは明らかです。

implict_svpt=noの場合、暗黙的セーブポイントは設定されません。バッファ済INSERTでエラーが発生すると、アプリケーションに通知されますが、ロールバックは実行されません。

INAME

用途

入力ファイル名を指定します。

構文

INAME=path_and_filename

デフォルト

なし。

使用上の注意

コマンドラインでのみ入力できます。

プリコンパイル時は、すべての入力ファイル名を一意にする必要があります。

ファイル名拡張子が.pcの場合は省略できます。入力ファイル名がコマンドラインの先頭オプションになっているときは、オプションのINAME=の部分を省略できます。次に例を示します。

proc sample1 MODE=ansi 

この例では、ANSIモードを使用してファイルsample1.pcをプリコンパイルします。このコマンドは次のコマンドに相当します。

proc INAME=sample1 MODE=ansi

注意:

sqlctxハッシュ値は、Pro*C/C++コマンドに渡されるINAMEパラメータに基づいて生成されます。そのため、同じ名前の複数のファイルが、異なる関数を含む異なるディレクトリに格納されており、プログラムのプリコンパイルのためにビルド・スクリプトが物理ディレクトリに送られるようなアプリケーションでは、問題が発生する可能性があります。したがって、より高いレベルにMakeファイルを配置し、そのパス名を使用してファイルをプリコンパイルする必要はありません。

INCLUDE

用途

#includeまたはEXEC SQL INCLUDEディレクティブによって取り込まれるファイルのディレクトリ・パスを指定します。

構文

INCLUDE=pathnameまたはINCLUDE=(path_1,path_2,...,path_n)

デフォルト

Pro*C/C++にインクルードするカレント・ディレクトリおよびパス

使用上の注意

インラインまたはコマンドラインで入力できます。

INCLUDEは、インクルードされたファイルに対するディレクトリ・パスを指定するために使用します。プリコンパイラでは、次の順序でディレクトリが検索されます。

  1. 現在のディレクトリ

  2. SYS_INCLUDEプリコンパイラ・オプションに指定されているシステム・ディレクトリ

  3. INCLUDEオプションで指定された入力順のディレクトリ

  4. 標準ヘッダー・ファイル用の組込みディレクトリ

通常、Oracle固有のヘッダー・ファイルsqlca.hsqlda.hなどのディレクトリ・パスを指定する必要はありません。

注意:

インクルードするファイルにOracle固有のファイル名を拡張子なしで指定すると、Pro*C/C++は拡張子.hとみなします。このため、インクルード・ファイルには、.hではないにせよ、拡張子を付ける必要があります。

他のすべてのヘッダー・ファイルに対しては、プリコンパイラは拡張子.h想定しません

非標準ファイルの場合は、カレント・ディレクトリに格納されていないかぎり、INCLUDEを使用してディレクトリ・パスを指定する必要があります。次に示すように、コマンドラインに複数のパスを指定できます。

... INCLUDE=path_1 INCLUDE=path_2 ...

注意:

 インクルードするファイルが別ディレクトリに存在している場合には、カレント・ディレクトリには同じ名前のファイルがないことを確認してください。

INCLUDEオプションを使用してディレクトリ・パスを指定する構文は、システムによって異なります。各オペレーティング・システムの規則に従ってください。

注意:

INCLUDEオプションの場合、オプション値の優先順位が逆になります。値が上書きされる他のオプションとは異なり、INCLUDEは次の場所で指定されたすべてのディレクトリ・ファイルを追加します。

  • プリコンパイラ

  • Pro*C/C++システム構成ファイル

  • Pro*C/C++ユーザー構成ファイル

  • コマンドライン

  • インライン

ただし、カッコ内またはカッコなしでの値の渡し方には違いがあります。カッコ内で単一の値またはディレクトリ・リストを渡す場合、INCLUDEの既存の値は上書きされます。リストをカッコなしの単純な値として渡す場合、既存の値に追加されます。

INTYPE

用途

OTTで生成された型のファイルを1つ以上指定します(アプリケーションでオブジェクト型が使用される場合にのみ必要です)。

構文

INTYPE=(file_1,file_2,...,file_n)

デフォルト

なし。

使用上の注意

Pro*C/C++コードには、オブジェクト型ごとに1つの型のファイルが存在します。

LINES

用途

Pro*C/C++プリコンパイラでその出力ファイルに#lineプリプロセッサ・ディレクティブが追加されるかどうかを指定します。

構文

LINES={YES | NO}

デフォルト

NO

使用上の注意

コマンドラインでのみ入力できます。

LINESオプションはデバッグに便利です。

LINES=YESの場合、Pro*C/C++プリコンパイラではその出力ファイルに#lineプリプロセッサ・ディレクティブを追加します。

通常、Cコンパイラでは、それぞれの入力行が処理されるたびに行カウントを増やします。#lineディレクティブは、コンパイラの入力行カウントを強制的にリセットして、プリコンパイラで生成されたコードの行を数えないようにします。さらに、入力ファイルの名前が変わったときに、次の#lineディレクティブが新しいファイル名を指定します。

Cコンパイラでは、行番号とファイル名を使用して、エラーの発生場所を示します。したがって、Cコンパイラで発行されるエラー・メッセージは、変更済(プリコンパイル済)のソース・ファイルではなく、常に元のソース・ファイルを参照します。これにより、ほとんどのデバッガを使用して、元のソース・コードを1ステップずつ実行することもできます。

LINES=NO(デフォルト)の場合、プリコンパイラでは出力ファイルに#lineディレクティブは追加されません。

注意:

Pro*C/C++プリコンパイラでは、#lineディレクティブはサポートされません。これは、プリコンパイラ・ソースでは#lineディレクティブを直接コーディングできないことを意味します。ただし、LINES=オプションを使用すると、プリコンパイラに#lineディレクティブを挿入させることができます。無視されるディレクティブも参照してください。

LNAME

用途

リスト・ファイル名を指定します。

構文

LNAME=filename

デフォルト

なし。

使用上の注意

コマンドラインでのみ入力できます。

リスト・ファイルのデフォルトのファイル名の拡張子は.lisです。

LTYPE

用途

生成されるリスト・ファイルの型を指定します。

構文

LTYPE={NONE | SHORT | LONG}

デフォルト

SHORT

使用上の注意

コマンドラインまたは構成ファイルで入力できます。

リスト・ファイル生成時のデフォルトの形式はLONGです。LTYPE=LONGを指定すると、すべてのソース・コードが解析順に出力されます。また、メッセージも生成順に出力されます。さらに、現在有効なPro*C/C++オプションが出力されます。

LTYPE=SHORTを指定すると、生成されたメッセージのみが出力され、ソース・コードは出力されません。ソース・ファイルへの参照行はメッセージ状態を生成したコードの位置を特定するのに役立ちます。

LTYPE=NONEを指定すると、LNAMEオプションでリスト・ファイル名を明示的に指定しないかぎり、リスト・ファイルは作成されません。後者の場合、リスト・ファイルはLTYPE=LONGを想定して生成されます

MAX_ROW_INSERT

用途

INSERT文の実行前にバッファする必要がある行の数を制御します。

構文

max_row_insert={0...1000}

デフォルト

0

使用上の注意

0よりも大きい任意の値を指定すると、バッファ済INSERT機能が有効化され、INSERT文の実行前に多くの行がバッファされます。

MAXLITERAL

用途

プリコンパイラによって生成される文字列リテラルの最大長を指定します。これによってコンパイラの制限を超えないようにします。

構文

MAXLITERAL=integer(範囲は10から1024)

デフォルト

1024

使用上の注意

インラインでは入力できません。

MAXLITERALに指定できる最大値はコンパイラによって異なります。たとえば、Cコンパイラには513文字以上の文字列リテラルを扱えないものがあるため、そのような場合はMAXLITERAL=512と指定します。

MAXLITERALで指定した長さを超える文字列はプリコンパイル中に分割され、実行時に再び結合(連結)されます。

インラインでMAXLITERALを入力することはできますが、プログラムで値を設定できるのは1回のみで、EXEC ORACLE文を最初のEXEC SQL文の前に指定する必要があります。指定しない場合、Pro*C/C++は警告メッセージを発行し、余分または誤って指定したEXEC ORACLE文を無視して、処理を続行します。

MAXOPENCURSORS

用途

同時にオープンされ、プリコンパイラによりキャッシュに保存されたままになるカーソルの数を指定します。

構文

MAXOPENCURSORS=integer

デフォルト

10

使用上の注意

インラインまたはコマンドラインで入力できます。

MAXOPENCURSORSを使用すると、プログラムのパフォーマンスを改善できます。分割プリコンパイル時には、MAXOPENCURSORSを使用します。MAXOPENCURSORSオプションには、SQLLIBカーソル・キャッシュの初期サイズを指定します。

HOLD_CURSOR=NOのときに、暗黙的な文が実行されるか明示カーソルがクローズされると、カーソル・エントリは再利用可能とマークされます。この文が再び発行された時にカーソル・エントリが別の文に使用されていなければ、カーソルは再利用されます。

割当て済のカーソル数がMAXOPENCURSORSに満たない場合に新しいカーソルが必要になると、キャッシュに格納された次のカーソルが割り当てられます。MAXOPENCCURSORSを超えると、Oracleではまず以前のエントリの再利用を試みます。空いているエントリがない場合、追加キャッシュ・エントリが割り当てられます。Oracleは、プログラムがメモリーを消費するか、データベース・パラメータのOPEN_CURSORSを超過するまで継続してこれを行います。

通常の処理では、HOLD_CURSORS=NOでRELEASE_CURSOR=NO (デフォルト)を使用するときには、データ・ディクショナリで使用されるカーソルが文を処理できるように、MAXOPENCURSORSの値をOPEN_CURSORSデータベース・パラメータの値より6以上小さい値に設定しないことをお薦めします。

プログラムの同時オープン・カーソル数を増す必要がある場合には、MAXOPENCURSORSを必要な数まで増やして再度指定することがあります。45から50の値を指定することは珍しくありませんが、ユーザー・プロセスのメモリー領域にカーソル1つにつき、1つのプライベートSQL領域が必要なことに注意してください。デフォルト値の10は、大半のプログラムには適切な値です。

MODE

用途

プログラムがOracleの動作規則に従うかどうか、あるいは現行のANSI/ISO SQL規格に準拠するかどうかを指定します。

構文

MODE={ANSI | ISO | ORACLE}

デフォルト

ORACLE

使用上の注意

コマンドラインまたは構成ファイルからのみ入力できます。

このオプションでは、ISOはANSIと同じ意味です。

MODE=ORACLE (デフォルト)のとき、埋込みSQLプログラムはOracleの動作規則に従います。たとえば、宣言部はオプションで、空白セルは削除されます。

MODE=ANSIの場合、プログラムは完全にANSI SQL規格に準拠し、次のような変更が有効になります。

  • COMMITまたはROLLBACKを発行すると、明示カーソルがすべてクローズされます。

  • すでにオープンされているカーソルのOPENや、クローズされているカーソルのCLOSEはできません。(MODE=ORACLEの場合は、再解析を避けるためにオープンされているカーソルを再オープンできます。)

  • 各EXEC SQL文のスコープ内にSQLCODEという名前のlong変数またはcharのSQLSTATE[6]変数(どちらの変数も大文字にする必要があります)のいずれかを宣言する必要があります。すべての場合に同一のSQLCODEまたはSQLSTATE変数を使用する必要はありません。つまり、変数はグローバル変数でなくてもかまいません。

  • SQLCAの宣言はオプションです。SQLCAを挿入する必要はありません。

  • SQLCODEに戻される「データが見つかりません」というOracle警告コードは、+1403から+100になります。メッセージ・テキストは変更されていません。

  • ホスト変数に宣言部が必要です。

NATIVE_TYPES

用途

ネイティブfloat/doubleをサポートします。

構文

NATIVE_TYPES = {YES|NO}

デフォルト

NO

使用上の注意

ネイティブfloatおよびネイティブdoubleデータ型は、単精度と倍精度の浮動小数点値を表します。これらはネイティブ、つまりホスト・システムの浮動小数点形式で表されます。

NLS_CHAR

用途

プリコンパイラでマルチバイト文字変数として扱われるCホスト文字変数を指定します。

構文

NLS_CHAR=varnameまたはNLS_CHAR=(var_1,var_2,...,var_n)

デフォルト

なし。

使用上の注意

コマンドラインまたは構成ファイルでのみ入力できます。

このオプションを使用すると、プリコンパイラでマルチバイト文字変数として扱う必要のある1つ以上のホスト変数のリストを、プリコンパイル時に指定できます。このオプションでは、C言語のchar変数またはPro*C/C++のVARCHAR変数のみを指定できます。

オプション・リストにプログラムで宣言していない変数を指定しても、プリコンパイラのエラーは発生しません。

NLS_LOCAL

用途

プリコンパイラのSQLLIBランタイム・ライブラリとデータベース・サーバーのうち、どちらでマルチバイト・キャラクタ・セット変換を実行するかを指定します。

構文

NLS_LOCAL={YES | NO}

デフォルト

NO

使用上の注意

YESに設定すると、Pro*C/C++およびSQLLIBライブラリによって、ローカル・マルチバイト・サポートが提供されます。どのCホスト変数がマルチバイトかを指定するには、NLS_CHARオプションを使用する必要があります。

NOに設定すると、Pro*C/C++では、データベース・サーバーのマルチバイト・オブジェクトのサポートを使用します。新規アプリケーションにはすべて、NLS_LOCALをNOに設定してください。

環境変数NLS_NCHARには、有効な固定幅の各国語キャラクタ・セットを設定する必要があります。可変長幅の各国語キャラクタ・セットはサポートされていません。

コマンドラインまたは構成ファイルでのみ入力できます。

OBJECTS

用途

オブジェクト型のサポートを要求します。

構文

OBJECTS={YES | NO}

デフォルト

YES

使用上の注意

コマンドラインからのみ入力できます。

ONAME

用途

出力ファイル名を指定します。出力ファイルは、プリコンパイラで生成されるCコードのファイルです。

構文

ONAME=path_and_filename

デフォルト

.c拡張子付きのINAME

使用上の注意

コマンドラインでのみ入力できます。このオプションを使用すると、入力(.pc)ファイルとは異なるパス名を使用して、出力ファイルのフルパス名を指定できます。たとえば、次のコマンドを発行する場合を考えます。

proc iname=my_test 

デフォルト出力ファイル名はmy_test.cです。出力ファイル名をmy_test_1.cにする場合は、次のコマンドを発行します。

proc iname=my_test oname=my_test_1.c 

ONAMEで指定するファイルにはデフォルトで拡張子が追加されないため、.cを付加する必要があります。

注意:

出力ファイル名にはデフォルトの名前を使用するのではなく、ONAMEで明示的に名前を指定することをお薦めします。拡張子なしでONAME値を指定すると、生成ファイルの名前に拡張子は付きません。

ORACA

用途

プログラムでOracle通信領域(ORACA)を使用できるかどうかを指定します。

構文

ORACA={YES | NO}

デフォルト

NO

使用上の注意

インラインまたはコマンドラインで入力できます。

ORACA=YESのときは、プログラムにEXEC SQL INCLUDE ORACA文または#include oraca.h文を記述する必要があります。

OUTLINE

用途

SQL文に対してアウトラインSQLファイルを生成する必要があることを示します。

構文

outline={yes | no | category_name}

デフォルト

no

使用上の注意

値がyesの場合、アウトラインSQLファイルはDEFAULTカテゴリに含まれている必要があります。生成されるアウトライン書式は次のとおりです。

DEFAULT_<filename>_<filetype>_<sequence_no>

カテゴリ名が示されている場合は、そのカテゴリにSQLファイルを生成する必要があります。この場合、生成されるアウトライン書式は次のようになります。

<category_name>_<filename>_<filetype>_<sequence_no>

値がnoの場合、アウトラインSQLファイルは生成されません。

このオプションを有効にする場合は、意味検査をフルにする必要があり、つまりオプションsqlcheck=full/semanticsを意味します。sqlcheck=syntax/limited/noneの場合は、エラーが生成されます。

OUTLNPREFIX

用途

アウトライン名の生成を制御します。

構文

outlnprefix={none | prefix_name}

デフォルト

なし

使用上の注意

outlnprefix=prefix_nameの場合、アウトライン書式は次のとおりです。

<category_name>_<filename>_<filetype>

この書式は、アウトライン名の<prefix_name>に置き換えられます。

アウトライン名が30バイトを超える場合、このオプションは接頭辞名を指定する際に有効です。

outlnprefix=noneの場合、アウトライン名はシステムによって生成されます。次の書式で生成されます。

<category_name>_<filename>_<filetype>_<sequence_no>

このオプションを有効にする場合は、意味検査をフルにする必要があり、つまりオプションsqlcheck=full/semanticsを意味します。sqlcheck=syntax/limited/noneまたはoutline=false(あるいはその両方)の場合、エラーが生成されます。

PAGELEN

用途

リスト・ファイルの物理ページごとの行数を指定します。

構文

PAGELEN=integer

デフォルト

80

使用上の注意

インラインでは入力できません。値の許容範囲は30から256です。

PARSE

用途

Pro*C/C++プリコンパイラでソース・ファイルを解析する方法を指定します。

構文

PARSE={FULL | PARTIAL | NONE}

デフォルト

FULL

使用上の注意

C++互換コードを生成するには、PARSEオプションにNONEまたはPARTIALのいずれかを指定する必要があります。

PARSE=NONEまたはPARSE=PARTIALの場合、すべてのホスト変数は宣言部内で宣言する必要があります。

変数SQLCODEを宣言部の内側で宣言しない場合、エラー検出の信頼性がなくなります。使用しているプラットフォームのPARSEのデフォルト値をチェックしてください。

PARSE=FULLの場合、Cパーサーが動作し、コード内のクラスなどのC++構造体は認識されません。

PARSE=FULLまたはPARSE=PARTIALを指定すると、Pro*C/C++は#define#ifdefなどのCプリプロセッサ・ディレクティブを完全にサポートします。ただし、PARSE=NONEを指定すると、EXEC ORACLE文により条件付きプリプロセッシングがサポートされます。

注意:

一部のプラットフォームでは、PARSEのデフォルト値がFULL以外の値です。使用するシステム固有のマニュアルを参照してください。

関連項目:

PLAN_BASELINE

用途

モジュール名を指定してSQL計画ベースラインを作成します。

構文

PLAN_BASELINE={module_name | YES | NO}

デフォルト

NO

使用上の注意

このモジュール名の後にファイル名、ファイル・タイプおよび順序番号が付いて、一意の計画名が生成されます。

PLAN_PREFIX

用途

計画名が30バイト以内であることを確認します。

構文

PLAN_PREFIX={prefix_name| none}

デフォルト

none

使用上の注意

これはオプションです。デフォルトはnoneで、接頭辞名が使用されないことを意味し、計画名が30バイトを超えるとエラー・メッセージが生成されます。

PLAN_RUN

用途

生成されたSQLファイルを実行します。

構文

PLAN_RUN={YES | NO}

デフォルト

NO

使用上の注意

PLAN_RUNオプションを設定しない場合、生成されるSQLファイルは実行されません。

PLAN_FIXED

用途

作成した計画ベースラインが固定であるか、非固定であるかを指定します。

構文

PLAN_FIXED={ YES | NO }

デフォルト

YES

使用上の注意

NOを設定すると、非固定の計画ベースラインが作成されます。

PLAN_ENABLED

用途

作成された計画ベースラインの使用を有効にします。

構文

PLAN_ENABLED={ YES | NO }

デフォルト

YES

使用上の注意

デフォルトの設定では、計画の選択時に、作成された計画ベースラインが使用されます。NOを設定すると、計画ベースラインが作成されますが、手動で有効にするまで使用されません。

MEMFORPREFETCH

用途

このオプションを使用すると、指定したメモリーに格納可能な行数をプリフェッチすることによって、問合せが高速化します。

構文

MEMFORPREFETCH=integer

デフォルト

値は設定されていません。

使用上の注意

このオプションは、構成ファイルまたはコマンドラインで使用できます。優先順位の規則に従い、明示カーソルを使用するすべての問合せの実行に、整数の値が使用されます。

インラインで使用するときは、明示カーソルを使用し、OPEN文の前に配置する必要があります。OPEN文が実行されたときにプリフェッチされる行数は、有効な最後のインラインMEMFORPREFETCHオプションによって決まります。

MEMFORPREFETCHは、デフォルトでは値が設定されていません。プリフェッチをオフにするには、コマンドラインでMEMFORPREFETCH=0を使用します。

LONG列およびLOB列へのアクセス中もプリフェッチはオフになります。MEMFORPREFETCHを使用すると、単一行フェッチのパフォーマンスが向上します。配列フェッチを実行する場合、MEMFORPREFETCHの値は割り当てた値に関係なく無効になります。

アプリケーションにおけるすべてのフェッチを支援できる完全なプリフェッチ・メモリー値はありません。

したがって、MEMFORPREFETCHオプションを使用する場合は、様々な値をテストし、プログラム内のすべての文にわたってパフォーマンスが向上する値を選択してください。いくつかの文を個別にチューニングする必要がある場合は、EXEC ORACLE OPTIONを使用してMEMFORPREFETCHオプションをインラインで指定します。この操作は、このコマンドの後のすべてのフェッチ文に影響を与えます。特定のFETCH文のパフォーマンスが向上するようにプリフェッチ・メモリーを選択してください。この個別プリフェッチ・カウントを実現するには、(コマンドラインからではなく)インラインのプリフェッチ・オプションを指定します。

PREFETCH

用途

任意の行数を事前に取得して問合せの実行速度を向上させます。

構文

PREFETCH=integer

デフォルト

1

使用上の注意

構成ファイルまたはコマンドラインで入力できます。優先順位の規則に従い、明示カーソルを使用するすべての問合せの実行に、整数の値が使用されます。

インラインで使用する場合、明示カーソルのあるOPEN文の前に置く必要があります。OPEN文が実行されたときにプリフェッチされる行数は、有効な最後のインラインPREFETCHオプションによって決まります。

指定可能な値の範囲は0から65535です。

RELEASE_CURSOR

用途

カーソル・キャッシュでのSQL文およびPL/SQLブロック用カーソルの処理方法を指定します。

構文

RELEASE_CURSOR={YES | NO}

デフォルト

NO

使用上の注意

インラインまたはコマンドラインで入力できます。

RELEASE_CURSORを使用すると、プログラムのパフォーマンスを改善できます。

SQLデータ操作文を実行すると、その文に関連付けられたカーソルが、カーソル・キャッシュ内のエントリにリンクされます。そのカーソル・キャッシュ・エントリは、文の処理に必要な情報が格納されるOracleプライベートSQL領域にリンクされます。RELEASE_CURSORは、カーソル・キャッシュとプライベートSQL領域の間のリンクで発生する処理を制御します。

RELEASE_CURSOR=YESに指定すると、OracleがSQL文を実行し、カーソルがクローズされた後、プリコンパイラはこのリンクはただちに解除します。これにより、プライベートSQL領域に割り当てられたメモリーが解放され、解析ロックが解除されます。カーソルのCLOSE時に関連リソースが確実に解放されるようにするには、RELEASE_CURSOR=YESを指定する必要があります。

RELEASE_CURSOR=NOを指定すると、リンクは保持されます。オープン・カーソルの数がMAXOPENCURSORSの設定値を超えないかぎり、プリコンパイラではリンクは再利用されません。この設定によって後続の処理の実行速度が向上するため、これは実行頻度の高いSQL文には便利です。文を解析しなおしたり、OracleプライベートSQL領域にメモリーを割り当てる必要がないためです。

暗黙カーソルをインラインで使用する場合は、SQL文の実行前にRELEASE_CURSORを設定してください。明示カーソル用としてインラインで使用するときは、カーソルをCLOSEする前にRELEASE_CURSORを設定してください。

RELEASE_CURSOR=YESの場合は、HOLD_CURSOR=YESが上書きされます。この2つのオプションの相互作用を示す表はパフォーマンス・チューニングを参照してください。

RUNOUTLINE

用途

プリコンパイラを使用して、または後で開発者が手動で「CREATE OUTLINE」文を実行するオプションを提供します。

構文

runoutline={yes | no}

デフォルト

no

使用上の注意

runoutline=yesの場合は、プリコンパイルが正常に完了した後で、プリコンパイラ/トランスレータによって、生成された「CREATE OUTLINE」文が実行されます。

RUNOUTLINEを使用する場合は、アウトライン・オプションをtrueまたはcategory_nameに設定する必要があります。このオプションを有効にする場合は、意味検査をフルにする必要があり、つまりオプションsqlcheck=full/semanticsを意味します。sqlcheck=syntax/limited/noneの場合は、エラーが生成されます。

SELECT_ERROR

用途

SELECT文が複数行を戻すとき、あるいはホスト配列の許容範囲を超える数の行を戻すときに、プログラムでエラーが生成されるかどうかを指定します。

構文

SELECT_ERROR={YES | NO}

デフォルト

YES

使用上の注意

インラインまたはコマンドラインで入力できます。

SELECT_ERROR=YESのときは、行単位のSELECT文が戻した行数が多すぎたり、配列単位のSELECT文が戻した行がホスト配列に入りきらなかったりしたときに、エラーが生成されます。SELECT文の結果は未定義です。

SELECT_ERROR=NOのときは、行単位のSELECT文が戻した行数が多すぎても、配列単位のSELECT文が戻した行がホスト配列に入りきらなくても、エラーは生成されません。

YESを指定してもNOを指定しても、行は表から無作為に選択されます。選択する行の順序を特定するには、SELECT文にORDER BY句を指定する以外に方法はありません。SELECT_ERROR=NOのときORDER BY句を指定すると、配列からの選択時にOracleは先頭行または先頭のn行を戻します。SELECT_ERROR=YESを指定すると、ORDER BY句の有無を問わず、戻る行数が多すぎる場合にエラーが生成されます。

STMT_CACHE

用途

動的SQL文の文キャッシュ・サイズを指定します。

構文

STMT_CACHE = 0から65535

デフォルト

0

使用上の注意

stmt_cacheオプションを設定すると、アプリケーションでそれぞれの動的SQL文の予測数を保持できます。

SYS_INCLUDE

用途

システム・ヘッダー・ファイルの位置を指定します。

構文

SYS_INCLUDE=pathname | (path1, ..., pathn)

デフォルト

システム固有。

使用上の注意

Pro*C/C++では、プラットフォーム固有の標準的な位置でstdio.hなどの標準のシステム・ヘッダー・ファイルが検索されます。たとえば、ほとんどのUNIXシステムではstdio.hファイルのフルパス名は/usr/include/stdio.hです。

ただし、C++コンパイラには、stdio.hなどのシステム・ヘッダー・ファイルが標準的なシステム位置にないものがあります。SYS_INCLUDEコマンドライン・オプションを使用すると、Pro*C/C++でシステム・ヘッダー・ファイルを検索するためのディレクトリ・パスのリストを指定できます。次に例を示します。

SYS_INCLUDE=(/usr/lang/SC2.0.1/include,/usr/lang/SC2.1.1/include)

SYS_INCLUDEを使用して指定した検索パスは、デフォルトのヘッダー位置より優先されます。

PARSE=NONEの場合、Pro*C/C++はシステム・ヘッダー・ファイルをプリコンパイルに含める必要がないため、SYS_INCLUDEで指定した値は無視されます。(ただし、Oracle特有のヘッダーsqlca.hやシステム・ヘッダー・ファイルなどは、コンパイラによるプリプロセッシングのために#includeディレクティブを付けて、挿入する必要があります。)

プリコンパイラでは、次の順序でディレクトリが検索されます。

  1. 現在のディレクトリ

  2. SYS_INCLUDEプリコンパイラ・オプションで指定されたシステム・ディレクトリ

  3. INCLUDEオプションで指定されたディレクトリ(入力順)

  4. 標準ヘッダー・ファイル用の組込みディレクトリ

手順3があるため、通常はsqlca.hsqlda.hなどの標準ヘッダー・ファイルのディレクトリ・パスを指定する必要はありません。

SYS_INCLUDEオプションを使用してディレクトリ・パスを指定する構文は、システムによって異なります。各オペレーティング・システムの規則に従ってください。

注意:

SYS_INCLUDEオプションの場合、オプション値の優先順位が逆になります。値が上書きされる他のオプションとは異なり、SYS_INCLUDEは次の場所で指定されたすべてのディレクトリ・ファイルを追加します。

  • プリコンパイラ

  • Pro*C/C++システム構成ファイル

  • Pro*C/C++ユーザー構成ファイル

  • コマンドライン

  • インライン

ただし、カッコ内またはカッコなしでの値の渡し方には違いがあります。カッコ内で単一の値またはディレクトリ・リストを渡す場合、SYS_INCLUDEの既存の値は上書きされます。リストをカッコなしの単純な値として渡す場合、既存の値に追加されます。

THREADS

用途

THREADS=YESの場合、プリコンパイラではコンテキスト宣言を検索します。

構文

THREADS={YES | NO}

デフォルト

NO

使用上の注意

インラインでは入力できません。

マルチスレッド・サポートを必要とするプログラムには、すべてこのオプションを指定する必要があります。

THREADS=YESの場合、最初のコンテキストが現れ、実行SQL文が見つかる前にEXEC SQL CONTEXT USEディレクティブが検出されないと、プリコンパイラではエラーが発生します。

TYPE_CODE

用途

このマイクロ・オプションは、動的SQL方法4でANSIまたはOracleのいずれのデータ型コードを使用するかを指定します。この設定は、MODEオプションの設定と同じです。

構文

TYPE_CODE={ORACLE | ANSI}

デフォルト

ORACLE

使用上の注意

インラインでは入力できません。

可能なオプション設定については、表14-3を参照してください。

.

UNSAFE_NULL

用途

UNSAFE_NULL=YESを指定すると、標識変数を使用しないでNULLをフェッチしても、ORA-01405メッセージは生成されません。

構文

UNSAFE_NULL={YES | NO}

デフォルト

NO

使用上の注意

インラインでは入力できません。

MODE=ORACLEの場合のみ、UNSAFE_NULL=YESを設定できます。

埋込みPL/SQLブロックのホスト変数ではUNSAFE_NULLオプションは何の効果もありません。ORA-01405エラーの発生を避けるために、必ず標識変数を使用してください。

USERID

用途

Oracleユーザー名およびパスワードを指定します。

構文

USERID=username/password[@dbname]

デフォルト

なし。

使用上の注意

コマンドラインでのみ入力できます。

動接続機能を使用している場合は、このオプションを指定しないでください。自動接続機能では、先頭にCLUSTER$の付いたOracleユーザー名しか受け付けません。「CLUSTER$」文字列の実際の値は、INIT.ORAファイルのパラメータとして設定されています。

SQLCHECK=SEMANTICSのとき、Oracleに接続してデータ・ディクショナリにアクセスしてプリコンパイラに必要な情報を取得させるには、USERIDも同時に指定する必要があります。

UTF16_CHARSET

用途

UNICODE(UTF16)変数で使用されるキャラクタ・セットの形式を指定します。

構文

UTF16_CHARSET={NCHAR_CHARSET | DB_CHARSET}

デフォルト

NCHAR_CHARSET

使用上の注意

コマンドラインまたは構成ファイルでのみ使用でき、インラインでは使用できません。

UTF16_CHARSET=NCHAR_CHARSET(デフォルト)の場合、UNICODE(UTF16)のバインドまたは定義バッファは、サーバー側の各国語キャラクタ・セットに従って変換されます。ターゲット列がCHARの場合は、パフォーマンスが低下することがあります。

UTF16_CHAR=DB_CHARSETの場合、UNICODE(UTF16)バインドまたは定義バッファは、データベースのキャラクタ・セットに従って変換されます。

警告:

ターゲット列がNCHARの場合、データが失われることがあります。

VARCHAR

用途

ある構造体がVARCHARホスト変数として解釈されるように、Pro*C/C++プリコンパイラに対して指示します。

構文

VARCHAR={NO | YES}

デフォルト

NO

使用上の注意

コマンドラインでのみ入力できます。

VARCHAR=YESのとき、次のようにC言語の構造体を記述します。

struct {
    short len;
    char  arr[n];
} name;

この場合、プリコンパイラによってVARCHAR[n]型のホスト変数として解釈されます。

VARCHARはNLS_CHARオプションとともに使用してマルチバイト文字変数を指定できます。

VERSION

用途

EXEC SQL OBJECT DEREF文によって戻されるオブジェクトのバージョンを指定します。

構文

VERSION={RECENT | LATEST | ANY}

デフォルト

RECENT

使用上の注意

EXEC ORACLE OPTION文を使用してインライン入力できます。

RECENTは、現行のトランザクションでオブジェクトが選択されてオブジェクト・キャッシュに入っている場合、そのオブジェクトが戻されることを意味します。シリアライズ可能モードで実行中のトランザクションの場合、このオプションの効果はLATESTと同じですが、ネットワークのラウンドトリップはそれほど多くありません。ほとんどのアプリケーションには、RECENTが適切です。

LATESTは、オブジェクトがオブジェクト・キャッシュに存在しない場合、データベースから取得されることを意味します。オブジェクト・キャッシュに存在する場合は、サーバーからリフレッシュされます。LATESTを使用する場合、ネットワークのラウンドトリップ数が最大になるため注意してください。LATESTは、オブジェクト・キャッシュとサーバーのバッファ・キャッシュをできるかぎり一致させる必要がある場合にのみ使用してください。

ANYは、オブジェクトがすでにオブジェクト・キャッシュに存在している場合、そのオブジェクトが戻されることを意味します。キャッシュになければ、そのオブジェクトはサーバーから取得します。ANYを指定すると、ネットワークのラウンドトリップ数は最小になります。この値を使用するのは、アプリケーションが読取り専用オブジェクトにアクセスする場合や、ユーザーがオブジェクトに排他的にアクセスする場合です。