OSVSVSC2MF COMPUTATIONAL-1、COMPUTATIONAL-2、ISO2002 FLOAT-SHORT、および FLOAT-LONG 形式

これらの形式は、内部浮動小数点データ項目には使用されない。内部浮動小数点データ項目は、数値データ項目を使用できる構文、および構文が ANSI'74、ANSI'85、ISO2000、OSVS、VSC2 のいずれかの COBOL 言語定義に含まれる構文で使用できる。そのようなデータ項目は、特定の COBOL 動詞の規則で明示的に許可されていない限り、整数データ項目が必要な場合には使用できない。内部浮動小数点データ項目は、特定の規則で許可されていない限り、他の構文では使用できない。

内部記憶形式はオペレーティング システムによって異なっていることがある。どのような記憶形式が採られていても、浮動小数点数には 4 つの要素がある。

  1. 指数部 - 仮数部の値に乗除する 10 のべき乗値。
  2. 指数部の符号 - 仮数部の値に、1、10、100 などの値を掛けるのか、その値で割るのかを示す。
  3. 仮数部 - 具体的な値。これに指数部の値を掛けるか、指数部の値で割ったものが、該当データ項目の数値となる。
  4. 仮数部の符号 - 結果として得られたデータ項目の値が正か負かを示す。

ISO2002 USAGE FLOAT-SHORT は USAGE COMPUTATIONAL-1 と同等である。USAGE FLOAT-LONG は USAGE COMPUTATIONAL-2 と同等である。

一般に、USAGE COMPUTATIONAL-1 (COMP-1) のデータ項目を単精度浮動小数点数といい、USAGE COMPUTATIONAL-2 (COMP-2) のデータ項目を倍精度浮動小数点数という。オペレーティング システムや COBOL で利用できる数学登録集によっては、単精度浮動小数点数と倍精度浮動小数点数で制約条件が異なっている場合がある。たとえば、指数部の最大の大きさや仮数部の最大の大きさに制限がある。詳細については、使用しているオペレーティング システムまたは数学登録集の浮動小数点数に関する資料を参照。

ANSI/IEEE 標準 754-1985、倍精度浮動小数点数用 IEEE 標準に従うオペレーティング システムでは、COMPUTATIONAL-1 および COMPUTATIONAL-2 はそれぞれ Single Format および Double Format と同等である。

内部浮動小数点数表現は、連続した数値を表すものではないことを理解することが重要である。内部浮動小数点数表現はいろいろなオペレーティング システムを通じた標準とはなっていない。たとえば、ある内部浮動小数点数表現では、10 進数との対応関係は下記のようになっている。

内部 (16 進) 表現 10 進値
x"AD17E148" -0.12345673E-23
x"AD17E149" -0.12345810E-23

したがって、10 進値 -.12345678E-23 と正確に等しい内部浮動小数点数を求めても、その値は決して得られない。一方、別の内部浮動小数点数表現では、この値は得られるが、上に記した値は得られないということもある。このため、内部浮動小数点数項目と他の数値 (外部浮動小数点数項目および浮動小数点数定数を含む) が正確に一致することを求める応用は移植性がなく、同じ入力データを使用しても処理手順の流れを変えなければならないことがある。

内部浮動小数点数項目の記憶域の大きさは、USAGE 句によって決まる。USAGE COMPUTATIONAL-1 は項目用に 4 バイトを予約し、USAGE COMPUTATIONAL-2 は記憶域用に 8 バイトを予約する。

IBMCOMP コンパイラ指令がオンであると、SYNC 句を伴う内部浮動小数点数項目の前に充てん文字が埋められることがある。この充てん文字はその項目の一部ではなく、その項目に記録されるデータに影響されることはない。

COBOL システムでは、COMP-1 項目は小数点以下 7 桁、COMP-2 項目は小数点以下 16 桁になっている。ただし、メインフレームとの互換性のために、DISPLAY 文は COMP-1 では小数点第 8 位、COMP-2 では小数点第 18 位を示す。浮動小数点項目を使用するすべての演算で、精度の限界を考慮する必要があり、精度の限界を超える小数点以下の桁を無視する必要がある。