ページの先頭行へ戻る
NetCOBOL V12a (V12.2.0A) リリース情報
FUJITSU Software

2.1.7 規定外の外部10進項目同士の加減算の演算結果について

変更内容

以下の条件を満たす算術文がある場合、V10.1.0とV10.2.0以降で演算結果が異なります。

  1. 加算または減算の二項演算の算術文である。かつ、

  2. 結果の一意名の数は、1つのみである。かつ、

  3. [NOT] ON SIZE ERRORの指定がない。かつ、

  4. ROUNDED指定がない。かつ、

  5. 2つの作用対象のどちらもが、全桁数が16桁から18桁の外部10進項目である。かつ、

  6. 二項演算の中間結果(注)の精度が17桁から19桁である。かつ、

  7. 2つの作用対象のどちらかの内部表現が外部10進項目として誤っている。

    注 : 中間結果の精度については、“COBOL文法書”の“D.2 四則演算の中間結果”を参照してください。

           WORKING-STORAGE SECTION.           
           01 DATA-ZONE1    PIC S9(18).
           01 DATA-ZONE2    PIC S9(18).
           01 DATA-2 REDEFINES  DATA-ZONE2 PIC X(18).
           01 DATA-ZONE3    PIC S9(18).
           01 DATA-3 REDEFINES  DATA-ZONE3 PIC X(18).

           PROCEDURE DIVISION.
               MOVE X"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" TO DATA-2  DATA-3 ・・・ ア
               COMPUTE DATA-ZONE1 = DATA-ZONE2 + DATA-ZONE3
               DISPLAY DATA-ZONE1

上記のプログラムでは、外部10進項目に英数字項目の記憶領域を割り当てます。'ア'の転記を実行すると、DATA-ZONE2とDATA-ZONE3には外部10進項目として誤った内部表現(0xFFFF...FFFF)が設定されます。

  • V10.1.0の結果

        +333333333333333330
  • V10.2.0以降の結果

        +545555555455555554

対処方法

外部10進項目として誤った内部表現が設定されている作用対象を含む算術文の結果は規定されていません。誤った内部表現を設定している箇所を修正してください。

外部10進項目の正しい内部表現の概要は次の通りです。

データ項目

ゾーン部

数字部

符号部

外部10進(SEPARATEあり)

3

0~9

2B,2D

外部10進(SEPARATEなし)

3

4,5

参照

“COBOL文法書”の“5.4.17 USAGE句”

“NetCOBOL 入門ガイド”の“5.8 数字項目の標準規則”