ヘッダーをスキップ

Pro*COBOL プログラマーズ・ガイド
10gリリース2(10.2)
E05652-01
目次
目次
索引
索引

戻る 次へ

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

この章ではPro*COBOLのプリコンパイラ・オプションを説明します。この章の構成は、次のとおりです。

procobコマンド

Pro*COBOLは、システムごとに異なった場所に格納されます。通常は、システム管理者かDBAが、環境変数または別名を定義するか、あるいはオペレーティング・システム固有のその他の方法を使用して、Pro*COBOLの実行可能ファイルをアクセス可能にします。

Oracle Pro*COBOLプリコンパイラを実行するには、次のコマンドを使用します。

procob [option_name=value] [option_name=value] ... 

オプション名とオプション値の間には必ず等号(=)を置きます。等号の前後には空白を入れないでください。

たとえば、プリコンパイルするソース・ファイルの指定には、INAMEオプションを使用します。次のコマンドを実行するとします。

procob INAME=test

Pro*COBOLはファイル拡張子を.pcoとみなすため、カレント・ディレクトリ内のファイルtest.pcoがプリコンパイルされます。

このように、INAMEの指定でファイル拡張子を使用する必要はありません(ただし、ファイル拡張子が標準以外の場合には拡張子を指定する必要があります)。

入力ファイル名および出力ファイル名を、それぞれのオプション名INAMEおよびONAMEとともに指定する必要はありません。オプション名を指定しない場合、Pro*COBOLはコマンドラインに指定された最初のファイル名を入力ファイル名とみなし、2番目のファイル名を出力ファイル名とみなします。

たとえば、次のコマンドを実行するとします。

procob MODE=ANSI myfile myfile.cob

このコマンドは、次のコマンドに相当します。

procob MODE=ANSI INAME=myfile.pco ONAME=myfile.cob

大/小文字区別

一般に、コマンドライン・オプションの名前および値には、大文字と小文字のどちらも使用できます。ただし、大/小文字を区別するオペレーティング・システム(UNIXなど)を使用している場合は、Pro*COBOLの実行可能ファイルの名前も含めて、ファイル名は大文字と小文字を正しく組み合せて指定してください。


注意:

ファイル名などのように、特定のオペレーティング・システム・オブジェクトを指定しないオプション名やオプション値では、大文字と小文字は区別されません。このマニュアル中の例では、オプション名は大文字または小文字で記述し、オプション値は通常は小文字で記述しています。ファイル名を指定する場合は、Pro*COBOLの実行可能ファイルも含めて、それを実行するオペレーティング・システムの大/小文字区別の規則に従ってください。 


UNIX Cシェルなどの一部のオペレーティング・システムおよびユーザー・シェルでは、?の前にバックスラッシュ(\)などのエスケープ文字を指定する必要があります。たとえば、Pro*COBOLのオプション設定を示すには、procob?のかわりにprocob \?を使用する必要があります。

プラットフォーム固有のマニュアルを参照してください。

プリコンパイル時のアクション

Pro*COBOLは、プリコンパイル中に、ホスト・プログラムに埋め込まれたSQL文に置き換わるCOBOLのコードを生成します。生成されたコードには、各ホスト変数のデータ型、長さ、アドレスなどデータ構造の他、Oracleランタイム・ライブラリSQLLIBが必要とするその他の情報が組み込まれています。またこのコードには、埋込みSQLの処理を実行するSQLLIBルーチンのコールも入っています。

Pro*COBOLは警告やエラー・メッセージを発行することがあります。これらのメッセージは、『Oracle Databaseエラー・メッセージ』で説明されています。

オプションについて

プリコンパイル時には数多くの便利なオプションを使用できます。それらを使用して、リソースの使用、エラーの報告、入出力の書式化およびカーソルの管理を制御できます。

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

... INAME=my_test

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

また、次のオプションを指定するとします。

... PREFETCH=100

この値は数値です。

オプションの中にはブール値をとるものもあります。ブール値には、文字列YESまたはNO、TRUEまたはFALSE、整数リテラル1または0を指定できます。たとえば、次のオプションを指定するとします。

... SELECT_ERROR=YES

このオプションは、次のオプションに相当します。

... SELECT_ERROR=TRUE

または

... SELECT_ERROR=1

等号(=)の前後に空白は入れません。空白によって個々のオプションが区切られるためです。たとえば、次のように、コマンドラインにオプションAUTO_CONNECTを指定できます。

... AUTO_CONNECT=YES

オプション名には略称を使用できますが、他と区別がつかなくなる略称は使用しないでください。たとえば、MAXの略称はMAXLITERALとMAXOPENCURSORSのどちらを表すのかわからないため、使用できません。

Pro*COBOLオプションの参考資料は、オンラインで簡単に見ることができます。オンライン表示するには、オペレーティング・システムのプロンプトから、引数を指定せずにPro*COBOLコマンドを入力します。

procob

オンライン画面には、各オプションの名前および、構文、デフォルト値および用途が表示されます。アスタリスク(*)が付いたオプションは、コマンドラインでもインラインでも指定できます。

オプション値の優先順位

オプションの値は、次の値によって決まります(下にいくほど優先順位が高くなります)。

たとえば、オプションMAXOPENCURSORSはキャッシュ内のオープン・ カーソルの最大数を指定します。Pro*COBOLに組み込まれているこのオプションのデフォルト値は10です。システム構成ファイルにMAXOPENCURSORS=32が指定されている場合は、値は32になります。ユーザー構成ファイルの設定値は変更できます。変更すると、システム構成値が上書きされます。

MAXOPENCURSORSオプションをコマンドラインで設定した場合には、新しいコマンドラインの値が優先されます。最終的には、インライン指定が前述のすべてのデフォルト値よりも優先されます。詳細は、「プリコンパイラ・オプションの入力」を参照してください。

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

オプションMODEはマクロ・オプションです。新しいオプションの中には、END_OF_FETCHのように、1つの機能のみを制御するものがあります。このようなオプションをマイクロ・オプションと呼びます。マクロ・オプションおよびマイクロ・オプションを設定する場合、マクロ・オプションがマイクロ・オプションに優先されるように注意する必要があります。マクロ・オプションの優先順位がマイクロ・オプションより高い場合にのみ、マクロ・オプションが優先されます。(詳細は、「オプション値の優先順位」を参照。)この点は、リリース8.0より前のPro*COBOLとは動作が異なります。

たとえば、MODEのデフォルトはORACLEです。また、END_OF_FETCHのデフォルトは1403です。ユーザー構成ファイルにMODE=ANSIを指定した場合は、Pro*COBOLからフェッチの最後に値100が戻され、END_OF_FETCHのデフォルト値1403が上書きされます。また、構成ファイルでEND_OF_FETCH=1403と指定し、コマンドラインでMODE=ANSIと指定した場合は、100が戻されます。

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

表14-1    マクロ・オプション値によるマイクロ・オプション値の設定 
マクロ・オプション  マイクロ・オプション 

MODE=ANSI | ISO 

CLOSE_ON_COMMIT=YES

DECLARE_SECTION=YES

END_OF_FETCH=100

DYNAMIC=ANSI

TYPE_CODE=ANSI 

MODE=ANSI14 | ANSI13 | ISO14 | ISO13 

CLOSE_ON_COMMIT=NO

DECLARE_SECTION=YES

END_OF_FETCH=100 

MODE=ORACLE 

CLOSE_ON_COMMIT=NO

DECLARE_SECTION=NO

END_OF_FETCH=1403

DYNAMIC=ORACLE

TYPE_CODE=ORACLE 

カレント値の決定

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

procob ?

すべてのオプションの設定およびそのカレント値が端末に表示されます。この場合、表示される値はPro*COBOLに組み込まれている値ですが、システム構成ファイルに値が指定されている場合は構成ファイル内の値が表示されます。一方、次のコマンドを発行したとします。

procob CONFIG=my_config_file.cfg ?

カレント・ディレクトリにmy_config_file.cfgの名前のファイルがあると、my_config_file.cfgファイルに指定されているオプションが、その他のデフォルト値とともに表示されます。ユーザー構成ファイル内で指定された値はここでは表示されません。また、ユーザー構成ファイルに指定された値は、Pro*COBOLに組み込まれている値やシステム構成ファイルに指定されている値より優先されます。

次のようにオプション名の後に=?を指定して、シングル・オプションのカレント値を指定することもできます。

procob MAXOPENCURSORS=?

プリコンパイラ・オプションの入力

CONFIG以外のPro*COBOLのオプションはすべて、コマンドラインまたは構成ファイルから入力できます。また、インラインで入力できるオプションも多数あります。Pro*COBOLは実行時に、これら3つのソースのオプションをすべて受け入れます。

コマンドライン

... [option_name=value] [option_name=value] ...を使用して、コマンドラインからプリコンパイラ・オプションを入力できます。


オプションとオプションの間は、1つ以上の空白で区切ります。たとえば、次のようにオプションを入力できます。

... ERRORS=no LTYPE=short 

インライン

次の構文を使用してEXEC ORACLE OPTION文を記述すると、オプションをインライン入力できます。

     EXEC ORACLE OPTION (option_name=value) END-EXEC. 

たとえば、次のような文をコーディングできます。

     EXEC ORACLE OPTION (RELEASE_CURSOR=YES) END-EXEC. 

インラインでオプションを入力すると、コマンドラインから入力された同じオプションは無効になります。

長所

EXEC ORACLE機能は、プリコンパイル中にオプション値を変更する場合に特に便利です。たとえば、文ごとにHOLD_CURSOR値およびRELEASE_CURSOR値を変更することがあります。この場合、付録C「パフォーマンス・チューニング」を参照してください。実行時のパフォーマンスを最適化するための、インライン・オプションの使用方法が記載されています。

インラインでのオプションの指定は、使用しているオペレーティング・システムでコマンドラインに入力できる文字数に制限がある場合にも便利です。また、インライン・オプションは構成ファイルに格納できます。これについては次の項で説明します。

EXEC ORACLEのスコープ

EXEC ORACLE文は、同一オプションを指定した別のEXEC ORACLE文によってオプション指定値(テキスト)が変更されるまで有効です。次の例では、HOLD_CURSOR=NOはHOLD_CURSOR=YESが指定されるまで有効です。

     EXEC SQL BEGIN DECLARE SECTION END-EXEC. 
 01  EMP-NAME    PIC X(20) VARYING.
 01  EMP-NUMBER  PIC S9(4) COMP VALUE ZERO.
 01  SALARY      PIC S9(5)V99 COMP-3 VALUE ZERO.
 01  DEPT-NUMBER PIC S9(4) COMP VALUE ZERO.
     EXEC SQL END DECLARE SECTION END-EXEC. 
     ... 
     EXEC SQL WHENEVER NOT FOUND GOTO NO-MORE END-EXEC. 
     ...
     EXEC ORACLE OPTION (HOLD_CURSOR=NO)END-EXEC. 
     ...
     EXEC SQL DECLARE emp_cursor CURSOR FOR 
        SELECT EMPNO, DEPTNO FROM EMP 
     END-EXEC.
     EXEC SQL OPEN emp_cursor END-EXEC.
  
     DISPLAY 'Employee Number  Dept'.
     DISPLAY '---------------  ----'.
     PERFORM
         EXEC SQL
           FETCH emp_cursor INTO :EMP-NUMBER, :DEPT-NUMBER
         END-EXEC 
         DISPLAY EMP-NUMBER, DEPT-NUMBER END-EXEC
     END-PERFORM. 

 NO-MORE.
         EXEC SQL WHENEVER NOT FOUND CONTINUE END-EXEC. 
     PERFORM
         DISPLAY 'Employee number? ' 
         ACCEPT EMP-NUMBER 
         IF EMP-NUMBER IS NOT = 0 
             EXEC ORACLE OPTION (HOLD_CURSOR=YES) END-EXEC 
             EXEC SQL SELECT ENAME, SAL 
                 INTO :EMP-NAME, :SALARY 
                 FROM EMP 
                 WHERE EMPNO = :EMP-NUMBER 
                 DISPLAY 'Salary for ', EMP-NAME, ' is ', SALARY
             END-EXEC 
         END-IF
     END-PERFORM. 
  NEXT-PARA.
     ... 

構成ファイル

構成ファイルは、プリコンパイラ・オプションを格納するテキスト・ファイルです。ファイルのそれぞれのレコード(行)には、1つのオプションおよび対応付けられた値が入ります。たとえば、構成ファイルに次のような行が入っているとします。

FIPS=YES
MODE=ANSI

これらの行によってFIPSオプションとMODEオプションの値が設定されています。

システムにはそれぞれ1つのシステム構成ファイルがあります。システム構成ファイルの名前は次のとおりです。

pcbcfg.cfg

システム構成ファイルの位置はオペレーティング・システムによって異なります。ほとんどのUNIXシステムでは、Pro*COBOL構成ファイルは通常、$ORACLE_HOME/precomp/adminディレクトリにあります($ORACLE_HOMEはデータベース・ソフトウェアの環境変数です)。

リリース8.0より前のPro*COBOLでは、構成ファイル名はpccob.cfgであることに注意してください。

Pro*COBOLのユーザーは1つ以上のユーザー構成ファイルを持つことができます。ユーザー構成ファイルの名前はCONFIGオプションを使用してコマンドラインで指定します。詳細は、「カレント値の決定」を参照してください。


注意:

構成ファイルはネストできません。つまり、CONFIGは構成ファイル内では有効なオプションではありません。 


プリコンパイラ・オプションのスコープ

プリコンパイル・ユニットは、COBOLコードおよび1つ以上の埋込みSQL文が入っている1つのファイルです。特定のプリコンパイル・ユニットに対して指定したオプションは、そのプリコンパイル・ユニットにのみ効力を持ちます。

たとえば、単位AにHOLD_CURSOR=YESおよびRELEASE_CURSOR=YESを指定し、単位Bには指定しなかった場合、単位AのSQL文は指定したHOLD_CURSORおよびRELEASE_CURSORの値で実行されますが、単位BのSQL文はデフォルト値で実行されます。ただし、Oracleに接続した時点で有効であったMAXOPENCURSORSの設定は、その接続を切り離すまで有効です。

インライン・オプションのスコープは論理的なものではなく、位置的なものです。つまり、インライン・オプションの影響を受けるのは、プログラム・ロジックの流れでそのインライン・オプションの後にくるSQL文ではなく、ソース・ファイル内でそのインライン・ オプションの後に記述されているSQL文です。オプションの設定は、そのオプションを再指定しないかぎり、ファイルの終わりまで有効です。

クイック・リファレンス

表14-2は、Pro*COBOLオプションのクイック・リファレンスを示しています。アスタリスクが付いているオプションは、インラインで入力できます。

また、オンラインでも簡単な参照ができます。オンライン画面でPro*COBOLオプションを表示するには、オペレーティング・システムのプロンプトに、オプションを指定せずにPro*COBOLコマンドを入力します。オンライン画面には、各オプションの名前および、構文、デフォルト値および用途が表示されます。


注意:

プラットフォーム固有のオプションもいくつかあります。たとえば、バイトスワップ・プラットフォームでは、オプションCOMP5によってCOMPUTATIONAL項目の使用を管理します。使用しているシステム固有のOracleマニュアルを参照してください。 


表14-2    オプション・リスト 
構文  デフォルト値  指定内容 

ASACC={YES | NO} 

NO 

YESの場合は、リスト・ファイルにASAキャリッジ制御を使用します。 

ASSUME_SQLCODE={YES | NO} 

NO 

YESの場合は、SQLCODE変数が存在するものとみなします。 

AUTO_CONNECT={YES | NO} 

NO 

YESの場合は、最初の実行文の前に、ops$アカウントに自動的に接続できます。 

CLOSE_ON_COMMIT 

NO 

YESの場合は、COMMIT時にすべてのカーソルをクローズします。 

CONFIG=filename 

(なし) 

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

DATE_FORMAT 

LOCAL 

日付文字列フォーマットを指定します。 

DBMS={NATIVE | V7 | V8} 

NATIVE 

プリコンパイル時にみられるOracleのバージョン固有の動作です。 

DECLARE_SECTION 

NO 

YESの場合は、DECLARE SECTIONが必須となります。 

DEFINE=symbol

(なし) 

条件付きプリコンパイルで使用する記号を定義します。 

DYNAMIC 

ORACLE 

SQL方法4で、OracleまたはANSI動的セマンティクスを指定します。 

END_OF_FETCH 

1403 

フェッチ終了時のSQLCODEの値。 

ERRORS={YES | NO} * 

YES 

YESの場合は、端末にエラーを表示します。 

FIPS={YES | NO} 

NO 

YESの場合は、ANSI/ISOの拡張機能にフラグを付けます。 

FORMAT={ANSI | TERMINAL} 

ANSI 

入力ファイルのCOBOL文の書式。 

HOLD_CURSOR={YES | NO}* 

NO 

YESの場合は、Oracleカーソルを保持します(再割当てしません)。 

HOST={COBOL | COB74} 

COBOL 

入力ファイルで使用するCOBOLのバージョン(COBOL 85またはCOBOL 74)。 

[INAME=]filename 

(なし) 

入力ファイルの名前。 

INCLUDE=path

(なし) 

EXEC SQL INCLUDEファイルのパス名。 

IRECLEN=integer 

80 

入力ファイルのレコード長。 

LITDELIM={APOST | QUOTE} 

QUOTE 

COBOL文字列のデリミタ。 

LNAME=filename 

(なし) 

リスト・ファイルの名前。 

LRECLEN=integer 

132 

リスト・ファイルのレコード長。 

LTYPE={LONG | SHORT | NONE} * 

LONG 

リスト・ファイルの型。 

MAXLITERAL=integer

1024 

文字列の最大長。 

MAXOPENCURSORS=integer

10 

キャッシュされるOracleカーソルの最大数(1)。 

MODE={ORACLE | ANSI} 

ORACLE 

ANSIの場合は、ANSI/ISO SQL規格に準拠します。 

NESTED={YES | NO} 

YES 

YESの場合は、ネストしたプログラムがサポートされます。 

NLS_LOCAL={YES | NO} 

NO 

YESの場合は、Pro*COBOLの旧リリースのNCHAR方法を使用します。 

[ONAME=]filename 

iname.cob 

出力ファイルの名前。 

ORACA={YES | NO}* 

NO 

YESの場合は、ORACAコミュニケーション領域を使用します。 

ORECLEN=integer 

80 

出力ファイルのレコード長。 

PAGELEN=integer 

66 

リスト・ファイルの1ページ当たりの行数。 

PICX 

CHARF 

PIC X COBOL変数のデータ型。 

PREFETCH 

一定数の行をプリフェッチして、問合せを高速化します。 

RELEASE_CURSOR={YES | NO} * 

NO 

YESの場合は、実行後にOracleカーソルを解放します。 

SELECT_ERROR={YES | NO}* 

YES 

YESの場合は、SELECT時にFOUNDエラーが発生します。 

SQLCHECK={SEMANTICS | SYNTAX}* 

SYNTAX 

SQLチェックのレベル。 

THREADS={YES | NO} 

NO 

マルチスレッド・アプリケーションを示します。 

TYPE_CODE 

ORACLE 

動的SQL方法4の場合は、OracleまたはANSI型コードを使用します。 

UNSAFE_NULL={YES | NO} 

NO 

YESの場合は、安全でないNULLのフェッチが可能になります(ORA-01405メッセージが発行されなくなります)。 

USERID=username/password[@dbname] 

(なし) 

Oracleのユーザー名、パスワードおよびオプショナル・データベース。 

VARCHAR={YES | NO} 

NO 

YESの場合は、ユーザー定義のVARCHARグループ項目を受け入れます。 

XREF={YES | NO}* 

YES 

YESの場合は、リスト・ファイル内に記号のクロス・リファレンスを生成します。 

Pro*COBOLプリコンパイラ・オプションの使用

この項は、プリコンパイラ・オプションを簡単に参照できるように構成されています。Pro*COBOLプリコンパイラ・オプションをアルファベット順に示し、各オプションごとに用途、構文およびデフォルト値を記載してあります。さらに「使用上の注意」で、オプションについて説明します。使用上の注意に特に記載がない場合、そのオプションはコマンドライン、インラインまたは構成ファイルのどの方法でも入力できます。

ASACC

用途

リスト・ファイルがASA規則に従って、キャリッジ制御のために各行の最初の桁を使用するかどうかを指定します。

構文

ASACC={YES | NO}

デフォルト値

NO

使用上の注意

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

ASSUME_SQLCODE

用途

SQLCODEがプログラムで宣言されているかどうか、また、型が正しいかどうかに関係なく、SQLCODEが宣言されているとみなすようにPro*COBOLに指示します。

構文

ASSUME_SQLCODE={YES | NO}

デフォルト値

NO

使用上の注意

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

DECLARE_SECTION=YESの場合にASSUME_SQLCODE=YESと指定すると、SQLCODEを宣言部の外で宣言できます。

DECLARE_SECTION=YESの場合にASSUME_SQLCODE=NOと指定すると、次の基準のうち少なくとも1つが満たされた場合にのみ、SQLCODEは状態変数として認識されます。

ASSUME_SQLCODE=YESと指定した場合は、SQLSTATEまたはSQLCAあるいはその両方が状態変数として宣言されると、SQLCODEが宣言されているかどうか、また正しい型かどうかに関係なく、Pro*COBOLはSQLCODEが宣言されているものとみなします。

AUTO_CONNECT

用途

プログラムをデフォルトのユーザー・アカウントに自動的に接続するかどうかを指定します。

構文

AUTO_CONNECT={YES | NO}

デフォルト値

NO

使用上の注意

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

AUTO_CONNECT=YESと指定した場合、Pro*COBOLが実行SQL文を検出すると同時に、ユーザー・プログラムは自動的に次のユーザーIDでOracleにログインを試みます。

<prefix><username>

<prefix>にはOracle初期化パラメータOS_AUTHENT_PREFIXの値(デフォルト値はOPS$)を指定し、<username>には使用しているオペレーティング・システムのユーザー名またはタスク名を指定します。この場合、コマンドラインに別の値を指定しても、MAXOPENCURORS(10)のデフォルト値は変更できません。

AUTO_CONNECT=NO(デフォルト)の場合は、OracleにログインするにはCONNECT文を使用する必要があります。

CHARSET_PICX

用途

SELECT、INSERTまたはUPDATE文で使用されるPIC X変数に使用するキャラクタ・セットの形式を指定します。

構文

CHARSET_PICX={NCHAR_CHARSET | DB_CHARSET }

デフォルト値

DB_CHARSET

使用上の注意

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

CHARSET_PICX = NCHAR_CHARSETと指定した場合、PIC Xバインド・バッファまたは定義バッファは、サーバー側の各国語キャラクタ・セットに従って変換されます。ターゲット列がCHARの場合は、パフォーマンスに影響を及ぼす可能性があります。同様に、CHARSET_PICX = DB_CHARSETと指定した場合、PIC Xバインド・バッファまたは定義バッファは、サーバー側のデータベース・キャラクタ・セットに従って変換されます。ターゲット列がNCHARの場合は、一部のデータが失われる可能性があります。

CHARSET_PICN

用途

SELECT、INSERTまたはUPDATE文で使用されるPIC N変数に使用するキャラクタ・セットの形式を指定します。

構文

CHARSET_PICN={NCHAR_CHARSET | DB_CHARSET }

デフォルト値

NCHAR_CHARSET

使用上の注意

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

CHARSET_PICN = DB_CHARSETと指定した場合、PIC Nバインド・バッファまたは定義バッファは、サーバー側のデータベース・キャラクタ・セットに従って変換されます。ターゲット列がNCHARの場合は、一部のデータが失われる可能性があります。同様に、CHARSET_PICN = NCHAR_CHARSETと指定した場合、PIC Nバインド・バッファまたは定義バッファは、サーバー側の各国語キャラクタ・セットに従って変換されます。ターゲット列がCHARの場合は、パフォーマンスに影響を及ぼす可能性があります。

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句を使用せずに宣言されているカーソルはすべて、コミット時にクローズされます。

COMMITまたはROLLBACKを発行すると、明示カーソルがすべてクローズされます。(MODE=ORACLEの場合は、コミットまたはロールバックを発行するとCURRENT OF句で参照されているカーソルのみクローズされます。)

このオプションの優先順位の詳細は、「マクロ・オプションおよびマイクロ・オプション」を参照してください。

CONFIG

用途

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

構文

CONFIG=filename

デフォルト値

なし

使用上の注意

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

Pro*COBOLは、コマンドライン・オプションがあらかじめ設定されている構成ファイルを使用できます。ユーザー構成ファイルと呼ばれる代替ファイルも指定できます。詳細は、「プリコンパイラ・オプションの入力」を参照してください。

構成ファイルはネストできません。したがって、構成ファイルはオプションCONFIGを指定できません。

DATE_FORMAT

用途

日付が戻される文字列フォーマットを指定します。

構文

DATE_FORMAT={ISO | USA | EUR | JIS | LOCAL | 'fmt'(デフォルト LOCAL)}

デフォルト値

LOCAL

使用上の注意

コマンドラインまたは構成ファイルからのみ入力できます。指定できる日付文字列を次の表に示します。

表14-3    日付文字列用の書式 
書式名  略称  日付書式 

国際標準化機構規格 

ISO 

yyyy-mm-dd 

USA標準 

USA 

mm/dd/yyyy 

ヨーロッパ標準 

EUR 

dd.mm.yyyy 

日本工業規格 

JIS 

yyyy-mm-dd 

インストール定義 

LOCAL 

インストール時に定義した任意の書式 

'fmt'は、「Month dd, yyyy」などの日付書式モデルです。日付書式モデル要素のリストは、『Oracle Database SQLリファレンス』を参照してください。

DATE_FORMATオプションの使用方法には、制限が1つあります。コンパイルした単位を後でリンクする場合、すべての単位が同じDATE_FORMAT値を使用している必要があります。コンパイル単位間でDATE_FORMATの値に不一致があると、エラーが発生します。

DBMS

用途

Oracleの意味上および構文上の規則を、Oracle7データベース、Oracle8i 、Oracle9i またはOracleのネイティブ・バージョン(アプリケーションが接続されているバージョン)のうちどの規則に合わせるかを指定します。

構文

DBMS={V7 | V8 | NATIVE}

デフォルト値

NATIVE

使用上の注意

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

DBMSオプションを使用して、Oracleのバージョン固有の動作を制御できます。DBMS=NATIVE(デフォルト)の場合、Oracleは、Oracleのネイティブ・バージョンの意味および構文上の規則に従います。

DECLARE_SECTION

用途

宣言部内の宣言のみホスト変数として使用するかどうかを指定します。

構文

DECLARE_SECTION={YES | NO}

デフォルト値

NO

使用上の注意

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

Pro*COBOLリリース8.0以降では、MODE=ORACLEであれば、BEGIN DECLARE SECTION文とEND DECLARE SECTION文は省略できます。DECLARE_SECTIONオプションは、旧リリースとの下位互換性のために用意されています。DECLARE_SECTIONはMODEのマイクロ・オプションです。

このオプションを使用すると、MODE=ORACLEとDECLARE_SECTION=YESを一緒に指定でき、旧リリースでMODE=ORACLEのみ指定した場合と同じ結果が得られます。(DECLARE文で宣言した変数のみ、ホスト変数として使用できます。)このオプションの優先順位の詳細は、「オプション値の優先順位」を参照してください。

DEFINE

用途

条件付きプリコンパイル時にソース・コードの一部組込みまたは除外を行うために使用する、ユーザー定義の記号を指定します。詳細は、「条件付きプリコンパイル」を参照してください。

構文

DEFINE=symbol

デフォルト値

なし

使用上の注意

DEFINEをインラインで入力する場合のEXEC ORACLE文の書式は次のとおりです。

EXEC ORACLE DEFINE symbol END-EXEC.

DYNAMIC

用途

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

構文

DYNAMIC={ORACLE | ANSI}

デフォルト値

ORACLE

使用上の注意

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

DYNAMICオプションの設定については、「ANSI動的SQLのプリコンパイラ・オプション」を参照してください。

END_OF_FETCH

用途

このMODEマイクロ・オプションは、SQL文の実行後にEND-OF-FETCH条件が発生した場合に戻されるSQLCODE値を指定します。

構文

END_OF_FETCH={100 | 1403}

デフォルト値

1403

使用上の注意

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

END_OF_FETCHはMODEのマイクロ・オプションです。詳細は、「マクロ・オプションおよびマイクロ・オプション」を参照してください。

構成ファイルでMODE=ANSIと指定した場合、END_OF_FETCH条件が発生すると、Pro*COBOLはSQLCODE値100を戻し、END_OF_FETCHのデフォルト値である1403をオーバーライドします。

構成ファイルでMODE=ANSIとEND_OF_FETCH=1403の両方を指定した場合は、END_OF_FETCH条件が発生すると、Pro*COBOLはSQLCODE値1403を戻します。

構成ファイルでMODE=ANSIと指定し、構成ファイルよりも優先順位の高いコマンドラインでEND_OF_FETCH=1403と指定した場合も、END_OF_FETCH条件が発生するとPro*COBOLはSQLCODE値1403を戻します。

ERRORS

用途

Pro*COBOLのエラー・メッセージを、端末およびリスト・ファイルの両方に送るか、リスト・ファイルにのみ送るかを指定します。

構文

ERRORS={YES | NO}

デフォルト値

YES

使用上の注意

ERRORS=YESと指定すると、エラー・メッセージは端末とリスト・ファイルの両方に送られます。

ERRORS=NOのときは、エラー・メッセージはリスト・ファイルにのみ送られます。

FIPS

用途

ANSI/ISO SQLの拡張機能に(FIPSフラガーによって)フラグを付けるかどうかを指定します。拡張機能とは、ANSI/ISOの形式または構文規則(権限付与規則は除く)に従っていないSQL要素のことです。

構文

FIPS={YES | NO}

デフォルト値

NO

使用上の注意

FIPS=YESの場合は、ANSI/ISOに組み込まれたSQL規格(SQL92)からのOracle拡張機能を使用したり、SQL92の機能を規格に準拠しない方法で使用すると、FIPSフラガーは警告メッセージを発行します(エラー・メッセージではありません)。

プリコンパイル時に、次に示すANSI/ISO SQLの拡張機能にフラグが付きます。

FORMAT

用途

COBOL文の書式を指定します。

構文

FORMAT={ANSI | TERMINAL}

デフォルト値

ANSI

使用上の注意

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

入力行の書式はシステムによって異なります。システム固有のOracleのマニュアルまたはCOBOLコンパイラをチェックしてください。

FORMAT=ANSIと指定した場合、入力行の書式はCOBOLに関する現行のANSI規格にできるかぎり準拠しているものと解釈されます。FORMAT=TERMINALと指定した場合、入力行は列1から始まります。このマニュアルのサンプル・コードはTERMINAL書式内にあります。詳細は、「コーディング領域」を参照してください。

HOLD_CURSOR

用途

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

構文

HOLD_CURSOR={YES | NO}

デフォルト値

NO

使用上の注意

HOLD_CURSORを使用すると、プログラムのパフォーマンスを改善できます。詳細は、付録C「パフォーマンス・チューニング」を参照してください。

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

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

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

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

HOLD_CURSORおよびRELEASE_CURSORオプションの相互動作に関する詳細は、付録C「パフォーマンス・チューニング」表C-1「HOLD_CURSORおよびRELEASE _CURSORの相互関係」を参照してください。

HOST

用途

使用するホスト言語を指定します。

構文

HOST={COB74 | COBOL}

デフォルト値

COBOL

使用上の注意

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

COB74は、ANSI承認COBOLの1974版を表します。COBOLは、1985版を表します。プラットフォームによっては、これ以外の値も使用できます。

INAME

用途

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

構文

INAME=filename

デフォルト値

なし

使用上の注意

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

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

コマンドラインから入力ファイルの名前を指定する場合は、キーワードINAMEは省略できます。たとえば、Pro*COBOLでは、INAME=myprog.pcoと指定するかわりにmyprog.pcoと指定できます。

このように、INAMEの指定でファイル拡張子を使用する必要はありません(ただし、ファイル拡張子が標準以外の場合には拡張子を指定する必要があります)。UNIXプラットフォームでは、Pro*COBOLはデフォルトの入力ファイル拡張子pcoを使用します。

INCLUDE

用途

EXEC SQL INCLUDEファイルのディレクトリ・パスを指定します。このオプションは、ディレクトリを使用するオペレーティング・システム専用です。

構文

INCLUDE=path

デフォルト値

カレント・ディレクトリ

使用上の注意

通常、INCLUDEはSQLCAファイルおよびORACAファイルのディレクトリ・パスを指定するために使用します。Pro*COBOLは、最初にカレント・ディレクトリを検索し、次にINCLUDEで指定されたディレクトリを検索して、最後に標準INCLUDEファイル用のディレクトリを検索します。このため、SQLCAやORACAなどの標準ファイルのディレクトリ・パスを指定する必要はありません。

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

... INCLUDE=path1 INCLUDE=path2 ... 

Pro*COBOLは、最初にカレント・ディレクトリを検索し、次にpath1で指定されたディレクトリを検索し、続いてpath2で指定されたディレクトリを検索して、最後に標準INCLUDEファイル用のディレクトリを検索します。


注意:

ディレクトリ・パスを指定しても、Pro*COBOLは最初にカレント・ディレクトリを検索します。このため、INCLUDEするファイルがカレント・ディレクトリ以外の場所に存在する場合は、同じ名前のファイルがカレント・ディレクトリに存在しないことを確認してください。 


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

IRECLEN

用途

入力ファイルのレコード長を指定します。

構文

IRECLEN=integer

デフォルト値

80

使用上の注意

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

IRECLENには、ORECLENの値より大きい値は指定できません。指定可能な最大値はシステムによって異なります。

LITDELIM

用途

LITDELIMオプションは、Pro*COBOLが生成するCOBOLコード内の文字列定数およびリテラルのデリミタを指定します。

構文

LITDELIM={APOST | QUOTE}

デフォルト値

QUOTE

使用上の注意

LITDELIM=APOSTと指定すると、Pro*COBOLはCOBOLコードを生成するときに引用符を使用します。LITDELIM=QUOTEを指定すると、次に示すように二重引用符が使用されます。

     CALL "SQLROL" USING SQL-TMP0. 

SQL文では、次の例に示すように、特殊文字または小文字を含んでいる識別子は二重引用符で区切る必要があります。

     EXEC SQL CREATE TABLE "Emp2" END-EXEC. 

また、文字列定数を区切る場合は、次の例のように引用符を使用します。

     EXEC SQL SELECT ENAME FROM EMP WHERE JOB = 'CLERK' END-EXEC.

Pro*COBOLは、Pro*COBOLソース・ファイルで使用されているデリミタに関係なく、LITDELIMの値で指定されたデリミタを使用します。

LNAME

用途

リスト・ファイルのデフォルト以外の名前を指定します。

構文

LNAME=filename

デフォルト値

入力します。

使用上の注意

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

デフォルトでは、リスト・ファイルはカレント・ディレクトリに作成されます。

LRECLEN

用途

リスト・ファイルのレコード長を指定します。

構文

LRECLEN=integer

デフォルト値

132

使用上の注意

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

LRECLENの値の範囲は、80〜132です。80未満の値を指定した場合は、80がセットされます。この範囲より大きい値を指定すると、エラーが発生します。行番号を挿入できるように、LRECLENの値がIRECLENより8以上大きくなるように指定してください。

LTYPE

用途

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

構文

LTYPE={LONG | SHORT | NONE}

デフォルト値

LONG

使用上の注意

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

表14-4    リスト・ファイルの型 
リスト・ファイルの型  説明 

LTYPE=LONG 

リスト・ファイルに入力行が表示されます。 

LTYPE=SHORT 

リスト・ファイルに入力行は表示されません。 

LTYPE=NONE 

リスト・ファイルが作成されません。 

MAXLITERAL

用途

コンパイラの制限を超えないように、Pro*COBOLが生成する文字列リテラルの最大長を指定します。たとえば、コンパイラが132文字より長い文字列リテラルを処理できない場合は、コマンドラインにMAXLITERAL=132と指定します。

構文

MAXLITERAL=integer

デフォルト値

1024

使用上の注意

MAXLITERALに指定可能な最大値は、コンパイラによって異なります。言語ごとに異なるデフォルト値が適用されますが、このデフォルト値より小さい値を指定する必要がある場合もあります。たとえば、COBOLコンパイラの中には132文字より長い文字列リテラルを処理できないものもあります。その場合は、MAXLITERAL=132と指定します。

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

MAXLITERALはインラインで入力できますが、プログラムでMAXLITERALの値を設定できるのは1回のみです。また、そのEXEC ORACLE文は最初のEXEC SQL文より前に記述する必要があります。この条件に違反すると、Pro*COBOLは警告メッセージを発行し、余分なEXEC ORACLE文あるいは誤った位置にあるEXEC ORACLE文を無視して、処理を続行します。

MAXOPENCURSORS

用途

Pro*COBOLがキャッシュに保存しておける、同時にオープンされるカーソル数を指定します。

構文

MAXOPENCURSORS=integer

デフォルト値

10

使用上の注意

MAXOPENCURSORSを使用すると、プログラムのパフォーマンスを改善できます。詳細は、付録C「パフォーマンス・チューニング」を参照してください。

個別にプリコンパイルする場合は、「分割プリコンパイル」の説明に従ってMAXOPENCURSORSを指定してください。

MAXOPENCURSORSオプションには、SQLLIBカーソル・キャッシュの初期サイズを指定します。

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

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

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

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

MODE

用途

このマクロ・オプションは、プログラムがOracleの基準に従うか、現行のANSI SQL規格に準拠するかを指定します。

構文

MODE={ANSI | ISO | ANSI14 | ISO14 | ANSI13 | ISO13 | ORACLE}

デフォルト値

ORACLE

使用上の注意

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

MODE値のANSIとISO、ANSI14とISO14、ANSI13とISO13それぞれのペアの値は等価です。

MODE=ORACLE(デフォルト)のとき、埋込みSQLプログラムはOracleの動作規則に従います。

MODE={ANSI14|ANSI13}と指定した場合、プログラムはほぼ現行のANSI SQL規格に準拠します。

MODE=ANSIと指定した場合、プログラムは完全にANSI規格に準拠し、次のような変更が加えられます。

MODE={ANSI|ANSI14}と指定した場合、SQLCODEの4バイトの整変数またはSQLSTATEの5バイトの文字変数を宣言する必要があります。詳細は、「エラー処理の代替手段」を参照してください。

NESTED

用途

ネストしたプログラムのGLOBAL句が生成されたかどうかを示します。コンパイラがネストしたプログラムをサポートしている場合は、NESTED値としてYESを使用します。

構文

NESTED={YES | NO}

デフォルト値

YES

使用上の注意

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

NLS_LOCAL

用途

NLS_LOCALオプションは、グローバリゼーション・サポート(旧称「NLS」)文字変換がPro*COBOLランタイム・ライブラリまたはOracleサーバーのどちらかによって実行されるかを指定します。

構文

NLS_LOCAL={YES | NO}

デフォルト値

NO

使用上の注意

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

このオプションは、サーバーとの間で各国語キャラクタ・セット変数を受け渡しするのに使用します。

NLS_LOCAL=YESと指定した場合、マルチバイト・グローバリゼーション・サポート・データ型を持つホスト変数の空白埋込みおよび空白削除はランタイム・ライブラリ(SQLLIB)によってローカルに実行されます。リリース8.0以前のリリース用に記述されたPro*COBOLアプリケーションの場合は、引き続きこの値を使用します。

NLS_LOCAL=YESの場合、動的SQL文はプリコンパイル時には処理されないので、このオプションは動的SQL文に対して効力を持ちません。

また、NLS_LOCAL=YESのときは、マルチバイト・グローバリゼーション・サポート・データを格納する列は、埋込みデータ定義言語(DDL)文で使用できません。この制限はプリコンパイル時には適用されないため、このような列型を埋込みDDL文で使用すると、プリコンパイル・エラーではなく実行エラーが発生します。

NLS_LOCAL=NOと指定した場合は、マルチバイト・グローバリゼーション・サポート・データ型を持つホスト変数の空白埋込みおよび空白削除の操作はOracleサーバーによって行われます。新しいOracle8.0以上のアプリケーションについては、すべてこの値を使用してください。

環境変数NLS_NCHARでは、各国語キャラクタ・セットのデータで使用するキャラクタ・セット(NCHAR、NVARCHAR2、NCLOB)を指定します。指定しない場合は、NLS_LANGで直接的または間接的に定義されたキャラクタ・セットが使用されます。詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のNLS_LANGの項を参照してください。

ONAME

用途

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

構文

ONAME=filename

デフォルト値

システムによって異なります。

使用上の注意

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

このオプションは、出力ファイルの名前が入力ファイルの名前と異なる場合に、出力ファイルの名前を指定するために使用します。たとえば、次のコマンドを発行したとします。

procob INAME=my_test

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

procob INAME=my_test ONAME=my_test_1.cob 

ONAMEを使用して指定するファイルには、.cob拡張子を付けてください。ONAMEオプションにはデフォルトの拡張子はありません。


注意:

出力ファイルにはデフォルト名を使用するのではなく、ONAMEオプションで明示的に指定してください。 


ORACA

用途

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

構文

ORACA={YES | NO}

デフォルト値

NO

使用上の注意

ORACA=YESと指定した場合は、プログラムにINCLUDE ORACA文を記述する必要があります。

ORECLEN

用途

出力ファイルのレコード長を指定します。

構文

ORECLEN=integer

デフォルト値

80

使用上の注意

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

ORECLENに指定する値は、IRECLENの値と同じか、それより大きい値にする必要があります。指定可能な最大値はシステムによって異なります。

PAGELEN

用途

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

構文

PAGELEN=integer

デフォルト値

66

使用上の注意

インラインでは入力できません。指定可能な最大値はシステムによって異なります。

PICX

用途

PIC X変数のデフォルトのデータ型を指定します。

構文

PICX={CHARF | VARCHAR2}

デフォルト値

CHARF

使用上の注意

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

Pro*COBOL 8.0からは、PIC X、NまたはG変数のデフォルトのデータ型がVARCHAR2からCHARFに変わりました。PICXは、下位互換性を維持するために用意されているオプションです。

新しいデフォルトの動作は、COBOLの標準の移動規則と整合がとれています。新しい方式により、PIC X変数を(MODE=ORACLEと指定して) VARCHAR2列に挿入した場合の動作が変わります。以前は後続ブランクは切り捨てられましたが、切り捨てられなくなります。また、新しいデフォルトにより、バインド変数の後続ブランクが比較の前に切り捨てられるので、WHERE句で後続ブランク付きで初期化したPIC Xバインド変数を使用すると、char列に格納された同数の後続ブランクを持つ値と一致しないという状態が少なくなります。

PICX=VARCHAR2と指定した場合、OracleはPL/SQLブロック内のローカルCHAR変数を可変長文字値のように扱います。PICX=CHARFと指定した場合は、OracleはCHAR変数をANSI準拠の固定長文字値のように扱います。詳細は、「PIC Xのデフォルト」を参照してください。

PREFETCH

用途

このオプションを使用して一定の行数をプリフェッチすると、問合せが高速化します。

構文

PREFETCH=integer

デフォルト値

1

使用上の注意

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

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

PREFETCHのデフォルトは1です。プリフェッチをオフにするには、コマンドラインでPREFETCH=0を指定します。

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

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

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

最大値は9999です。詳細は、「PREFETCHプリコンパイラ・オプション」を参照してください。

RELEASE_CURSOR

用途

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

構文

RELEASE_CURSOR={YES | NO}

デフォルト値

NO

使用上の注意

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

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

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

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

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

RELEASE_CURSOR=YESはHOLD_CURSOR=YESをオーバーライドすることに注意してください。これら2つのオプションの相互作用の詳細は、付録C「パフォーマンス・チューニング」表C-1「HOLD_CURSORおよびRELEASE _CURSORの相互関係」を参照してください。

SELECT_ERROR

用途

SELECT文で複数の行が戻されたり、ホスト配列に入りきらない数の行が戻された場合に、プログラムがエラーを発行するかどうかを指定します。

構文

SELECT_ERROR={YES | NO}

デフォルト値

YES

使用上の注意

SELECT_ERROR=YESと指定すると、1行を戻す選択で複数行が戻された場合や、配列の選択でホスト配列に入りきらない数の行が戻された場合にはエラーが発生します。

SELECT_ERROR=NOと指定すると、1行を戻す選択で複数行が戻された場合や、配列の選択でホスト配列に入りきらない数の行が戻された場合でも、エラーは発生しません。

YESを指定してもNOを指定しても、行は表から無作為に選択されます。特定の順序で行を選択する場合は、SELECT文でORDER BY句を使用してください。SELECT_ERROR=NOと指定した場合、ORDER BY句を使用すると、Oracleは最初の行を戻します。また、配列の選択の場合は最初のn行を戻します。SELECT_ERROR=YESと指定した場合は、ORDER BY句を使用してもしなくても、戻された行が多すぎる場合にはエラーが発生します。

SQLCHECK

用途

構文および意味チェックのタイプとレベルを指定します。

構文

SQLCHECK={SEMANTICS | FULL | SYNTAX | LIMITED}

デフォルト値

SYNTAX

使用上の注意

値SEMANTICSとFULLは等価です。また、SYNTAXとLIMITEDも等価です。

Pro*COBOLは、埋込みSQL文およびPL/SQLブロックの構文と意味をチェックすると、プログラムのデバッグを支援します。検出されたエラーはプリコンパイル時にレポートされます。

チェックのレベルを制御するには、コマンドラインもしくはインライン、またはその両方でSQLCHECKオプションを入力します。ただし、インラインで指定するチェックのレベルを、コマンドラインで指定する(またはデフォルトによって受け入れる)レベルよりも高くすることはできません。

PL/SQLの予約語がSQL文で使用されていると、そのSQL文がPL/SQLでない場合でも、Pro*COBOLはエラーを発行します。PL/SQLの予約語を識別子として使用する必要がある場合は、二重引用符(")で囲んでください。

SQLCHECK=SEMANTICSと指定した場合、Pro*COBOLは次の項目を対象として構文および意味上のチェックを行います。

ただし、リモートDML文(AT db_name句を使用するDML文)については、構文上のチェックのみ行われます。

Pro*COBOLは、意味検査に必要な情報を、埋め込まれたDECLARE TABLE文から取得します。また、オプションUSERIDが指定されている場合は、Oracleに接続してデータ・ディクショナリに アクセスして取得します。DML文またはPL/SQLブロックで参照される表がすべてDECLARE TABLE文で定義されていれば、Oracleに接続する必要はありません。

Oracleに接続してデータ・ディクショナリにアクセスしても見つからない情報があった場合は、DECLARE TABLE文を使用して欠けている情報を提供する必要があります。プリコンパイル時にDECLARE TABLE文の定義とデータ・ディクショナリの定義の内容が矛盾する場合は、DECLARE TABLE文の定義が使用されます。

新しいプログラムをプリコンパイルするときは、SQLCHECK=SEMANTICSを指定してください。ホスト・プログラムにPL/SQLブロックを埋め込む場合は、SQLCHECK=SEMANTICSと指定し、オプションUSERIDを指定する必要があります。

SQLCHECK=SYNTAXと指定した場合、Pro*COBOLはDML文の構文チェックを行います。

意味上のチェックは行いません。DECLARE TABLE文は無視され、PL/SQLブロックは使用できません。DML文のチェックには、下位互換性のあるOracle9i 構文規則が使用されます。プリコンパイル済のプログラムを移行する場合は、SQLCHECK=SYNTAXを指定してください。

表14-5に、SQLCHECKで行われる検査をまとめてあります。構文検査および意味検査の詳細は、付録D「構文および意味検査」を参照してください。

表14-5    SQLCHECKによる検査 
-  SQLCHECK=SEMANTICSの指定  -  SQLCHECK=SYNTAXの指定  - 

構文 

意味 

構文 

意味 

DML 

 

可 

可 

リモートDML 

可 

可 

PL/SQL 

可 

可 

THREADS

用途

THREADS=YESの場合は、プリコンパイラにマルチスレッド・アプリケーションを使用できます。

構文

THREADS={YES | NO}

デフォルト値

NO

使用上の注意

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

このプリコンパイラ・プログラムは、マルチスレッド・サポートを必要とするすべてのプログラムに必須です。

THREADS=YESに設定した場合、最初のコンテキストが参照され、実行SQL文が見つかる前にEXEC SQL CONTEXT USEディレクティブが検出されると、プリコンパイラはエラーを発行します。詳細は、第12章「マルチスレッド・アプリケーション」を参照してください。

TYPE_CODE

用途

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

構文

TYPE_CODE={ORACLE | ANSI}

デフォルト値

ORACLE

使用上の注意

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

設定できるオプションの詳細は、表10-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エラーの発生を避けるために、必ず標識変数を使用してください。

UNSAFE_NULL=YESと指定すると、SELECT文またはFETCH文でNULLが選択され、出力ホスト変数に対応する標識変数がない場合でも、エラーは戻されません。UNSAFE_NULL=NOと指定した場合、対応する標識変数のないホスト変数にNULLの列または式を選択またはフェッチすると、エラーが発生します(SQLSTATEは22002に、SQLCODEはORA-01405に設定されます)。

USERID

用途

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

構文

USERID=username/password[@dbname]

デフォルト値

なし

使用上の注意

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

SQLCHECK=SEMANTICSと指定した場合に、Oracleに接続してデータ・ディクショナリにアクセスすることによりPro*COBOLが必要な情報を得られるようにする場合は、USERIDも指定してください。データベース別名はオプションです。大カッコは、入力しないでください。

VARCHAR

用途

VARCHARオプションは、第5章「埋込みSQL」で説明したCOBOLのグループ項目をVARCHARデータ型として扱うようにPro*COBOLに指示します。

構文

VARCHAR={YES | NO}

デフォルト値

NO

使用上の注意

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

VARCHAR=YESと指定した場合、第5章「埋込みSQL」で説明した暗黙的なグループ項目を、長さフィールドおよび文字列フィールドを持つVARCHAR外部データ型として受け入れます。

VARCHAR=NOと指定した場合、Pro*COBOLは暗黙的なグループ項目をVARCHAR外部データ型として受け入れません。

XREF

用途

リスト・ファイルに相互参照セクションを組み込むかどうかを指定します。

構文

XREF={YES | NO}

デフォルト値

YES

使用上の注意

XREF=YESと指定すると、ホスト変数、カーソル名および文名にクロス・リファレンスが組み込まれます。クロス・リファレンスは、個々のオブジェクトがプログラム内のどこで定義され、どこで参照されているかを示します。

XREF=NOと指定した場合は、相互参照セクションは組み込まれません。


戻る 次へ
Oracle
Copyright © 2007 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引