Rational Developer for System z
Enterprise PL/I for z/OS, Version 4.1, 言語解説書

E フォーマット項目

浮動小数点 (E) フォーマット項目は、実数の浮動小数点 10 進算術データ値の 文字表記を記述するものです。

構文図を読む構文図をスキップする>>-E--(--field-width,fractional-digits-------------------------->
 
>--+---------------------+--)----------------------------------><
   '-,significant-digits-'
 
field-width
フィールド内の桁の総数を表します。 この値は、フォーマット項目が使用されるたびに評価され、整数値 w に変換されます。 w は負であってはなりません。
fractional-digits
小数点の右側にある小数部の桁数を表します。 この値は、フォーマット項目が使用されるたびに評価され、整数値 d に変換されます。 d は負であってはなりません。
significant-digits
小数部になければならない数字の桁数を表しています。 この値は、フォーマット項目が使用されるたびに評価され、整数値 s に変換されます。 s は負であってはなりません。

PUT ステートメントでは、w が正、p が最大浮動小数点精度、e が指数を表すために使用する桁数である場合、以下の項目が真でなければなりません。

w の値は field-width、d の値は fractional-digits、 s の値は significant-digits です。 e の値は、DEFAULT コンパイラー・オプションの E サブオプションで決まります。

入力の場合は、データ・ストリーム中のデータ値は、実数の 10 進浮動小数点定 数または実数の 10 進固定小数点定数 (どちらの場合も符号はあってもなくてもよ い) でなければならず、それ以外のときは CONVERSION 条件が起こります。データ 値は、指定したフィールド内のどこにあってもかまいません。 (便宜上、符号付き指数の前に付ける E は省略することができます。)

フィールド幅を表す値には、 先行ブランクや後書きブランク、 指数部の桁、正符号 (+) または負符号 (-) (オプション) の桁、 文字 E (オプション) の桁、および小数部の 小数点 (オプション) の桁を計算に入れます。

データ値は、指定されたフィールドの任意の場所に現れることができます。ブランクをフィールド内のデータ値の前後に置くことができ、それらは無視されます。 フィールド全体がブランクのときには、CONVERSION 条件が起こります。 小数点がない場合、fractional-digits は小数部の桁のうち仮想小数点の右側にある桁の桁数を示します。 小数点が数の中にある場合は、fractional-digits の指定は 無効にされます。

field-width が 0 のときは、データ・リスト項目にはなにも割り当てられません。

次に例を示します。

  get file(A) edit (Cost) (E(10,6));

このステートメントは、 A から次の 10 文字を取り出して、 それらを浮動小数点 10 進数として解釈します。 小数点は小数部の右端 6 桁の前にあると見なされます。 この数の値は変数 COST の属性に変換され、この変数に割り当てられます。

出力の場合は、データ・リスト項目が浮動小数点に変換され、必要に応じて四捨五入されます。 データの丸めは次のようにして行われます。まず、切り捨てによって右から数字が切り捨てられ、この数字が 5 より大きいか等しい場合は、切り捨てられる数字の左の数字に 1 が追加されます。 この加算が行われると、指数が調整されることがあります。

出力ストリーム中に書き出された文字ストリングは、下記のいずれかの構文になります。

注:
  1. 文字ストリングのエレメントの間にブランクを入れることはできません。
  2. 指数の長さは、浮動小数点データ・タイプおよび DEFAULT コンパイラー・オプションの E サブオプションの設定に応じて、2 または 4 桁にすることができます。 以下の説明では、この長さを e で示しています。

フィールド幅が短すぎて有効数字や符号が失われる場合は、SIZE 条件が起こります。 出力の場合、指定したフィールドが文字ストリングでいっぱいにならないときは、文字ストリングは右寄せされ、左側にブランクが埋め込まれます。


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)