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

前
次

プリコンパイラのオプション

各オプションを使用すると、リソースの使用方法、エラーのレポート方法、入出力のフォーマット方法およびカーソルの管理方法を制御できます。

オプションの値はリテラルで、テキスト値または数値を表します。たとえば、次のオプションを指定するとします。

...  INAME=my_test 

この値はファイル名を指定する文字列リテラルです。

次にMAXOPENCURSORSオプションの例を示します。

...MAXOPENCURSORS=20 

この値は数値です。

一部のオプションはブール値をとり、文字列yesまたはnotrueまたはfalse、あるいは整数リテラル1または0で表すことができます。たとえば、次のオプションを指定するとします。

...  SELECT_ERROR=yes 

は、次と同じです。

...  SELECT_ERROR=true

または

...  SELECT_ERROR=1 

これらはすべて、実行時にSELECTエラーが検出されることを意味しています。

環境変数

SYS_INCLUDEプリコンパイラ・オプションおよびINCLUDEプリコンパイラ・オプションでは、環境変数を使用できます。PROCアプリケーションをプリコンパイルするときは、SYS_INCLUDEディレクトリ・パスおよびINCLUDEディレクトリ・パスでORACLE_HOMEなどの環境変数を使用できます。また、CONFIGファイルpcscfg.cfgのSYS_INCLUDEオプション値およびINCLUDEオプション値を使用することもできます。環境変数の次の使用方法がサポートされています。

Linuxの場合

$ENV_VAR 
sys_include=$ORACLE_HOME/precomp/public
include=$ORACLE_HOME/precomp/public
 
$(ENV_VAR)
sys_include=$(ORACLE_HOME)/precomp/public
include=$(ORACLE_HOME)/precomp/public

${ENV_VAR}
sys_include=${ORACLE_HOME}/precomp/public
include=${ORACLE_HOME}/precomp/public

Windowsの場合

%ENV_VAR% 
sys_include=%ORACLE_HOME%\precomp\public
include=%ORACLE_HOME%\precomp\public
 

構成ファイル

構成ファイルは、プリコンパイラ・オプションを格納するテキスト・ファイルです。ファイル内の各レコード(行)には、オプション1つと、それに対応付けられた1つ以上の値が含まれます。1行に複数のオプションを入力すると、2番目以降のオプションは無視されます。たとえば、次の構成ファイルに次の行が含まれる場合があります。

FIPS=YES 
MODE=ANSI 
CODE=ANSI_C

これらの行は、FIPS、MODEおよびCODEオプションにデフォルト値を設定します。

pcscfg.cfgでは、各エントリの1行当たりの文字数は最大300文字に制限されています。SYS_INCLUDEパスなど、この値を300文字より長く設定するには、エントリを複数行で作成します。次に例を示します

sys_include=/ade/aime_rdbms_9819/oracle/precomp/public 
sys_include=/usr/include,/usr/lib/gcc-lib/i486-suse-linux/2.95.3/include 
sys_include=/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include
sys_include=/usr/lib/gcc-lib/i386-redhat-linux7/2.96/include
sys_include=/usr/include

行末にはカッコを使用しないでください。行末にカッコを使用すると、前の行がすべて無効になります。たとえば、次のように3行目の行末にカッコがあると、次のエントリは、

sys_include=/ade/aime_rdbms_9819/oracle/precomp/public 
sys_include=/usr/include,/usr/lib/gcc-lib/i486-suse-linux/2.95.3/include 
sys_include=/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include)
sys_include=/usr/lib/gcc-lib/i386-redhat-linux7/2.96/include
sys_include=/usr/include

SYS_INCLUDEが次のように設定されます。

/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include, /usr/lib/gcc-lib/i386-redhat-linux7/2.96/include,/usr/include

インストールごとにシステム構成ファイルが1つあります。システム構成ファイルの名前はpcscfg.cfgです。このファイルの位置はシステムに依存します。

注意:

pcscfg.cfgには、includeLIBPATHなどの変数のデフォルトのパス設定が含まれています。これらのパスは、コンピュータまたはオペレーティング・システムに依存します。デフォルトのパスが、ご使用のコンピュータおよびオペレーティング・システムで有効なことを確認する必要があります。有効でない場合は、そのパスを8dot3表記に置き換えてください。

pcscfg.cfgファイルでは、空白を使用できません。たとえば、次のファイルに次の行が含まれるとします。

include="D:\Program Files\Microsoft Visual Studio\VC98\include"

プリコンパイルは失敗します。次の行に置き換えることができます。

include=D:\Progra~1\Microa~4\VC98\include

Pro*C/C++のユーザーはそれぞれ、1つ以上のプライベート構成ファイルを持つことができます。構成ファイルの名前は、必ずCONFIG=プリコンパイラ・オプションを使用して指定してください。

注意:

構成ファイルはネストできません。つまり、構成ファイル内では、CONFIG=は有効ではありません。

オプション値の優先順位

オプションの値は、優先順位の低いものから順に、次のように決定されます。

  • プリコンパイラに組み込まれた値

  • Pro*C/C++システム構成ファイル内の値の集合

  • Pro*C/C++ユーザー構成ファイル内の値の集合

  • コマンドラインで設定される値

  • インラインで設定される値

たとえば、MAXOPENCURSORSオプションでは、キャッシュ内のオープン・カーソルの最大数を指定します。このオプションのプリコンパイラに組み込まれたデフォルト値は10です。ただし、システム構成ファイルでMAXOPENCURSORS=32と指定されていると、デフォルトは32になります。ユーザー構成ファイルでは、これをさらに別の値に設定でき、これはシステム構成ファイルの値より優先されます。最終的には、インライン指定が前述のすべてのデフォルト値よりも優先されます。

PROCコマンドライン・オプションが複数回使用されている場合、PROCでは、最後に使用されているPROCコマンドライン・オプションに割り当てられている最後の値をプリコンパイルに使用します。次に例を示します

$ proc iname=sample.pc ... oname=output1.c ... oname=output2.c ... oname=output3.c

この例では、output3.cはPROCが使用するONAME値であり、生成される出力ファイル名はoutput3.cです。

CONFIGファイル(システム・デフォルトまたはユーザー定義)とコマンドラインの両方にオプションが指定されている場合は、コマンドラインで指定されている値が優先されます。

SYS_INCLUDEオプションおよびINCLUDEオプションの場合、動作は環境変数で定義されます。行末にはカッコで中断されないかぎり、値は追加されます。

プライベート構成ファイルをCONFIG=filenameで指定する場合、最初の値が優先され、コマンドラインの後続の値は無視されます。この場合は、例外的にコマンドラインの最後の値が優先されません。

USERIDなどの一部のオプションには、プリコンパイラ・デフォルト値がありません。オプションで組込みデフォルト値のあるものについては、表10-2を参照してください。

注意:

プリコンパイラのデフォルト値については、システム固有のマニュアルを参照してください。プラットフォーム上では、この章で示された値から変更されている可能性もあります。

関連項目:

現在の値の確認

コマンドラインで疑問符(?)を使用すると、複数のオプションのカレント値を対話形式で調べることができます。たとえば、次のコマンドを発行したとします。

proc ? 

この場合、すべてのオプションが、現在の設定値とともに端末に出力(表示)されます。(UNIXシステムでCシェルを使用しているときには「?」をバックスラッシュでエスケープしてください。)この場合、値はプリコンパイラに組み込まれているもので、システム構成ファイルに値があれば、それが優先されます。ただし、次のコマンド

proc config=my_config_file.h ?
 

を入力したときに、カレント・ディレクトリにmy_config_file.hというファイルがあると、すべてのオプションがリスト形式で表示されます。ユーザー構成ファイルの値によって、不足している値が補われ、Pro*C/Cプリコンパイラに組み込まれている値またはシステム構成ファイルに指定されている値が置き換えられます。

オプション名を指定し、その後ろに=?を付けるだけで、どれか1つのオプションの現在の設定値を調べることもできます。次に例を示します。

proc maxopencursors=? 

このように入力すると、MAXOPENCURSORSオプションの現在のデフォルト値が出力されます。

次のように入力するとします。

proc

すると、表10-2のような短いサマリーが表示されます。

マクロ・オプションおよびマイクロ・オプション

MODEオプションは複数のオプションを同時に制御します。MODEはマクロ・オプションとも呼ばれます。CLOSE_ON_COMMIT、DYNAMICおよびTYPE_CODEなどのより新しいオプションは1つの関数のみを制御し、マイクロ・オプションとして知られています。マクロ・オプションは、高い優先順位が付けられている場合にのみ、マイクロ・オプションより優先されます。オプション値の優先順位を参照してください。

次の表は、マクロ・オプション値によって設定されるマイクロ・オプションの値を示しています。

表10-1 マクロ・オプション値によりマイクロ・オプション値が設定される方法

マクロ・オプション マイクロ・オプション

MODE=ANSI | ISO

CLOSE_ON_COMMIT=YES

DYNAMIC=ANSI

TYPE_CODE=ANSI

MODE=ORACLE

CLOSE_ON_COMMIT=NO

DYNAMIC=ORACLE

TYPE_CODE=ORACLE

ユーザー構成ファイルでMODE=ANSIとCLOSE_ON_COMMIT=NOの両方を指定すると、COMMITしてもカーソルはクローズしません。構成ファイルでMODE=ORACLEを指定し、コマンドラインでCLOSE_ON_COMMIT=YESを指定すると、カーソルはクローズします。

プリコンパイル中の状況

プリコンパイル時に、ホスト・プログラムに埋め込まれているSQL文は、Pro*C/C++が生成するCまたはC++のコードに置換されます。生成されたコードには、データ型、データ長、ホスト変数のアドレスを示すデータ構造や、ランタイム・ライブラリであるSQLLIBに必要なその他の情報も含まれています。このコードには、埋込みSQLの動作を実行するSQLLIBルーチンに対するコールも含まれています。

注意:

プリコンパイラでは、Oracle Call Interface(OCI)に対するコールは生成されません

表10-2は主なプリコンパイラ・オプションのクイック・リファレンスです。受入れ可能でも効力を持たないオプションは、この表には記載されていません。

関連項目:

オプションの有効範囲

プリコンパイル・ユニットは、Cコードと1つ以上の埋込みSQL文を含むファイルです。特定のプリコンパイル・ユニットに対して指定したオプションは、そのプリコンパイル・ユニットにのみ効力を持ちます。たとえば、ユニットAに対してHOLD_CURSOR=YESおよびRELEASE_CURSOR=YESを指定し、ユニットBには指定しなければ、ユニットAのSQL文はこれらのHOLD_CURSOR値およびRELEASE_CURSOR値を使用して実行されますが、ユニットBのSQL文はデフォルト値を使用して実行されます。

Windowsプラットフォーム用Pro*C/C++プリコンパイラの問題

この項では、Windowsプラットフォーム用Pro*C/C++関連の問題について説明します。

構成ファイル

このリリースでは、システム構成ファイルをpcscfg.cfgと呼びます。このファイルは、ORACLE_HOME\precomp\adminディレクトリにあります。

CODE

CODEオプションのデフォルト設定はANSI_Cです。他のオペレーティング・システム用のPro*C/C++では、デフォルト設定がKR_Cになっている場合があります。

DBMS

DBMS=V6_CHARは、CHAR_MAP=VARCHAR2使用時にサポートされません。かわりに、DBMS=V7を使用します。

INCLUDE

PARSE=PARTIALまたはPARSE=FULLでプリコンパイルするサンプル・プログラムの場合、c:\program files\devstudio\vc\includeのインクルード・パスが追加されています。Microsoft Visual Studioが別の場所にインストールされている場合、サンプル・プログラムで正しくプリコンパイルするために、「インクルード・ディレクトリ」フィールドを適宜変更します。

PARSE

PARSEオプションのデフォルト設定はNONEです。他のオペレーティング・システム用のPro*C/C++では、デフォルト設定がFULLになっている場合があります。