原典情報: $ORACLE_HOME/precomp/doc/procob2/readme.doc
目次
2 新機能3 Pro*COBOL 8.1.5およびPro*COBOL 2.0.2の既知の制限事項
4 Pro*COBOL 10.1.0.2.0の既知の不具合 5 リリース2.0.2以降で修正された不具合 6 『Pro*COBOL Precompilerプログラマーズ・ガイド』の補足事項
特に、V6互換性フラグでは、Oracle7でOracle6の動作の次の側面がエミュレートされていました。
Oracle8では、V6互換性フラグのサポート中止に伴い、これらの動作のサポートがすべて中止となります。
リリース2.0.2より前のPro*COBOLでは、ユーザーのPIC Xホスト変数がデフォルトでOracle外部データ型VARCHAR2にマップされていました。Oracleリリース8.0.3に対応するPro*COBOL 2.0.2では、PIC Xホスト変数がデフォルトでOracle外部データ型CHARFにマップされることを示すメッセージが表示されます。PIC X変数用の新規のデフォルト・データ型は、入力にVARCHAR2列が関係する使用例に影響します。従来は切り捨てられていた後続の空白は保持されます。下位互換性を保つためにPICXオプションが用意されています。次の表に、PICXオプションの値とデータベース列の型に対応する動作を示します。
列の型 | PICXの値 | VARCHAR2 CHARF |
---|---|---|
VARCHAR2 |
後続の空白は入力時に切り捨てられる。 | 後続の空白は保持される。 |
CHAR |
文字列は入力時に列の幅にあわせて空白で埋められる。 | 文字列は入力時に列の幅にあわせて空白で埋められる。 |
この新規のデフォルトが影響するのは、後続の空白を含む値を列に格納し、それと同じ値および後続の空白で初期化されたPIC Xバインド変数を使用し、その変数をWHERE句で使用して値を選択する場合です。PICX=VARCHAR2の場合、比較前に空白が削除されるために両者は一致しません。
次に例を示します(ENAME列はVARCHAR2(10)です)。
また、この新規のデフォルトは、sample9のように、PIC X変数の表を宣言し、それをPIC X変数がVARCHAR2の索引付き表にマップされるPL/SQLストアド・プロシージャのコールに使用する場合にも影響します。PICXのデフォルトが変更されたため、PICX=VARCHAR2を指定せずにsample9.pcoをプリコンパイルすると次のエラーが生成されます。
PCB-S-00576: PLS-00418: 配列バインドの型は、PL/SQL表の行の型と一致する必要があります。
そのため、このリリースではPICX=VARCHAR2を指定してsample9をプリコンパイルする必要があります。
リリース9.2.0のPro*COBOLをインストールすると、demo_procob.mkおよびdemo_procob18.mk Makeファイルとともにviz.、demo_procob_32.mk、demo_procob_64.mk、demo_procob18_32.mk、demo_procob18_64.mkの4つのMakeファイルがインストールされます。この新規Makeファイルは、追加の32/64ビット・サポートが必要な場合に使用します。
たとえば、プラットフォームxがデフォルトで64ビットであるのみでなく、32ビットのリンクもサポートされる場合、demo_procob.mkでは64ビットの実行可能ファイルが作成され、32ビットの実行可能ファイルを作成するにはdemo_procob_32.mkを使用する必要があります。この例では、demo_procob_64.mkとdemo_procob.mkの機能は同じです。Pro*COBOL 8.1.6では、マルチスレッド・アプリケーションがサポートされるようになりました。SQL-CONTEXT疑似型を使用してコンテキスト変数を宣言できます。また、LOCAL-STORAGEセクションとTHREAD-LOCAL-STORAGEセクションでホスト変数を宣言できます。スレッドの有効化、SQLコンテキストの割当てと解放、使用するコンテキストの指定に使用できるように、新規の埋込みSQL文が用意されています。新規のSQL文とディレクティブは次のとおりです。
EXEC SQL ENABLE THREADS END-EXEC.アプリケーションのマルチスレッド化を指定できるように、新規のコマンドライン・オプションTHREADS=YES/NO(デフォルトはNO)が用意されています。
Pro*COBOL 8.1.5では、WHENEVER文でアクションとしてサブルーチンをコールできます。新規の構文は次のとおりです。
EXEC SQL WHENEVER <condition> DO CALL <subprogram>この新機能は、ネストしたプログラムを記述する際に有用です。
EXEC SQL CONNECT :<uid> IDENTIFIED BY :<pwd> END-EXEC.
ここで<uid>はSYSを含むホスト変数、<pwd>はCHANGE_ON_INSTALLを含むホスト変数です。デフォルトでは、前述の構文ではSYSDBA権限を使用できなくなったため、Pro*COBOL 8.1.3では埋込みCONNECT文のオプションのIN MODE句がサポートされるようになり、この句にSYSDBAまたはSYSOPERモードを指定できます。Pro*COBOL 2.0.2のうち相当数の機能は、DB/2との互換性を高めてあります。このため、DB/2データベースで動作するように開発されたCOBOLアプリケーションを簡単に移行して、Oracleと動作させることができます。次のようなDB/2互換機能あります。
a. オプションの宣言部
Pro*COBOL 2.0.2では、宣言部の外側で許容可能な型のホスト変数を宣言できます。b. サポート対象となるデータ型の追加
計算用のデータ型であるCOMP-4、PACKED-DECIMALおよびunsigned compの3つがサポートされます。COMP-4はバイナリ・データ型、PACKED-DECIMALはCOMP-3データ型、unsigned compは2バイトまたは4バイトのunsigned int型として扱われます。さらに3つの表示用データ型であるscaled display trailing、unsigned displayおよびoverpunchがサポートされます。PIC GもマルチバイトのPIC N型として許可されます。c. ホスト変数としてのグループ項目のサポート
Pro*COBOL 2.0.2では、埋込みSQL文のホスト変数として、要素の下位項目を持つグループ項目がサポートされます。ホスト・グループ項目は、SELECT文またはFETCH文のINTO句、およびINSERT文のVALUESリスト内で参照できます。d. 拡張形式のVARCHARグループ項目
可変長文字変数(VARCHAR)がサポートされるため、COBOLグループ項目について、より柔軟な拡張形式が認識されます。e. フェッチ終了時のSQLCODE値の明示的な制御
フェッチ終了条件が発生したときの戻り値を明示的に制御できるように、コマンドライン・オプションが用意されています。f. DECLARE CURSOR文のWITH HOLD句のサポート
DB/2のデフォルト動作では、すべてのカーソルはコミット時にクローズされます。このカーソルに対する動作は、カーソル宣言でWITH HOLD句を使用してオーバーライドできます。Pro*COBOL 2.0.2ではDECLARE CURSOR文のWITH HOLD句がサポートされ、WITH HOLD句のないカーソル変数をコミット時にオープンしておくかクローズするかを指定できるように、コマンドライン・オプションも用意されています。g. DSNTIARの提供
DB/2には、表示可能な形式のSQLCAを取得するためのアセンブラ・ルーチンDSNTIARが用意されています。Pro*COBOL 2.0.2でもDSNTIARが提供されます。h. DATE文字列書式の明示的な制御
日付文字列の書式を指定するためのコマンドライン・オプションが用意されています。a. ネストしたプログラムのサポート
Pro*COBOL 2.0.2では、1つのソース・ファイルで埋込みSQLを使用してプログラムをネストできます。b. 改善されたエラー・レポート
生成されるすべてのリスト・ファイルまたは端末出力で、エラーが正しい行に関連付けられます。「ホスト変数が無効です。」というエラーには、特定のCOBOL変数について埋込みSQLで使用できない理由が明確に示されます。c. グループ項目でのREDEFINES句の使用のサポート
REDEFINES句でグループ項目を再定義し、ホスト変数の宣言に使用できます。d. FILLERのサポート
ホスト変数の宣言にFILLERという語を使用できます。e. PIC Xの新規のデフォルト・データ型
PIC Xのデフォルトのデータ型は、VARCHAR2 (1)からCHARF (96)に変更されています。下位互換性を保つために新規プリコンパイラ・オプションが用意されています。f. NCHARデータのサポート
NCHARデータがカーネルにより完全にサポートされるようになりました。以前のリリースのプリコンパイラでは、このデータ型はNLS_LOCALオプションを使用してサポートされていました。新規アプリケーションの場合は、データベース・サポートに依存し、それに従ってプリコンパイル時にNLS_LOCAL=NOに設定することをお薦めします。この項では、Pro*COBOL 8.1.5の新機能に伴う既知の制限事項について説明します。
制限:位置付けDELETE文またはUPDATE文(WHERE CURRENT OF句を含むDELETE文またはUPDATE文)と、副問合せを含むINSERT文では、RETURNING句を使用できません。
グループ項目のホスト表に、それ自体が表またはグループ項目であるグループ項目を含めることはできません。グループ項目の表は、Oracleの動的SQLメソッド4またはANSIの動的SQLには使用できません。
IN SYSDBA| SYSOPER MODE句は、ALTER AUTHORIZATION句に使用できず、auto_connectではサポートされません。
この項では、Pro*COBOL 2.0.2の新機能に伴う既知の制限事項について説明します。
一緒にリンクされているすべてのコンパイル・ユニットに同じDATE_FORMAT値を使用する必要があります。
ネストしたプログラムを使用する再帰はサポートされません。
グループ項目のホスト変数からの項目とその再定義からの項目を1つのINTO句で使用しないでください。
Bug#1897639 グループ項目内で暗黙的なVARCHARを参照するとPCB-00208が戻される
Bug#1656765 INCLUDE文を使用してホスト・プログラムにサブプログラムとしてコピーするファイルに、IDENTIFICATION、ENVIRONMENT、DATAおよびPROCEDURE DIVISIONが含まれていると、procobでPCB-S-00400エラーが発生する
Bug#1620777 VARYINGキーワードを追加してホスト変数を定義し、データ型の同値化を使用して文字列をオーバーライドすると、拡張された文字列フィールドの長さの値が2だけ大きくなる
Bug#953338 select /*+ index hint */文を使用して埋込みPL/SQLでPro*COBOLプログラムをプリコンパイルすると、PCB-S-00576: PLS-00103エラーが戻される
Bug#2810557 nls_local=yesオプションを使用すると実行時にメモリー・リークが発生する
nls_local=yesオプションを使用してPROCOBアプリケーションをコンパイルすると、メモリー・リークが発生しました。修正により、メモリー・リークは発生しなくなりました。
Bug#2573812 comp1=integerを使用するとカーソル変数が正常に拡張されない
プリコンパイラ・オプションcomp1=integerを使用してCOBOLファイルをプリコンパイルすると、カーソル変数が正常に拡張されませんでした。
Bug#2497144 配列インジケータを使用していると正しいコードが生成されない
01または77レベル以外で配列インジケータが使用されていると、動的方法2のCALL文で正しいCOBOLコードが生成されませんでした。
Bug#2398218 ピリオドなしのEXEC SQL INCLUDEの後にEXEC SQLがあると、プリコンパイラ・エラーが発生する
EXEC SQL INCLUDE文の後にもう1つEXEC SQL文があると、PROCOBでプリコンパイラ・エラーが生成されました。
次に例を示します。
Bug#2316666 ユーザー指定のコンテキストでSQLRowidGetをコールするとコア・ダンプが発生する
SQLRowidGetのコールにユーザー指定のランタイム・コンテキストを使用すると、コア・ダンプが発生してCOBOLアプリケーションが失敗します。修正後は、ランタイム・コンテキストの使用が指定されるたびに、SQLLIBのエントリ・ポイントがSQLBEXからSQLBXTに変更されます。有効なコンテキストを指定してSQLRowidGetをコールすれば、コア・ダンプは発生しません。
Bug#2255182 EXEC SQL INCLUDEの後にELSEがあるとPROCOBで不正なコードが生成される
IF文に特定の方法でEXEC SQL INCLUDEが使用されていると、不正なコードが生成されました。たとえば、次のコードでは不正なコードが生成されます。
IF <condition>
EXEC SQL INCLUDE INCLFILE.COB END-EXEC
ELSE
DISPLAY "HELLO WORLD".
修正により、正しいコードが生成されます。
Bug#1810960 PL/SQLブロックにGOTOラベルがあるとプリコンパイルに失敗する
PL/SQLブロックにGOTOラベルがあると、プリコンパイルに失敗しました。
Bug#1326752 PROCEDURE DIVISION USING COPY XYZに対してPROCOBでエラーが生成される
USING COPY XYZ文とともにPROCEDURE DIVISION文が使用されていると、PROCOBでプリコンパイラ・エラーが生成されました。
たとえば、次の構文ではプリコンパイラ・エラーが生成されました。
PROCEDURE DIVISION USING COPY XYZ.COB.
修正により、PROCOBでは正常にプリコンパイル済のCOBファイルが生成されます。Bug#2067469 SQLSTATEが01004の正しいステータス情報を取得しない
SQLSTATEは、SQLCODEも使用されていないと、01004の正しいステータス情報を取得しませんでした。
Bug#2021052 Pro*COBOL動的メソッド4アプリケーションが実行時に停止するか、またはコア・ダンプが発生する
DESCRIBE BIND VARIABLES文を含む動的メソッド4のアプリケーションでは、実行時にコア・ダンプが発生するか、停止するか、ORA-02111になります。
Bug#1949580 EXEC CICS文またはEXEC DCSQL文の最後にピリオドがないと、プリコンパイラ・エラーまたは不正なコードが生成される
EXEC CICS文またはEXEC DCSQL文の最後にピリオドがないと、プリコンパイラ・エラーまたは不正なコードが生成されました。修正により、正しいコードが生成されます。
Bug#1985041 2001年9月9日以降にPro*COBOLで生成されたファイルにコンパイル・エラーがある
Windowsプラットフォーム上では、UTCの2001年9月9日(日曜)01:46:40にtime()が10億を戻した後、Pro*COBOLで生成されたファイルには、変数sqlcxtの値が大きいことが原因によるコンパイル・エラーが発生しました。
Bug#1954202 fips=yesオプションを使用すると、Pro*COBOLでカーソルのオープンに関して不正なコードが生成される
FIPSエラーにフラグが設定される変数をカーソルのフェッチに使用すると、カーソルのオープン、フェッチに関して不正なコードが生成されました。
Bug#1940784 ANSIの動的SQLをNCHAR列で使用すると不正な結果が戻される
ANSIの動的SQLとNCHAR列を使用すると、バイト長が正しく計算されず、不正な結果が戻されました。
Bug#1885390 半角かな文字を含むSQLについてPro*COBOLで正しい長さが生成されない
SQL文に日本語半角かな文字を使用する場合に、SQLの長さが最大のリテラルより長いと、そのSQL文を保持する充填文字についてPro*COBOLで正しい長さが生成されませんでした。
Bug#1856125 01、77レベル以外で宣言された標識変数の値が不正である
01または77以外のレベルで宣言された標識変数を動的SQLまたはCALL文とともに使用すると、標識の値が不正になりました。
Bug#1716654 PIC X(..)ホスト変数についてPro*COBOLで不正なコードが生成される
名前付き接続でカーソルが宣言され、AT句のホスト変数がPIC X(..)変数として宣言されると、プリコンパイルが停止したようにみえる一部のプラットフォーム上では、カーソルのFETCH文のホスト変数についてPro*COBOLで正しい拡張が生成されませんでした。
Bug#954153 宣言部の外側にあるSQLCODEと宣言部の内側にあるSQLSTATEに対して、ASSUME_SQLCODEが機能しない
SQLCODEが宣言部の外側で宣言されていると、コマンドライン・オプションmode=ansi declare=yes assume_sqlcode=yesを指定してアプリケーションをプリコンパイルしても、SQLCODEが正しいエラー番号を取得しませんでした。
Bug#753989 WORKING-STORAGE SECTIONの前にEXEC SQL INCLUDEを使用すると、不正なコードが生成される
WORKING-STORAGE SECTIONの前にEXEC SQL INCLUDEを使用すると、PROCOBではその文がコメント化されますが、インクルードされたファイルの内容は生成されました。生成されたファイルのコメントを解除すると、COBOLコンパイラでエラーが生成されました。修正により、EXEC SQL INCLUDE文は正常にコメント化されます。
Bug#1576145 不要な定義が原因でリリース8.0に比べてリリース8.1のパフォーマンスが低下した
ループに1つFETCH文がある場合、リリース8.0に比べてリリース8.1のパフォーマンスが低下しました。これは、すべての反復でホスト変数ごとに不要なDEFINEがコールされるためでした。修正により、すべてのホスト変数が解析され定義された後の同じFETCH文では、次の反復時にはDEFINEがコールされません。
Bug#1508116 SQLMOVが常に引用符付きで生成される
一部のプラットフォームでは、特定のプロシージャのコールがアポストロフィ(')で囲まれます。ただし、SQLMOVは常に]>引用符(")で囲まれ、エラーが生成されました。]>修正により、デフォルトの場合とlitdelim=quoteの場合には、]> SQLMOVは引用符(")で囲まれますが、]> litdelim=apostの場合SQLMOVは引用符(')で囲まれます。
Bug#1410679 標識変数がない場合に配列フェッチのパフォーマンスが低下した
標識変数を使用しない配列フェッチの場合は1行に対してフェッチが実行され、リリース8iではデータのフェッチを目的としたサーバーへのラウンドトリップ回数が増加していました。修正により、FETCHのコール回数がリリース8.0.6と同じになっています。
Bug#1175132 INSERTに不要な解析が実行されるためパフォーマンスが低下した
INSERT文が原因でORA-00001エラーが発生するたびに、INSERT文の解析がトリガーされ、パフォーマンスが低下します。ORA-01403、ORA-01405およびORA-01406の場合にのみ、再解析は実行されませんでした。修正により、解析エラーが発生しないかぎり再解析は実行されません。
Bug#746347 動的SQLメソッド4で不正なsqlerrd[4]値が生成された
動的SQLメソッド4で、エラーがある列の番号を指す不正なsqlerrd[4]値が生成されました。修正により、sqlerrd[4]に正しい値が割り当てられます。
Bug#583044 CALL文のVARCHARホスト変数が正常に拡張されず、COBOLコンパイラの最適化処理により排除される
このため、SQL文が正常に実行されませんでした。
Bug#610765 MF COBOLコンパイラなど、一部のCOBOLコンパイラでは、PICTURE句またはUSAGE句の後にREDEFINES句の使用が許可される
Pro*COBOLではエラーが生成されますが、この構文が許可されるようになりました。
Bug#612577 SQLCHECK=fullを指定してプリコンパイルした場合に、SELECT構文のリストとリスト項目の両方としてバインド変数が発生すると、PL/SQLでバインド変数のモードに関するメッセージが戻される
次に例を示します。
EXEC SQL SELECT :INVOICE-DATE INTO :INVOICE-DATE FROM DUAL部分的な解決策は、埋込みPL/SQLがない場合は、SQLCHECK=SYNTAXを指定してプリコンパイルすることでした。埋込みPL/SQLがある場合、回避策はありません。
Bug#616243 データ記述にCOPY文が使用されていると擬似的なエラーが生成される。たとえば、01 myvar COPY somefile.cpyの場合です。
Bug#682099 EXEC SQL VAR文にMLSLABELが使用されていると(EXEC SQL VAR SALARY IS MLSLABEL END-EXEC.など)エラーが生成される
Bug#693939 文字列型、ANSIの可変文字列型およびANSIの固定文字列型は、ANSI動的プログラムで使用されると空白で埋められない
修正により空白で埋められるようになり、戻される長さフィールドは不定です。
Bug#697236 Pro*COBOLでピリオドを生成できずに不正なコードが生成される場合がある
Bug#706455 Pro*COBOLが富士通COBOLコンパイラの@OPTION文を受け入れるようになった
Bug#706465 Pro*COBOLで72列目を超えるコードが受け入れられるようになり、72列未満の場合も72列目の行まで空白で埋められない
新規のオプションが導入されています。このオプションは、72列目を超えるコードの使用が可能な、COBOLコンパイラをサポートするポートでのみ使用可能です。新規オプションEOL_PADDINGのデフォルトはTRUEで、FALSEに設定するとPro*COBOLで72列目を超えるコードを受け入れることができます。EOL_PADDING=FALSEを指定するのみでなく、IRECLENも72列目を超えるコードを含む行の長さより大きい値に設定する必要があることに注意してください。
Bug#715706 埋込みPL/SQLブロックで名前付き表記法構文(=>)を使用してストアド・プロシージャにパラメータを渡すと、プリコンパイラ構文エラーが生成される
修正により、名前付きパラメータの受渡しに=>が有効となりました。
Bug#764952 インジケータの配列も要求した場合に、DMLのRETURNING句で列値の配列が正常に戻されない
Bug#770456 構文エラーの検出後にPro*COBOLが無限ループに入る場合がある
Bug#779589 SQLCHECK=FULLを指定してプリコンパイルする場合にNCHAR変数が使用されていると、アプリケーションでコア・ダンプが生成される
Bug#781519 COMP1オプションは、設計時にはNECプラットフォーム専用である
NECコンパイラはWindows NTとHP-UXでサポートされているため、このオプションはこれらのプラットフォーム上でアクティブ化されています。NECではCOMP1のデフォルトはintegerですが、Windows NTとHP-UXではデフォルトはfloatです。
Bug#786412 EXEC SQL INCLUDEがソース・ファイルの最終行にあると不正なコードが生成される
実際には、EXEC SQL INCLUDEはコメント化され、その下のコードはインクルードされるファイルから生成されませんでした。修正により、インクルードされるファイルに他の不完全EXEC SQL文がなければ、正しいコードが生成されます。Bug#790792 リスト・ファイルをオープンできないとコア・ダンプが発生する
この問題を修正するために該当する条件がチェックされています。Bug#790800 デフォルトの構成ファイル(pcbcfg.cfg)が存在しないか、オープンできないと、PROCOBでコア・ダンプが生成される
この問題は、該当する条件のチェックにより修正されています。Bug#791384 NULLのLOBにLOBを追加するとエラーになる。ただし、SQLLIBから戻されるエラー・メッセージには、この状況が記述されませんでした。
Bug#801579 PIC N/Gのデフォルトのデータ型がCHARFではなくVARCHAR2に設定される
Bug#804021 format=terminalを指定してアプリケーションをプリコンパイルすると、PROCOBで列0(ゼロ)ではなく列7にsql-runtime-varsが生成される
Bug#814970 RENAMES句を使用したデータ記述項目でコア・ダンプが発生する
Bug#815649 入力ファイルが存在しないとコア・ダンプが発生する
Bug#821874 CONNECT時にAT句が使用されるたびに不要なsqlus.msbエラー・ハンドルがオープンされる
修正により、エラーが発生するまでsqlus.msbのオープンは遅延するようになりました。Bug#836256 oraca.cobに長い(72列目を超える)コメント行があるとプリコンパイラ・エラーが発生する
問題の行は不要であったため、この問題を修正するために削除されました。Bug#848942 PROCOBが名前が大文字で拡張子のないファイルをEXEC SQL INCLUDEできない
デフォルトでは、.cob(小文字の拡張子)を想定する必要がありました。そのため、EXEC SQL INCLUDE FOO END-EXECの場合は、FOO.cobではなくFOO.COBが検索されました。Bug#857646 PIC S9(m)変数がホスト変数として使用されると、PROCOBでプリコンパイラ・エラーが生成される
修正により、エラーが削除され、正しい実行結果を含む正しい生成ファイルが示されます。Bug#884143 ホスト変数の型が次のように同値化される場合に
<group_item>.<elementary_item>
要素項目名にハイフンが含まれているためエラーとなる
Bug#884391 入力ファイルにEXEC SQL USE :hv END-EXEC構文が使用されていると内部エラーが発生する
該当する構文エラーが示されるようになりました。Bug#903909 Pro*COBOLで疑似テキストが正常に終了していないことを示すエラーがレポートされた後に、セグメンテーション・エラーが発生する
Bug#904273 DESCRIBE BIND VARIABLES文を含む動的メソッド4のアプリケーションで、EXECUTE文のFOR句にホスト配列を使用すると、実行時にコア・ダンプが発生する
Bug#909020 非問合せSQL文を使用するEXEC SQL DESCRIBE SELECT LISTでは、「ORA-24338: 文の処理が実行されません。」という実行時エラーが戻される
Bug#911885 デフォルト接続とデフォルト以外の接続が混在する場合など、複数の接続を使用するアプリケーション・プログラムに実行時エラーが発生する場合がある
Bug#913475 複数の接続を使用するアプリケーションで、non-lst connect/diconnectループ内でデータをフェッチすると、「ORA-01002: フェッチ順序が無効です。」というエラーが発生する場合がある
Bug#936178 接続にXAを使用するアプリケーションがRELEASE_CURSOR=YESを指定してプリコンパイルされている場合、メモリー・リークが発生する
Bug#945720 SQL-SQINDSにより生成された変数の一部が初期化されないため、メモリー・アクセス違反が発生する
SQL-SQINDS変数は、生成されたコードで正常に初期化されるようになりました。Bug#973363 INTO句でホスト変数としてグループ名(要素の1つにFILLERを持つグループ)を使用すると、PROCOBで不正なコードが生成される
この不正なコードによりコンパイル・エラーが生成されました。修正により、正しいコードが生成されます。Bug#979937 LITDELIM=APOSTを指定してプリコンパイルすると、Pro*COBOLアプリケーションに実行時エラーが発生する場合がある
Bug#414298 EXEC SQL EXECUTE IMMEDIATEの文テキストをホスト変数で指定すると(EXEC SQL EXECUTE IMMEDIATE :create_as_select;など)、sqlca.sqlerrd内で処理済行数が更新されない
sqlca.sqlcodeは、文の実行結果を正確に反映するように更新されました。Bug#611926 DATA DIVISIONでPLAIN PERIOD文を使用するとプリコンパイラ・エラーが発生する
たとえば、次のコードではエラーが発生しました。01 DA1 PIC X(8) VALUE "ABCDEFGH".
01 DA2 PIC X(8) VALUE "IJKLMNOP".Bug#616233 文字列リテラルの継続行の前に空白行があると、Pro*COBOLで文字列が正しく終了していないことを示す擬似的なエラーが発生する
Bug#616254 ネストしたプログラム内でGLOBAL属性を使用してSQLSTATE変数が宣言されると、Pro*COBOLで不正なコードが生成され、COBOLコンパイル・エラーになる
Bug#616754 浮動小数点定数に小数部がないと、Pro*COBOLで擬似的な構文エラーが生成される
Bug#616759 識別子に英数字以外のマルチバイト・キャラクタが使用されていると、Pro*COBOLで擬似的なエラーが生成される
Bug#658949 Pro*COBOLでVALUE IS EXTERNAL ...に対してプリコンパイル・エラーが生成される
修正により、次の構文はエラーなしでプリコンパイルできるようになりました。DEC VMS COBOLコンパイラでは、次の構文は有効です。{ VALUE IS/ARE } { { EXTERNAL/REFERENCE external-name1/data-name1 }
[ { { THRU/THROUGH} { EXTERNAL/REFERENCE external-name2/data-name2 } } ] ...Bug#704548 NLS_LOCAL=yesのときに切捨てが発生すると、エラー条件SQL-02129(取出されたバイト数が奇数です)が検出されない
エラー・コードはプラスであるため、EXEC SQL WHENEVER SQLERRORに関連付けられたアクションは実行されませんでした。この問題が存在するのは、リリース8.1ベータ版のみでした。Bug#704801 SQLGLSサブルーチンを介して文の型が戻されない
この問題が存在するのは、リリース8.1ベータ版のみでした。Bug#704985 NLS_LOCAL=YESを指定した場合に、長さ2バイト以下のマルチバイト・キャラクタのホスト変数にフェッチできない
Bug#706521 REPLACE文に複数のBY句が含まれている場合に誤ってエラーが戻される
たとえば、次の場合にエラーが戻されました。REPLACE ==ED001== BY ==ED100== ==ED002== BY ==ED200==.
Bug#707271 ソース・ファイルの最終行が改行文字で終了していない場合に、Pro*COBOLで擬似的な構文エラーが発生することがある
通常、この問題が発生するのは、最終行がEND PROGRAM文の場合です。Bug#707568 FORMAT=TERMINALのときにソース・コード行が列1で始まると、プリコンパイラ・エラーが生成される
Bug#716933 プラットフォームによっては、問合せでDEREF()またはREF()を処理するとPro*COBOLでコア・ダンプが発生する
Bug#717698 インジケータを-1に設定して埋込みPL/SQLを実行すると、メモリー・エラーまたは実行時エラーになる
Bug#735298 EXEC TOOLS GET文に使用されるメモリーが、使用後も解放されない
Bug#750712 マルチバイト・キャラクタを含むプログラムに対してPro*COBOLで無効なコードが生成され、実行時に各種の擬似的なエラーが発生する場合がある
Bug#752463 NCHARホスト変数を使用し、NLS_LOCAL=YESを指定してプリコンパイルすると、メモリー・リークが発生する
Bug#754066 埋込みSQLのDML RETURNING文に複数の列があると誤動作が発生する
Bug#785387 TIMESTAMP、TIMEおよびINTERVALなどの日時語がSQL文に使用されていると構文エラーが発行される
たとえば、SELECT TIMESTAMP FROM MYTABLEなどです。 Bug#286765 動的SQLを介してホスト配列をPL/SQLの表にバインドすると実行時エラーが発生する当初の修正では、動的SQL方法でホスト配列を使用してPL/SQLブロックを実行すると、それが動作に使用されるという問題が発生しました。これは、リリース8.0.4で再修正を行って、既存のARRAYLEN文に新規の埋込みSQL構文であるオプションのEXECUTEを導入するためでした。
EXEC SQL ARRAYLEN host_array ( dimension ) EXECUTEARRAYLEN文でオプションのEXECUTEを使用すると、動的SQL EXECUTE文を介してホスト配列をPL/SQLの表にバインドできます。PROC 8.0.4からの新規修正により、動的SQL EXECUTE文を介してホスト配列をPL/SQLの表にバインドするには、次のように、ARRAYLEN文の最後にオプションのEXECUTEを追加するようにアプリケーションを変更する必要があります。
EXEC SQL ARRAYLEN host_array ( dimension ) EXECUTEBug#584562 Pro*COBOLでは、ソース・ファイルにDATA DIVISIONがないとプリコンパイラの構文エラーが生成される
必須DIVISIONはPROCEDURE DIVISIONのみとなりました。Bug#603747 コードを正常に生成するには、ソース・ファイル内で1つ以上の宣言にWORKING-STORAGE SECTIONが必要である
存在しない場合は、必要な宣言が生成されないためコンパイル時エラーが発生しました。Bug#634854 MODE=ANSIのときに複数のDECLARE SECTIONを使用すると、不正なコードが生成されてコンパイル・エラーとなる
MODE=ANSI はDECLARE_SECTION=YESのときのマクロ・オプションであり、すべてのホスト変数についてDECLARE SECTIONを記述するように要求します。そのため、DECLARE SECTIONが複数になる可能性があります。たとえば、次の場合にはPro*COBOLで不正なコードが生成されました。EXEC SQL BEGIN DECLARE SECTION END-EXEC. 01 USERNAME PIC X(10) VARYING. 01 PASSWD PIC X(10) VARYING. 01 ESS PIC S9(16)V99 COMP-3. EXEC SQL END DECLARE SECTION END-EXEC. .... 01 EMP-REC-VARS. 10 EMP-REC. EXEC SQL BEGIN DECLARE SECTION END-EXEC. 15 EMP-NAME PIC X(10) VARYING. .... EXEC SQL END DECLARE SECTION END-EXEC.
いずれかのSQL文にホスト変数としてEMP-NAMEを使用すると、不正なコードが生成されました。
.... CALL "SQLADR" USING EMP-NAME-LEN IN EMP-NAME IN ESS SQL-SQHSTV(1) ....
EMP-NAMEがESSのサブグループ項目でないことは明らかです。修正により、次のように正しいコードが生成されるようになりました。
.... CALL "SQLADR" USING EMP-NAME-LEN IN EMP-NAME SQL-SQHSTV(1) ....
Bug#641092 nに大きすぎる値を指定してPIC S9(n) COMPで変数を使用すると、プリコンパイル・エラーは発生しないが不正なコードが生成される
使用中のプラットフォームで許可されているよりも大きいnを指定してPIC S9(n)で宣言された変数が、埋込みSQL文に使用されました。32ビット・マシンの場合はnに9以下の値、64ビット・マシンの場合はnに18以下の値を指定する必要があります。この問題を解決するには、PICTURE句にプラットフォームでの最大許容サイズを超えない数を使用するか、またはCOMP-3を使用します。Bug#652497 shiftベースのマルチバイト・キャラクタ・セット・アプリケーションに対し、Pro*COBOLで不正なコードが生成される
Bug#657824 PIC S9 DISPLAYホスト変数を使用すると、プリコンパイル時エラーは生成されないが、不正な結果が戻される
DISPLAY変数はホスト変数として使用できません。COMP(計算)型が必要です。そのため、ホスト変数として数値DISPLAY型の変数が使用されている場合は、正常にプリコンパイルされるかわりに、適切なエラー・メッセージが生成されるようになりました。Bug#659733 xref=yesオプションを使用すると、長い完全修飾名の参照をリスト表示する間にPro*COBOLでコア・ダンプが発生する
修正により、長い完全修飾名はリスト表示前に切り捨てられるようになりました。Bug#676327 新規に割り当てられてオープンされた結果セット・カーソルを解放すると、無効なカーソル・エラーが戻される
Bug#683035 HOLDやMESSAGEなどの予約語は埋込みSQL文などに使用できない
Bug#691930 ops$@<hostname>を指定してデータベースに接続するとORA-01017が戻される
Bug#693428 最後の文の後にピリオド(.)なしでコメント行があると停止する
適切なファイル終了条件のチェックにより停止しなくなりました。Bug#693570 グループ名にFILLERを使用すると、PCCエラーが戻る場合と、不正なコードが生成されてコンパイル・エラーになる場合がある
次に例を示します。01 EMP-REC. 05 EMP-NUMBER PIC S9(4) COMP. 05 FILLER. 10 TEST-NUMBER PIC S9(4) COMP.SELECTのWHERE条件にEMP-NUMBERを使用すると次のコンパイル・エラーが戻される
PCB-S-00204: グループ項目はINTOまたはVALUES句以外で使用できません。
SELECTのWHERE条件にTEST-NUMBERを使用すると次のように不正なコードが生成されました。CALL "SQLADR" USING TEST-NUMBER IN EMP-NUMBER IN EMP-REC ....このコードではコンパイル・エラーが戻されます。修正により、FILLERをグループ名として使用できるようになりました。
Bug#700901 DBMS=V8、MODE=ORACLE、UNSAFE_NULL=YESの場合にPro*COBOLでエラーが生成される
プリコンパイラ・エラーが戻されなくなりました。Bug#549812 ファイル名として3つ以上の名前(x x xなど)を指定すると、Pro*でコア・ダンプが発生する
Pro*はコマンドライン・オプションを処理するときに、入力ファイル名1つと出力ファイル名1つを想定しています。コマンドラインで3つ以上のファイル名を指定でき、適切なエラー・メッセージが表示されるように、Pro*が修正されました。Bug#553658 Windows NTプラットフォームでは、プリコンパイラ・オプションnls_charおよびnls_localを使用したアプリケーションでコア・ダンプが発生する
Windows NTのマルチスレッド化アプリケーションの場合、グローバル・ランタイム・コンテキストは適切なnls_charおよびnls_local情報を取得しないために、コア・ダンプが発生しました。Bug#571775 埋込みSQL文にREPLACE関数を使用すると構文エラーが生成される
Bug#573598 ソース・ファイルのDATA DIVISIONにCONSTANT SECTIONがあると構文エラーが生成される
Bug#583044 CALL文のVARCHARホスト変数が正常に拡張されず、COBOLコンパイラの最適化処理により排除される
このため、SQL文が正常に実行されませんでした。Bug#586092 ネストしたプログラム内でカーソルが宣言されると、Pro*COBOLではカーソル識別子が宣言されていないことを示す擬似的なエラーが戻される
Bug#598203 コマンドライン・オプションLTYPE=NONEを使用してもプリコンパイル・リスト・ファイルが完全に抑制されない
LTYPE=NONEを指定しても、作成されるリスト・ファイルには相互参照とオプションのリストが含まれます。Bug#598204 XREF=NOに指定すると、Pro*COBOLでは有効なSQL識別子に対してSQL識別子が宣言されていないことを示すエラーが戻される
Bug#599284 VALUES句に&を含む宣言があると構文エラーが生成される
次に例を示します。01 USERNAME PIC X(10) VALUE "SCO" & "TT".
Bug#606918 生成されるグループ項目の要素が1行を超えている場合、Pro*COBOLではVARYING変数に対して不正なコードが生成される
マルチバイト環境では、マルチバイト・キャラクタのバイト間に改行が発生し、コンパイル時エラーになることがあります。Bug#610739 Pro*COBOLでは<と=の間に空白があると<=が認識されない
Pro*COBOLでは、<=の処理時に空白がスキップされるようになりました。同様の変更が行われたため、>=、<>、!=、^=に含まれる空白も受け入れられます。Bug#611974 INTO句に含まれるホスト変数名がコロンで始まっていない場合、Pro*COBOLではSQL識別子として扱われる
SQL識別子にはハイフンを使用できないため、この場合にホスト変数名にハイフンが含まれていると、Pro*COBOLでは擬似的なエラーが戻されます。Bug#612519 sample4.pcoで正しい意味を持つ名前としてSELECTIONがINEMPNOに変更される
Bug#622811 RELEASE_CURSOR=YESオプションを使用するとメモリー・リークが発生する
カーソルのクローズ時にメモリー・リークが発生しました。Bug#629475 特定のCOBOLコンパイラ(NECなど)では、COMP-1またはCOMP-2が使用されている場合にPIC句が受け入れられない
Pro*COBOLでは、PIC S9(4) COMP-1を使用して一時変数が生成され、一部のCOBOLコンパイラではコンパイラ・エラーになりました。Bug#629943 ANSI規格により、レベル01ではOCCURS句を使用できない
Pro*COBOLではOCCURS句を使用して少数の一時変数がレベル01で生成され、厳密なANSI準拠コンパイラ(DEC COBOLコンパイラなど)ではコンパイル・エラーになりました。Bug#631374 不正に生成されたコードまたはプリコンパイル時エラーにより、暗黙的なVARCHARホスト変数を使用できない
次に例を示します。01 EMPNAME. 49 EMPNAME-LEN PIC S9(4) COMP. 49 EMPNAME-ARR PIC X(10).
たとえば、次のコードで使用するとします。
EXEC SQL CONNECT :EMPNAME IDENTIFIED BY :PASSWD END-EXEC.
この場合、プリコンパイラ・エラーが(VARCHAR=YESオプションを使用)生成されました。
PCB-S-00208: ホスト変数"EMPNAME"の型が正しくありません。
同じ暗黙的なVARCHARを次のようにCONNECT以外の文に使用するとします。EXEC SQL SELECT ENAME INTO :EMPNAME FROM EMP WHERE EMPNO = 7788 END-EXEC.VARCHAR=YESオプションを指定してプリコンパイルすると、次のように不正なコードが生成されます。
CALL "SQLADR" USING EMPNAME-LEN SQL-SQHSTV(1)このリリースでは、次の正しいコードが生成されるようになりました。
CALL "SQLADR" USING EMPNAME-LEN IN EMPNAME SQL-SQHSTV(1)
Bug#636325 8.0.4より前のリリースでは、デフォルトで次のように埋込みSQL CONNECT文を使用して、SYSDBA権限とパスワードCHANGE_ON_INSTALLで識別されたユーザーSYSに接続できる
EXEC SQL CONNECT :uid IDENTIFIED BY :pwd;
リリース8.0.4では、接続モードを指定する必要があるため、この埋込みSQL CONNECT文は失敗します。Pro*COBOL 8.0.5では、次のように新規の埋込みSQL CONNECT構文を使用して接続モードを指定できます。EXEC SQL CONNECT:uid [ IDENTIFIED BY:pwd ] [ AT [:]dbname [ USING:hst ] ] [ ALTER AUTHORIZATION:newpw ] | [ IN { SYSDBA | SYSOPER } MODE ]制限:
auto_connect機能を使用している場合は、SYSDBA/SYSOPERモードで接続できません。
Bug#642112 埋込みSQL CONNECT文を介して接続されていない場合、SQLLIBでORA-01012エラー・メッセージが戻される
Bug#221157 INSERT文、UPDATE文またはWHERE句で未割当ての標識変数が使用されると、メモリー・エラーが戻される
グループ項目の宣言時には標識変数は未割当てで、グループ項目の前の要素の合計長は奇数バイトです。Bug#286765 動的SQLを介してホスト配列をPL/SQL表にバインドすると実行時エラーが発生する
Bug#344346 一部のNLS言語では、コマンドライン・オプションの説明が長すぎて1行に収まらず、多数の空白を挿入しなければ複数行に分割できないため、ヘルプ画面を要求すると、プリコンパイラが無限ループに入る
ヘルプ画面を要求すると、長さが48バイトの倍数で空白を含まないメッセージを表示するときに、プリコンパイラがループに入ります。Bug#369858 実際には正常な動作であり、LITDELIMはINLINEとして許可されない
この修正により、このオプションがEXEC ORACLEオプションとして有効でないことを示す警告が戻されます。EXEC ORACLE OPTION (LITDELIM=APOST) END-EXEC. .............................................^ PCC-W-0028: オプション"litdelim"は正しいEXEC ORACLEオプションではありません。
Bug#467646 別個にプリコンパイルされたソース・ファイルにバインド/定義変数が含まれていないと、メモリー・リークが発生する
Bug#475842 ホスト変数としてCOMP-1/COMP-2を使用するプログラムがNECコンパイラで正常に動作しない
作成された実行可能ファイルでは、正しいデータをフェッチできません。また、NEC COBOL85の場合、COMP-1とCOMP-2の定義が他のプラットフォームとは異なります。COMP-1は2バイトのバイナリ形式(shortなど)、COMP-2は4バイトのバイナリ形式(longなど)です。S9(4)からCOMP-1に変更するか、S9(9)からCOMP-2に変更すると、パフォーマンスが改善されます。NECではPIC S9(4)、S9(9)、COMP-1およびCOMP-2は同じデータ型であり、COMP-1とCOMP-2の長さはそれぞれ2バイトまたは4バイトとして定義されるため、可変長のバイナリ・データ型PIC S9(4)またはS9(9)よりも単純です。Bug#513346 OCCURS句が宣言の最後にあり、TIMESキーワードが使用されていないと、不正なコードが生成され、COBOLコンパイル・エラーが発生する
Bug#513360 特定の型のホスト変数が完全に有効な場合に、XREFで無効として表示され、型が表示されない
Bug#515388 ソース・ファイルの最終行が他のソース・ファイルのEXEC SQL INCLUDEだった場合に、Pro*COBOLでセグメンテーション・エラーが発生する
Bug#523686 ENVIRONMENT DIVISIONにEXEC ORACLE IFDEF文を使用すると、他の場合にはPro*COBOLで受け入れられる文が構文エラーになる
Bug#533222 プリコンパイラにより生成されたエラー・メッセージがリスト・ファイルに書き込まれない場合がある
通常、この問題が発生するのは、エラー・メッセージ間または最後のエラー・メッセージとソース・ファイルの終わりの間に256行以上ある場合です。Bug#533231 MAXLITERALオプションが使用され、インラインがソース・コードの場合に、Pro*COBOLでは警告メッセージではなくエラー・メッセージが発行される
Bug#544803 END-EXECの後にCOPY文があると問題が発生する
Bug#545435 ソース・ファイル内でFETCH文がOPEN文より物理的に前の位置にあると、コア・ダンプが発生する
Bug#546237 ユーザー名にデータベース名を埋め込んで(SCOTT@service)データベースに接続するとORA-01017が戻される
Bug#547565 IRECLENを超えるとPro*COBOLが停止する
Bug#548201 EXEC文が領域Aで始まるとエラー・メッセージが発行されない
Bug#549767 キーワードIDENTIFICATIONのかわりにIDを使用できない
Bug#549835 OCCURS句でASCENDING/ DESCENDING副次句の前にINDEXED BY副次句を使用できない
Bug#550512 埋込みPL/SQLでEMP-TABLES.EMP-NAMEのような修飾ホスト変数を使用できない
Bug#553884 COPY文で.CPYなどの拡張子が付いたファイル名を指定すると、プリコンパイラから擬似的な構文エラー・メッセージが戻される
Bug#557123 OCCURS句のASCENDING/DESCENDING副次句で修飾識別子を使用できない
たとえば、次の場合は構文エラーになります。01 EMP-REC-TABLES. 05 EMP-NUMBER OCCURS 5 TIMES DEPENDING ON COUNTER ASCENDING KEY IS BINKEY OF EMP_REC_TABLES. <-- qualification that caused syntax error
Bug#562185 拡張子付きのファイル名を引用符なしで含めるとエラーが発生する
たとえば、EXEC SQL INCLUDE FOO.CPY END-EXECの場合はエラーが生成されますが、EXEC SQL INCLUDE 'FOO.CPY' END-EXECの場合は生成されません。Bug#562244 ソース・コード内でプリコンパイラ・オプションとしてINCLUDEを使用できない
Bug#565093 OCCURS n TIMES DEPENDING ON構文を使用して変数を宣言すると、Pro*COBOLで構文エラーが生成される
リリース8.0.5からは、埋込みSQLにOCCURS DEPENDING ON句で宣言した変数を使用すると、プリコンパイル時エラーが発生することに注意してください。リリース8.0.4では、エラーは生成されませんが、信頼性のない出力が生成されます。このことを念頭に置いてください。Bug#447329 宣言にCOPY文を使用すると擬似的なエラーがレポートされる
Bug#447332 ARRAYLEN文に数字で始まる変数またはハイフンを含む変数を使用すると、擬似的な構文エラーが戻される
Bug#447337 Pro*COBOL 2のエラー・メッセージ232がホスト変数のかわりにSQL文の開始を示す
Bug#447340 fips=yesを指定しても、VARYING、暗黙的なホスト変数、EXEC ORACLE文およびARRAYLEN文など、Oracleの拡張機能の一部にFIPSフラグが設定されない
Bug#447351 次の条件にはエラーまたは警告フラグが設定される必要があるが、実際には設定されない
Bug#453141 comp5=yesオプションが指定されていてもPro*COBOLでcomp-4がcomp-5に変更されない
Bug#454113 動的SQLで文字列リテラルを使用してマルチバイト・プログラムをプリコンパイルすると、Pro*COBOLでセグメンテーション・エラーが発生する
これは、文字列リテラル自体にマルチバイト・キャラクタが含まれている場合も、シングルバイト・キャラクタが含まれている場合も同じです。Bug#454277 Pro*COBOLでプリコンパイルの完了時に終了コードが設定されない
このため、プリコンパイル中にエラーが発生してもmakeスクリプトによりCOBOLコンパイルが続行され、リンク段階に進む可能性もあります。Bug#454749 Pro*COBOLプリコンパイラが、終了時にすべてのメモリーをオペレーティング・システムに解放しない
プロセスの終了時にメモリーを自動的にリカバリしないシステムでは、多数のプリコンパイルを実行すると、システム・メモリーがすべて使用される場合があります。Bug#454796 表の名前に対してPARTITION句を使用できない
この句は、INSERT、UPDATE、DELETE、LOCK TABLEおよびSELECTの各DML文に使用できます。Bug#454801 副問合せではWITH READ ONLY、WITH CHECKオプションを使用できない
Bug#456419 Pro*COBOLでCOPYキーワードの後に文字列を使用できず、すべての形式のREPLACING句を使用できない
Bug#456425 SELECT文にROWIDを使用できない
Bug#458644 ARRAYLEN文で表のフィールド名とディメンション名に修飾名を使用できない
次の構文を使用できるようになりました。EXEC SQL ARRAYLEN GRP-VAR.TABLE-FIELD (GRP-VAR2.DIMVAR) END-EXEC.
Bug#460295 存在しないファイルをプリコンパイルすると、予期されるPCB-S-00104エラーの他にアサーションPGE 90104とPro*COBOLエラーPCB-I-00556が戻される
Bug#461435 ハイフン(-)を含むCOBOL変数名を記述子として使用すると、プリコンパイル中に擬似的な構文エラーが戻される
Bug#461614 ヒント・コメントを使用すると実行時に擬似的なエラーが戻される
Bug#462650 WORKING-STORAGE SECTIONの最初の宣言の列1〜6に順序番号があると、プリコンパイラで不正なコードが生成される
Bug#462762 DELETE/UPDATE DML文では、副問合せと表の別名を同時に使用できない
次の例は許可されず、エラー(プリコンパイルまたは実行時)が生成されます。exec sql delete (subquery) <alias> .. exec sql insert into (subquery) subquery...- <alias> not allowed exec sql update (subquery) <alias> set .. exec sql delete <table> <alias> .. exec sql update <table> <alias> ..
Bug#467940 埋込みPL/SQLで".."を使用すると擬似的な構文エラーが発生する
Bug#468121 USERIDオプションを使用するとプリコンパイラが即時に終了せず、接続できない
かわりに、プリコンパイラはプリコンパイルを続行し、多数の擬似的なエラーを戻します。Bug#469446 構文エラー・メッセージに実際には使用されているトークンが表示されない
Bug#469449 Pro*COBOLでCONNECT文のALTER AUTHORIZATION句がサポートされない
この句はCONNECT文の最後の位置でサポートされるようになりました。構文は次のとおりです。alter authorization :hv
hv はホスト変数です。Bug#469468 本来、Pro*COBOLでは、CONNECT BYが先に使用されている場合にも、常にSTART WITHの後にCONNECT BYが生成される
このため、以降に明示カーソルで使用されるプリコンパイルされたSQL文の場合には、問題が発生します。文が逆の順序で生成されているため、結果的なOPEN USING <bind variable list>ではバインド変数が正しい順序で生成されない場合があります。これにより、プログラムの実行中に実行時の型不一致エラーとなります。Bug#470161 一部のプラットフォームでは、擬似的な型であるVARYINGおよびSQL-CONTEXTを置換するように生成された宣言で、COMP-5のかわりにCOMP5が生成される
Bug#472605 グループ項目(varchar=noの場合)と暗黙的なVARCHAR(varchar=yesの場合)の同値化が正常に処理されない
Bug#473530 EXEC SQL VARで一部の型が正常に同値化されない
Bug#473568 PREPARE <statement-id> FOR <SQL-text>の場合に不正なコードが生成される
Bug#473574 OPEN <cursor> USING文を使用した場合に、PREPAREした動的SQL文に対するカーソルでなくても、エラーが生成されない
Bug#475242 1つのPL/SQLブロックで同じホスト変数を2回以上使用すると不正なコードが生成される
Bug#477593 SQLSTATE状態変数を使用し、SQLCODE状態変数またはSQLCAを使用しないANSIモードのプログラムをプリコンパイルすると、不正なコードが生成されてCOBOLコンパイル・エラーが生成される
Bug#480940 WHENEVER条件が該当しない場合にも、一部のEXEC SQL文に対してPro*COBOLで余分なIF文が生成される
たとえば、COMMIT文の場合は、WHENEVER NOT FOUNDに対応するIF文の生成が開始されます。
Bug#483749 EXEC SQL INCLUDEでハイフン(-)を含むファイル名が指定されていると構文エラーが戻される
Bug#485650 COBOLのリスト制御文EJECT、SKIP1、SKIP2、SKIP3およびTITLEを使用すると、プリコンパイル中に擬似的なエラーが戻される
Bug#487458 WORKING-STORAGEまたはPROCEDURE DIVISIONの外側にEXEC SQL INCLUDE文があると、プリコンパイル中に擬似的な構文エラーが戻される
Bug#495491 IRECLENより長いソース行があると、通常は擬似的なエラーが戻される
Bug#495503 --スタイルのコメント行の後に、順序フィールドに値を含む1行があると、プリコンパイル中に擬似的な構文エラーが戻される
Bug#496227 SQL文に順序(修飾)が使用されていると、Pro*COBOLで不正なコードが生成され、実行時に擬似的なエラーになる場合がある
また、データベース・リンク(@)の修飾を使用すると、プリコンパイル時に擬似的な構文エラーになります。
Bug#496783 FOR UPDATE OF句でカーソルをオープンすると、実行時にORA-00904エラーが戻される場合がある
Bug#500353 PREPARE USINGまたはEXECUTE USING動的SQL文の前に実行可能なSQL文がないと、プリコンパイル中にセグメンテーション・エラーが発生する場合がある
目的
OracleがOracle7、Oracle8i、Oracle9i、Oracle10gまたはシステム固有のOracleバージョン(つまり、アプリケーションの接続先バージョン)のうち、どのセマンティクス・ルールと構文ルールに従うかを指定します。
構文
DBMS={ V7 | V8 | NATIVE }
デフォルト
NATIVE
使用方法
インラインでは入力できません。
DBMSオプションを使用すると、Oracleのバージョン固有の動作を制御できます。DBMS=NATIVE(デフォルト)を指定すると、Oracleはアプリケーションの接続先データベースのセマンティクス・ルールおよび構文ルールに従います。
DBMS=V8またはDBMS=V7を指定すると、OracleはOracle9i以降のそれぞれのルールに従います(Oracle7、Oracle8およびOracle8iと同じです)。
次の構文の使用中が対象です。
EXEC SQL LOB LOAD :size FROM FILE ...
amountパラメータ(:size)は、最大ロード量を示します。指定した量がロードされる前にソースBFILEの終わりに達すると、操作は終了してORA-22993エラーが戻されます。