ここでは、NetCOBOL開発環境について、NetCOBOL V10.2.0以降で実施された障害修正により動作が変わるものを、以下の表で説明します。
表2.1 NetCOBOL開発環境の障害修正に関する互換情報項番 | VL(注) | P番号 | 変更内容 |
---|
1 | V12.1.0 | PH16578 | 以下の条件の場合、翻訳前ソース変換機能を使用したCOBOLプログラムの変換時、項類が日本語の作用対象を一方とする比較に対する変換規則に誤りがありました。 その結果、変換後のCOBOLプログラムの実行時、条件式の判定が移行前のプログラムと異なる場合がありました。 V12.2.0以降では、条件式の判定が移行前のプログラムと同じになると判断できない場合は、Eレベルの変換メッセージを出力し、変換を行わないように修正しました。 [条件] 次のどれかの方法により、翻訳前ソース変換機能を使用している。かつ、 COBOLコマンドに-CVmオプションを指定して翻訳している NetCOBOL Studioで翻訳オプションPRECONV(MF)を指定して翻訳している COBPRECONVコマンドを使用して変換している
日本語項目または日本語編集項目を宣言している。かつ、 2.の項目と次のどれかを比較した条件式を記述している。かつ、 英数字項目 英字項目 英数字編集項目 数字編集項目 外部10進項目 文字定数(ALL定数は除く) 16進文字定数(ALL定数は除く)
3.の条件式の作用対象が次のどれかを満たす。かつ、 作用対象の長さが異なる 作用対象のどれかを部分参照している 作用対象のどれかのPICTURE句の反復回数を表す整数に名前付き定数を指定している
3.の条件式を次のどれかに記述している場合。 IF文 EVALUATE文の選択対象 PERFORM文のUNTIL指定 SEARCH文のWHEN指定
[影響] V12.2.0以降では、条件2.~5.を満たすプログラムは、変換時・翻訳時に以下のメッセージが出力されるようになります。 <変換メッセージ> 条件(1.のa.)または(1.のb.)の方法で変換した場合 JMN0502I-E PRCV-m0512E 長さが異なる日本語項目と英数字項目または外部10進項目の比較は変換できません. 条件(1.のc.)の方法で変換した場合 PRCV-m0512E 長さが異なる日本語項目と英数字項目または外部10進項目の比較は変換できません.
<翻訳時メッセージ(例)> JMN3231I-S 'A'(日本語)と'B'(英数字)との比較は,許されない組合せの比較です. [対処方法] 上記のメッセージが出力された場合、作用対象の長さが等しくなるようにする、または、項類を見直すなど、適宜ソースプログラムを修正してください。 |
2 | V12.1.0 | PH15817 | 以下の条件の場合、翻訳前ソース変換機能を使用したCOBOLプログラムの変換時に、USAGE句にCOMP-Xを指定した英数字項目と、英数字項目または文字定数の比較に対し、誤った変換を行う結果、変換後のCOBOLプログラムの実行時、条件式の判定が移行前のプログラムと異なる場合がある問題を修正しました。 次のどれかの方法により、翻訳前ソース変換機能を使用している。かつ、 COBOLコマンドに-CVmオプションを指定して翻訳している NetCOBOL Studioで翻訳オプションPRECONV(MF)を指定して翻訳している COBPRECONVコマンドを使用して変換している
USAGE句にCOMP-Xを指定した英数字項目を宣言している。かつ、 2.の項目と英数字項目または文字定数を比較した条件式を記述している。かつ、 3.の条件式を次のどちらかに記述している場合。
(*) EVALUATE文の選択主体は、翻訳前ソース変換機能の変換対象ではありません。 |
3 | V12.1.0 | PH16220 | 以下の条件の場合、翻訳前ソース変換機能を使用したCOBOLプログラムの変換時、変換が行われない、または、誤った変換が行われる問題を修正しました。 現象は、条件 7.に応じて、以下のとおりとなります。 次の変換メッセージが出力され、変換が行われません。 PRCV-m0407E 日本語項目のVALUE句に指定された継続指定のある文字定数は変換できません. 次のどちらかの変換メッセージが出力され、変換が行われません。 PRCV-m0516E 継続指定のある文字定数から日本語項目への転記は変換できません. PRCV-m0517E 継続指定のある16進定数から日本語項目への転記は変換できません. 次のどちらかとなります。
[条件] 次のどれかの方法により、翻訳前ソース変換機能を使用している。かつ、 COBOLコマンドに-CVmオプションを指定して翻訳している NetCOBOL Studioで翻訳オプションPRECONV(MF)を指定して翻訳している COBPRECONVコマンドを使用して変換している
変換元ソースプログラムおよびCOPY文で取り込まれる登録集ファイル中に文字定数または16進文字定数を記述している。かつ、 2.の定数値の終了を示す引用符の直後に改行文字がある。かつ、 3.の引用符の文字位置(nとする)が72よりも小さい。かつ、 変換元ソースプログラムおよびCOPY文で取り込まれる登録集ファイル中にn+1番目の文字位置が3.と同じ引用符である行が存在する。かつ、 5.の行が3.の行よりも前にある。かつ、 2.の定数が次のどれかに指定されている場合。 日本語項目のVALUE句 (文字定数のみ) 日本語項目または日本語編集項目を受取り側作用対象としたMOVE文の送出し側作用対象 次のどれかに記述した条件式の右辺
【プログラム例】 条件(7.のc.)を満たす条件式のプログラム例を示します。 000010 01 X01 PIC X(9).
000020 01 N01 PIC N(9).
000030 01 B01 PIC 9(9) BINARY.
000040 PROCEDURE DIVISION.
000050*--+---------+123456789+
000060 DISPLAY "START".
000070*--+---------+123456789+
000080 IF X01 = "ABC"
000090 AND SPACE = N01
000100 THEN
000110 DISPLAY "OK"
000120 END-IF. 000060の行:条件 5.の行で、27番目の文字が「"」 000080の行:条件 3.の行で、26番目の文字「"」が最後の文字 |
4 | V10.1.0 ~ V12.0.0 | PH14815 | 以下の条件の場合、COBOLアプリケーションの実行時に、正しく動作しない問題を修正しました。 翻訳オプションINITVALUEに指定し、INITVALUEの値として00以外を指定している。かつ、 ファクトリデータおよびオブジェクトデータのうち作業場所節に初期値を持たないデータ項目を定義している。かつ、 2.のデータ項目に値を設定せずに参照した場合。
|
5 | V10.1.0 ~ V11.0.0A | PH05861 | 以下の条件の場合、COBOLアプリケーションの実行時に、部分参照した外部10進項目から数字編集項目または浮動小数点項目への転記において、送出し側を部分参照する範囲が1桁左にずれる誤りが発生する問題を修正しました。 送出し側が符号付き外部10進項目、受取り側が数字編集項目または浮動小数点項目のMOVE文を記述している(*1)。かつ、 送出し側項目のSIGN句にSEPARATE CHARACTER指定(*2)がある。かつ、 送出し側項目を部分参照している。かつ、 3.の部分参照の長さを定数で指定している場合。
*1: 暗黙のMOVE文を含む。 *2: TRAILING SEPARATE指定 |
6 | V10.1.0 ~ V11.0.0A | PH05538 | 以下の[条件1]~[条件3]のどれかを満たす場合、COBOLアプリケーションの実行時に、基底場所節に宣言したデータ項目を使用する文で、異常終了(ACCESS VIOLATION)または結果誤りが発生する場合がある問題を修正しました。 [条件1] 基底場所節に宣言したデータ項目を以下のどちらかの方法で使用している。かつ、 1-1) 変数で添字付けしている。または、 1-2) 最左端文字位置に変数を指定した部分参照をしている。 翻訳オプションOPTIMIZEが有効である。(*) *:デフォルトはNOOPTIMIZEです。
[条件2] 基底場所節に宣言したデータ項目を、以下のどれかの文に指定している。 INSPECT文 STRING文(中核) UNSTRING文(中核)
[条件3] 基底場所節にOCCURS句を指定したデータ項目を宣言している。かつ、 1.のデータ項目をINITIALIZE文に指定している。
|
7 | V11.0.0 ~ V11.0.0A | PH04570 | 以下の条件の場合、COBOLプログラムの翻訳時に、以下に示すどちらかの現象が発生する問題を修正しました。 [現象1] 誤った構文に対して、以下の翻訳エラーメッセージが出力されず、翻訳が正常終了(*1)します。 JMN2038I-S VALUE句の定数の長さは,項目の長さ以下でなければなりません.項目長に合わせ,定数の右端を切り落とします. *1:作成された目的プログラム中のデータ項目は項目長に合わせて定数の右端を切り落とした定数値が設定された状態で動作します。 [現象2] 正しい構文に対し以下の翻訳エラーメッセージが出力され、翻訳に失敗します。 JMN2106I-S 条件名のVALUE句のTHROUGHの後の値は,THROUGHの前の値より大きくなければなりません.
[条件] 以下のどれかのエンコードの日本語項目または日本語編集項目を記述している。かつ、 1.のデータ項目または1.のデータ項目を条件変数とする条件名にVALUE句を指定している。かつ、 2.のVALUE句に以下のどちらかを満たす日本語定数(*2)を指定している。かつ、 PICTURE句に指定した大きさを超えている THROUGH指定の前後に、大小順序の正しい2つの日本語定数を指定している
3.の日本語定数が41文字以上かつ80文字以下の場合。
*2: 日本語定数同士の連結式を含む。 【補足】 それぞれの現象は、以下の発生条件を満たす場合に発生します。 現象1: 条件 3.のa. 現象2: 条件 3.のb.
|
8 | V10.1.0 ~ V11.0.1 | PH02265 | 以下の条件の場合、翻訳エラー(*1)となるべきCOBOLプログラムが、エラーにならない問題を修正しました。(*2) *1: 以下のどれかのメッセージが出力されません。 JMN1775I-S AS句の直後には文字定数または日本語定数を指定しなければなりません.次の認識できる段落または部まで無効になります.
JMN1107I-S プログラム名として指定できない文字列が指定されました.またはプログラム名が指定されていません.プログラム名を生成し,次の段落または部まで無効になります.
JMN1292I-S プログラム名として指定できない文字列が指定されました.またはプログラム名が指定されていません.
JMN5526I-S INVOKE文のメソッド名の指定は,一意名,文字定数または日本語文字定数でなければなりません.INVOKE文を無効とします.
JMN5561I-S メソッドの行内呼出しに指定するメソッド名は文字定数または日本語文字定数でなければなりません.メソッドの行内呼出しを無効とします. *2: 翻訳エラーにならず、作成された目的プログラムは正しく動作します。 [条件] 以下のどれかに連結式を記述している。かつ、 プログラム名のAS指定 クラス名のAS指定 メソッド名のAS指定 プロパティ名のAS指定 プログラム名定数 INVOKE文または行内呼出しのメソッド名の指定
1.に記述した連結式の先頭が文字定数である。かつ、 1.に記述した連結式に16進文字定数が含まれている。かつ、 COBOLソースプログラムと実行時コード系が以下の組み合わせの場合。 4-1-1) COBOLソースプログラムのコード系がSJISである。かつ、 4-1-2) 実行時コード系がSJISである。 または、 4-2-1) COBOLソースプログラムのコード系がUTF-8である。かつ、 4-2-2) 実行時コード系がUnicodeである。
または、 以下のどれかに連結式を記述している。かつ、 プログラム名のAS指定 クラス名のAS指定 メソッド名のAS指定 プロパティ名のAS指定 INVOKE文または行内呼出しのメソッド名の指定
1.に記述した連結式の先頭が日本語文字定数である。かつ、 1.に記述した連結式に日本語16進文字定数が含まれている。かつ、 COBOLソースプログラムと実行時コード系が以下の組み合わせの場合。 4-1-1) COBOLソースプログラムのコード系がSJISである。かつ、 4-1-2) 実行時コード系がSJISである。
【補足】 以下に指定できる定数は、文字定数または日本語文字定数でなければなりません。 プログラム名のAS指定 クラス名のAS指定 メソッド名のAS指定 プロパティ名のAS指定 プログラム名定数 INVOKE文または行内呼出しのメソッド名の指定
したがって、条件に示す記述は構文規則に違反しており、本来ならば翻訳エラーとなるべき場合です。 |
9 | V10.1.0 | PG78440 | 以下の条件の場合、COBOLアプリケーションの実行時に、正しい結果が得られないことがある問題を修正しました。 翻訳オプションBINARY(BYTE)またはBINARY(WORD,MLBOFF)が指定されている。かつ、 以下の組み込み関数が存在する。かつ、 [A] FUNCTION MAX FUNCTION MIN FUNCTION MEAN FUNCTION MEDIAN FUNCTION RANGE
[B] FUNCTION ANNUITY FUNCTION NUMVAL FUNCTION NUMVAL-C FUNCTION RANDOM
2.の関数の引数が、すべて9桁以下の固定小数点数字である。かつ、 2.の関数が[A]の場合、引数が4つ以上指定されている。
|
10 | V10.1.0 | PG77383 | 以下の条件の場合、COBOLアプリケーションの実行時に、正しい結果が得られないことがある問題を修正しました。 翻訳オプションOPTIMIZEが有効である。(*1)かつ、 内部10進項目を数字編集項目へ設定している文を記述している。かつ、 内部10進項目と数字編集項目のけた数は、「整数部のけた数が同じ、かつ、小数部がない」である。かつ、 数字編集項目は、編集方法にゼロ抑制のみを指定している(PICTUREの文字列には'9','Z','*'のみを使用している)。かつ、 2.の文の前に、データ項目(または中間結果)を2.の内部10進項目へ設定する文(*2)を記述している。かつ、 5.のデータ項目(または中間結果)のけた数と2.の内部10進項目のけた数 の関係が次のようになっている。かつ、 ------------------------------------------------------
データ項目(または中間結果) 内部10進項目
------------------------------------------------------
2 3
4 5
6 7
8 9
10 11
12 13
14 15
16 17
------------------------------------------------------ 5.のデータ項目(または中間結果)と2.の内部10進項目の両方に小数部がない。
*1:デフォルトの翻訳オプションはNOOPTIMIZEです。 *2:数字転記はMOVE文だけでなく、COMPUTE文などの暗黙に転記が発生する場合も該当します。 |
11 | V10.1.0 ~ V10.5.0 | PG76651 | 以下の条件の場合、COBOLアプリケーションの実行時に、長さの異なる日本語項目(日本語編集項目、組込み関数を含む)同士の大小比較の結果が正しくない問題を修正しました。 翻訳オプションRSC(UCS2,LE)またはRSC(UTF16,LE)を指定している。かつ、 日本語項目と、日本語項目または日本語文字定数の大小比較である。かつ、 少なくとも一方が部分参照された項目またはANY LENGTH句の指定がある項目である。かつ、 比較対象の長さが異なる場合。
|
注: VLは、障害が存在する範囲を示します。