ヘッダーをスキップ

Oracle® Databaseプラットフォーム共通日本語README
10g リリース1(10.1)

 
Go To Table Of Contents
目次

Previous Next

Pro*COBOL README

原典情報: $ORACLE_HOME/precomp/doc/procob2/readme.doc

目次

1 互換性と移行

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プログラマーズ・ガイド』の補足事項

1 互換性と移行

1.1 COBOLでの宣言に関するエラー・レポート

Pro*COBOL 8.1.6からは、COBOLの宣言に拡張コードまたはエラーがあるコードを使用しても、その宣言に対応するCOBOL変数がホスト変数として使用されていないかぎり、構文エラーのフラグは設定されません。つまり、ホスト変数が使用されていれば、宣言レベルではエラーが抑制されますが、フラグは設定されます。

1.2 ネストしたプログラムのサポートとGLOBAL句の生成

Pro*COBOL 2.0.2からは、ネストしたプログラムがサポートされます。この新機能のために、SQLLIB変数とエラー・レポート構造に使用するGLOBAL句を生成する必要がありました。一部のコンパイラでは、ネストしたプログラムがサポートされないため、GLOBAL句が認識されません。GLOBAL句の生成を回避するために、Pro*COBOL 8.1.5にはNESTEDという新規オプションが用意されています。NESTED=TRUE/FALSEはデフォルトでTRUEに設定され、構成ファイル、コマンドラインで使用できます。ただし、インライン(EXEC ORACLE文)では使用できません。

1.3 バージョン8のOCIへの移行

リリース8.1.5からは、SQLLIBでデータベースとの通信にバージョン8のOCIが使用されます。この変更に伴い、次の互換性の問題が発生します。

1.4 V6互換動作のサポート中止

Oracle7には、Oracle7アプリケーションを開発するアプリケーション開発者がOracle6の動作をエミュレートできるように、バージョン6[V6]互換性フラグdbms=v6が用意されていました。Oracleリリース8.0.3では、すべてのOracle8製品(PL/SQL8、すべてのOracleプリコンパイラ、Oracle8 Oracle Call Interface、SQL*ModuleおよびSQL*Plusなど)でバージョン6互換性フラグのサポートが即時に中止されることを示す警告が表示されます。V6互換性フラグのサポート中止は、あるバージョン・リリースから別のバージョン・リリースへのアップグレード間で下位互換性と動作をサポートするというオラクル社の方針と一貫しています。つまり、Oracle6からOracle7へのアップグレードについてはサポートされますが、複数のバージョン・リリースのアップグレードについてはサポートされません。

特に、V6互換性フラグでは、Oracle7でOracle6の動作の次の側面がエミュレートされていました。

Oracle8では、V6互換性フラグのサポート中止に伴い、これらの動作のサポートがすべて中止となります。

1.5 オプションの宣言部

リリース2.0.2より前のPro*COBOLでは、すべてのホスト変数の宣言を、EXEC SQL BEGIN DECLARE SECTION END-EXEC文で始まり、EXEC SQL END DECLARE SECTION END-EXEC文で終わる宣言部に入れる必要がありました。Pro*COBOLリリース2.0.2からは、宣言部の要件がなくなっています。下位互換性を保つために、Pro*COBOLにはプリコンパイラ・オプションDECLARE_SECTION = YES | NOが用意されており、NOがデフォルトです。このオプションは、コマンドラインまたは構成ファイルで指定できます。DECLARE_SECTION=YESの場合は、宣言部で宣言された変数のみがホスト変数として許可されます。宣言部を使用するかどうかに関係なく、すべての宣言が解析されることに注意してください。

1.6 PIC X変数用の新しいデフォルトの外部データ型

リリース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)です)。

...
01 EMPNAME PIC X( 5).
01 EMPNAME1 PIC X( 5).
...
MOVE "FOO " TO EMPNAME
MOVE "barba" TO EMPNAME1
...
EXEC SQL INSERT INTO EMP (EMPNO, ENAME)
VALUES(1234, 'FOO ') END-EXEC.
...
EXEC SQL SELECT ENAME
INTO :EMPNAME1
FROM EMP
WHERE ENAME = :EMPNAME END-EXEC.
...

また、この新規のデフォルトは、sample9のように、PIC X変数の表を宣言し、それをPIC X変数がVARCHAR2の索引付き表にマップされるPL/SQLストアド・プロシージャのコールに使用する場合にも影響します。PICXのデフォルトが変更されたため、PICX=VARCHAR2を指定せずにsample9.pcoをプリコンパイルすると次のエラーが生成されます。

PCB-S-00576: PLS-00418: 配列バインドの型は、PL/SQL表の行の型と一致する必要があります。

そのため、このリリースではPICX=VARCHAR2を指定してsample9をプリコンパイルする必要があります。

1.7 拡張形式のVARCHARグループ項目

VARCHAR=YESオプションを指定すると、拡張形式のVARCHARグループ項目が暗黙的なVARCHARとして認識されます。

1.8 UNSAFE_NULLオプションとDBMSオプションの相互作用

一度に複数の関数を制御するオプション(マクロ・オプション)と1つの関数のみを制御するオプション(ミクロ・オプション)の相互作用に関する新規の一般ルールに従って、UNSAFE_NULLオプションとDBMSオプションの相互作用が変更されます。マクロ・オプションとミクロ・オプションを設定する場合、マクロ・オプションがミクロ・オプションより優先されるのは、マクロ・オプションがミクロ・オプションより優先順位が高いときのみであることに注意する必要があります。詳細は、『Pro*COBOL Precompilerプログラマーズ・ガイド』リリース2.0の第7章を参照してください。

2 新機能

2.1 Pro*COBOL 9.2.0の新機能

2.1.1 Pro*COBOLデモを作成するための新規Makeファイル

リリース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の機能は同じです。

2.2 Pro*COBOL 8.1.6の新機能

2.2.1 Pro*COBOLマルチスレッド・アプリケーションのサポート

Pro*COBOL 8.1.6では、マルチスレッド・アプリケーションがサポートされるようになりました。SQL-CONTEXT疑似型を使用してコンテキスト変数を宣言できます。また、LOCAL-STORAGEセクションとTHREAD-LOCAL-STORAGEセクションでホスト変数を宣言できます。スレッドの有効化、SQLコンテキストの割当てと解放、使用するコンテキストの指定に使用できるように、新規の埋込みSQL文が用意されています。新規のSQL文とディレクティブは次のとおりです。

     EXEC SQL ENABLE THREADS END-EXEC.
     EXEC SQL CONTEXT ALLOCATE :hv END-EXEC.
     EXEC SQL CONTEXT FREE :hv END-EXEC.
     EXEC SQL CONTEXT USE :hv END-EXEC.

アプリケーションのマルチスレッド化を指定できるように、新規のコマンドライン・オプションTHREADS=YES/NO(デフォルトはNO)が用意されています。

2.3 Pro*COBOL 8.1.5の新機能

2.3.1 WHENEVER文の拡張

Pro*COBOL 8.1.5では、WHENEVER文でアクションとしてサブルーチンをコールできます。新規の構文は次のとおりです。

     EXEC SQL WHENEVER <condition> DO CALL <subprogram>
     [USING id1 id2 ... idn] END-EXEC.

この新機能は、ネストしたプログラムを記述する際に有用です。

2.3.2 COBOLインライン・コメントのサポート

Pro*COBOL 8.1.5では、COBOLインライン・コメントがサポートされます。このコメントは、空白1個に続く2つの連続した文字*>で始まり行端の文字位置で終わります。インライン・コメントの継続はできず、使用できるのはCOBOLコード内のみです。

2.3.3 DECIMAL-POINT IS COMMAのサポート

Pro*COBOL 8.1.5は、ENVIRONMENT DIVISIONでのDECIMAL-POINT IS COMMA句をサポートするように拡張されています。この句がソース・ファイルに使用されている場合、VALUE句ではピリオドが数値リテラルとなるためカンマを使用できます。

2.3.4. オプションのDIVISIONヘッダーのサポート

以前のリリースでは、IDENTIFICATION、ENVIRONMENTおよびDATA DIVISIONヘッダーの後に、それぞれのDIVISIONの内容を指定する必要がありました。Pro*COBOL 8.1.5では、これらのヘッダーはオプションです。DIVISION全体がオプションであり、この拡張がDIVISIONヘッダーのみを対象としていることに注意してください。

2.3.5 ラージ・オブジェクト(LOB)のサポート

Pro*COBOL 8.1.3では、すべてのLOB型(BLOB、CLOB、NCLOBおよびBFILE)についてLOBロケータを宣言する方法がサポートされ、LOBロケータを割当ておよび解放する機能と、LOBロケータおよびその値を直接操作するための埋込みSQL文の完全セットが用意されています。LOBSの特定の属性の値は、新規のLOB DESCRIBE埋込みSQL文を介して使用できます。

2.3.6 ANSIの動的SQLのサポート

Pro*COBOL 8.1.3では、ANSIの動的SQL(SQL92の動的SQLとも呼ばれます)がサポートされており、新規のメソッド4のアプリケーションにはこの動的SQLを使用する必要があります。従来のOracleの動的SQLでは記述子はユーザーのプログラム内で定義されますが、ANSIの動的SQLでは記述子はOracleにより内部的にメンテナンスされます。記述子情報と値をALLOCATE、DEALLOCATE、SETおよびGETするために、新規に4つの文が追加されています。また、動的SQLに使用されていた一部の既存の埋込みSQL文も、ANSIの動的SQL構文と新しい形式の記述子(DESCRIBE、EXECUTE、OPENおよびFETCH)を処理するために変更されています。ANSIの動的SQLをサポートするために、DYNAMIC = ANSI | ORACLEおよびTYPE_CODE = ANSI | ORACLEという2つの新規プリコンパイラ・オプションが追加されました。

2.3.7 ユニバーサルROWIDのサポート

Pro*COBOL 8.1.3には、物理ROWID(ヒープ表に関連付けられたROWID)と論理ROWID(索引構成表に関連付けられたROWID)の両方と互換性のあるROWID記述子をALLOCATEおよびFREEにするメカニズムが用意されています。ROWID記述子を宣言するには、新規のPro*COBOL疑似型SQL-ROWIDを使用します。この種の記述子は、埋込みSQL文でホスト変数として使用できます。すべての新規開発では、ROWID記述子を使用することをお薦めします。

2.3.8 DMLのRETURNING句のサポート

Pro*COBOL 8.1.3では、INSERT文のVALUES句内と、DELETE文およびUPDATE文のオプションのWHERE句の後に、オプションのRETURNING句がサポートされます。

2.3.9 ホスト変数としてのグループ項目の表のサポート

Pro*COBOL 8.1.3では、埋込みSQL文のホスト変数として、要素の下位項目を持つグループ項目の表がサポートされます。グループ項目のホスト表は、SELECT文またはFETCH文のINTO句、およびINSERT文のVALUESリスト内で参照できます。

2.3.10 CONNECT文でのSYSDBAモードとSYSOPERモードのサポート

以前のリリースのOracleでは、次のように指定してSYSDBA権限で接続できました。

    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モードを指定できます。

2.3.11 ランタイム・コンテキストのユーザー指定のサポート

Pro*COBOL 8.1.3では、ランタイム・コンテキストのハンドルを宣言し、そのハンドルを一部の新規CONTEXT埋込みSQL文およびディレクティブ(CONTEXT ALLOCATE、CONTEXT FREEおよびCONTEXT USE)で使用する方法を提供しています。
注意: Pro*COBOL 8.1.3では、マルチスレッド・アプリケーションはサポートされません。

2.3.12 プリフェッチのサポート

Oracleでは、問合せの実行時に行数のプリフェッチ指定がサポートされます。これにより、以降に行がフェッチされるときにサーバーのラウンドトリップが不要になり、パフォーマンスが向上します。Pro*COBOL 8.1.3でプリフェッチを使用可能にするには、新規のコマンドライン・オプションPREFETCH = 0 .. 9999を使用します。PREFETCHオプションの値は、問合せの実行時にプリフェッチされる行数を示します(0はプリフェッチが使用禁止であることを意味します)。このオプションは、構成ファイル、コマンドラインまたはインラインで使用できます。

2.4 Pro*COBOL 2.0.2の新機能

2.4.1 DB/2アプリケーションの移行のサポート

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文字列書式の明示的な制御

日付文字列の書式を指定するためのコマンドライン・オプションが用意されています。

2.4.2 その他の全般的な改善点

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に設定することをお薦めします。

3 Pro*COBOL 8.1.5およびPro*COBOL 2.0.2の既知の制限事項

この項では、Pro*COBOL 8.1.5の新機能に伴う既知の制限事項について説明します。

制限:

この項では、Pro*COBOL 2.0.2の新機能に伴う既知の制限事項について説明します。

4 Pro*COBOL 10.1.0.2.0の既知の不具合

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エラーが戻される

5 リリース2.0.2以降で修正された不具合

5.1 10.1.0.2.0で修正された不具合

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でプリコンパイラ・エラーが生成されました。
次に例を示します。

     EXEC SQL INCLUDE t2398218.dat END-EXEC
     EXEC SQL SELECT ............. END-EXEC.

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ファイルが生成されます。

5.2 リリース9.2.0で修正された不具合

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文は正常にコメント化されます。

5.3 リリース9.0.1で修正された不具合

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]に正しい値が割り当てられます。

5.4 リリース8.1.6で修正された不具合

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
     ...........1
     PCB-S-00576: PLS-00902: READ-ONLYバインド変数がOUTまたはIN-OUTコンテキストで使用されています。

部分的な解決策は、埋込み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アプリケーションに実行時エラーが発生する場合がある

5.5 リリース8.1.5で修正された不具合

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 ) EXECUTE
     ^^^^^^^optional

ARRAYLEN文でオプションのEXECUTEを使用すると、動的SQL EXECUTE文を介してホスト配列をPL/SQLの表にバインドできます。PROC 8.0.4からの新規修正により、動的SQL EXECUTE文を介してホスト配列をPL/SQLの表にバインドするには、次のように、ARRAYLEN文の最後にオプションのEXECUTEを追加するようにアプリケーションを変更する必要があります。

     EXEC SQL ARRAYLEN host_array ( dimension ) EXECUTE
     ^^^^^^^

Bug#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でエラーが生成される

プリコンパイラ・エラーが戻されなくなりました。

5.6 リリース8.0.5で修正された不具合

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エラー・メッセージが戻される

5.7 リリース8.0.4で修正された不具合

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#571777    変数宣言のVALUE句にFALSEを使用するとエラーが生成される

Bug#573608    END PROGRAM文に文字列リテラルを使用するたびに、Pro*COBOLで擬似的な構文エラーが戻される

5.8 リリース8.0.3で修正された不具合

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    次の条件にはエラーまたは警告フラグが設定される必要があるが、実際には設定されない

  1. ARRAYLEN文のディメンション変数は、サイズ4バイトの整数(バイナリ)変数である必要がある。
  2. 同じ変数を1つのSQL文またはPL/SQLブロック内でホスト変数と標識変数の両方として使用することはできない。
  3. SQL文でARRAYLEN変数が使用された場合は警告を戻す必要がある。
  4. EXEC SQL、IAFまたはTOOLS文の後にはMAXLITERALオプションを使用できない。
  5. 最初にDECLAREまたはPREPAREしていないEXEC SQL EXECUTE文にSQL識別子が使用された場合はエラーを戻す必要がある。
  6. EXEC IAF文には標識変数を使用できない。
  7. MODE=ANSIのときにEXEC SQL WHENEVER SQLWARNING文が使用されるが、SQLCAは含まれない。

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文がないと、プリコンパイル中にセグメンテーション・エラーが発生する場合がある

6 『Pro*COBOL Precompilerプログラマーズ・ガイド』の補足事項

6.1 DBMSプリコンパイラ・オプションの使用

目的

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と同じです)。

6.2 BFILEの読取り

次の構文の使用中が対象です。

EXEC SQL LOB LOAD :size FROM FILE ...

amountパラメータ(:size)は、最大ロード量を示します。指定した量がロードされる前にソースBFILEの終わりに達すると、操作は終了してORA-22993エラーが戻されます。