けた移動数編集 (P 形)

P 形編集記述子は,実数値と複素数値の 2 つの実部中の小数点の位置を移動するけた移動数を指定します。これは次の形式を取ります。

kP

k は,小数点を (左または右に) 移動する位置の数 (けた移動数) を指定する,符号付きの (正の場合,符号は省略可能です) 整定数表現です。k の範囲は -128 ~ 127 です。

書式付き I/O 文の開始時には,けた移動数の値はゼロになっています。けた移動数編集記述子が指定されると,けた移動数はその新しい値に設定され,別のけた移動数編集記述子が現れるまで,それ以降のすべての実数型編集記述子に影響を与えます。

けた移動数をゼロに戻すには,0P を明示的に指定する必要があります。

書式制御の戻りはけた移動数に影響を与えません (書式制御の戻りの詳細については,「書式仕様と I/O 並び間の相互作用」を参照してください)。

入力処理の規則

入力時に正のけた移動数は小数点を左向きに,負のけた移動数は小数点を右向きに移動します (出力時には,効果が逆になります)。

入力時に,F 形,E 形,D 形,EN 形,ES 形,または G 形編集記述子を使った入力欄が明示的な指数を含んでいた場合,けた移動数は効果を持ちません。そうでなければ,対応する I/O 並び項目の内部値は,外部欄データに 10-k を掛けた値となります。たとえば,2P のけた移動数は入力値を .01 倍するので,小数点は左向きに 2 だけ移動します。-2P のけた移動数は入力値を 100 倍するので,小数点は右向きに 2 だけ移動します。

次に,P 形編集記述子を使った入力の例を示します ('^' は,空白文字を表しています)。

	書式		入力		
	3PE10.5		^^^37.614^	     .037614
	3PE10.5		^^37.614E2	 3761.4
	-3PE10.5	^^^^37.614	37614.0

けた移動数は,それに結合されている最初の実数型編集記述子よりも前になくてはなりませんが,実数型編集記述子の直前にある必要はありません。たとえば,以下の例はいずれも同じ効果を持ちます。

	(3P, I6, F6.3, E8.1)
	(I6, 3P, F6.3, E8.1)
	(I6, 3PF6.3, E8.1)

けた移動数がそれに結合されている実数型編集記述子の直前にある場合,コンマ区切り子は省略可能となります。

出力処理の規則

出力時に正のけた移動数は小数点を右向きに,負のけた移動数は小数点を左向きに移動します (入力時には,効果が逆になります)。

出力時のけた移動数の効果は,それにどのような種類の実数型編集記述子が結合されているかに依存します。

次に,P 形編集記述子を使った出力の例を示します ('^' は,空白文字を表しています)。

	書式				出力
	1PE12.3		-270.139	^^-2.701E+02
	1P,E12.2	-270.139	^^^-2.70E+02
	-1PE12.2	-270.139	^^^-0.03E+04

次の例は,けた移動数を含んでいる FORMAT 文を示しています。

		DIMENSION A(6)
		DO 10 I=1,6
	10	A(I) = 25.
		WRITE (6, 100) A
	100	FORMAT(' ', F8.2, 2PF8.2, F8.2)

上の文は以下の結果を生成します。

	    25.00 2500.00 2500.00
	  2500.00 2500.00 2500.00

以下の例は,読み込み時のけた移動数編集の使用例です。

		READ (*, 100) a, b, c, d
	100	FORMAT (F10.6, 1P, F10.6, F10.6, -2P, F10.6)

		WRITE (*, 200) a, b, c, d
	200	FORMAT (4F11.3)

以下のデータが入力されたと仮定します。

	 12340000  12340000  12340000  12340000
	    12.34     12.34     12.34     12.34
	  12.34e0   12.34e0   12.34e0   12.34e0
	  12.34e3   12.34e3   12.34e3   12.34e3

プログラムの出力は以下のようになります。

	    12.340      1.234      1.234   1234.000
	    12.340      1.234      1.234   1234.000
	    12.340     12.340     12.340     12.340
	 12340.000  12340.000  12340.000  12340.000

以下の例は,書き込み時のけた移動数編集の使用例です。

		a = 12.34
	
		WRITE (*, 100) a, a, a, a, a, a
	100	FORMAT (1X, F9.4, E11.4E2, 1P, F9.4, E11.4E2, &
			-2P, F9.4, E11.4E2)

プログラムの出力は以下のようになります。

	 12.3400 0.1234E+02 123.4000 1.2340E+01   0.1234 0.0012E+04

関連情報

制御編集記述子の形式については,「制御編集記述子の形式」を参照してください。