浮動形式
浮動形式は次の 2 つの部分から成り立ちます。
浮動小数点フィールドの値は、この仮数に、10 の指数分のべき乗を
掛けて求められます。 たとえば、1.2345 が仮数で、指数が 5 である場合、浮動小数点の値は次のように
なります。
1.2345 * (10 ** 5) = 123450
浮動小数点フィールドの定義するには、該当する仕様書のデータ・タイプ
記入項目に F を指定します。
小数点以下の桁はブランクのままにしておく必要があります。 ただし、
浮動小数点フィールドには小数点以下の桁があると見なされます。 この結果、配列指標、DO ループ指標などの、小数位のない数値が必要な
いずれかの場所で、浮動変数が使用されない場合が生じます。
浮動小数点フィールドのデフォルトの初期化および CLEAR 値は 0E0 です。
浮動小数点フィールドの長さは、バイト数で定義されます。 この長さは、4 バイトまたは 8 バイトのいずれかに指定されます。
浮動小数点フィールドに使用できる値の範囲は次のとおりです。
- 4 バイトの浮動 (8 桁)
- -3.4028235E+38 から -1.1754944E-38、0.0E+0、
+1.1754944E-38 から +3.4028235E+38
- 8 バイトの浮動 (16 桁)
- -1.797693134862315E+308 から -2.225073858507201E-308、0.0E+0、
+2.225073858507201E-308 から +1.797693134862315E+308
注:
浮動変数は、i5/OS によるサポートに従って
IEEE 標準に準じています。浮動変数は「科学的な」値を表すように意図されたものであるので、
浮動変数内に記憶された数値は、パック変数内の値と多少異なる値を
表す場合があります。 金額など、特定の数の小数位に正確な数値を表す必要がある
場合には、浮動を使用しないようにしてください。
浮動小数点フィールドの外部表示表現
外部表示表現の一般的な説明については、数値フィールドの場合の外部形式の指定を
参照してください。
浮動値の外部表示表現は次の場合に適用されます。
- データ形式記入項目をブランクにした浮動データの出力
- データ形式記入項目をブランクにした浮動データの入力
- コンパイル時および実行時前配列およびテーブルの
外部形式 (キーワード EXTFMT が省略された場合)
- 命令コード DSPLY を使用した浮動値の表示および入力
- ダンプ・リストへの浮動値の出力
- 組み込み関数 %EDITFLT の結果
出力
浮動値を出力するとき、外部表現は、浮動リテラルに似た形式 (ただし、
以下の点が異なります) を使用します。
- 値は、常に文字 E および仮数と指数の両方の符号を
付けて書き出されます。
- 値の長さは、14 文字または 23 文字です (それぞれ、4F およ
び 8F の場合)。
- 値は正規化されます。 すなわち、小数点は最も重要な桁の直後に付けられます。
- 小数点は、制御仕様書キーワード DECEDIT のパラメーターに応じて、
ピリオドまたはコンマになります。
以下に浮動値の表示例をいくつか示します。
+1.2345678E-23
-8.2745739E+03
-5.722748027467392E-123
+1,2857638E+14 DECEDIT(',') が指定される場合
入力
浮動値を入力するとき、その値は浮動リテラルと同様に
指定されます。この値は、そのフィールド内で正規化あるいは調整する必要はありません。 浮動値が配列/テーブル初期化データとして定義される
場合、それらの値は 14 文字または 23 文字の長さの
フィールド (それぞれ 4F および 8F の場合) 内に
指定されます。
浮動フィールドについては、次の点に注意してください。
- 浮動サブフィールドのアクセスのパフォーマンスを改善するために、
浮動フィールドの位置合わせが必要になる場合があります。 定義仕様書に定義された浮動サブフィールドを位置合わせするために
は、ALIGN キーワードを使用することができます。 4 バイト浮動サブフィールドは 4 バイト境界に位置合わせされ、8 バイト浮動
サブフィールドは 8 バイト境界に位置合わせされます。 浮動サブフィールドの位置合わせの詳細については、ALIGNを
参照してください。
- LIKE キーワードを浮動フィールドと類似のフィールドを定義するために
使用するときは、長さの調整はできません。
- 浮動入力フィールドを、突き合わせフィールドまたは制御フィールド
として定義することはできません。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.