可変書式

可変書式は,FORMAT 文や文字書式仕様の中で使用できる,山括弧 (<>) で囲まれた数値式です。

数値式には,関数呼び出しや仮引数引用を含む,任意の有効な Fortran 式を使用することができます。

式が整数型でなかった場合,使用される前に整数型に変換されます。

可変書式の値がその書式での大きさの制約に従っていなかった場合,エラーが発生します。

可変書式は,H 形編集記述子との併用はできず,文字書式仕様中での使用も許されていません。

可変書式は,書式走査過程で発見されるたびに評価されます。式中で使われている変数値が,I/O 文の実行中に変化した場合,次にその式を含んでいる書式項目が処理されるときには新しい値が使用されます。

次の文を考えます。

	FORMAT (I<J+1>)

書式が走査されると,上の文は欄幅 J+1I (整数) データ転送を実行します。式は通常の書式走査過程で発見されるたびに再評価されます。

以下の文を考えます。

		DIMENSION A(5)
		DATA A/1.,2.,3.,4.,5./

		DO 10 I=1,10
		  WRITE (6,100) I
	100	  FORMAT (I<MAX(I,5)>)
	10	CONTINUE

		DO 20 I=1,5
		  WRITE (6,101) (A(I), J=1,I)
	101	  FORMAT (<I>F10.<I-1>)
	20	CONTINUE
		END

実行時に,これらの文は次の出力を生成します。

	   1
	   2
	   3
	   4
	   5
	    6
	     7
	      8
	       9
	       10
	       1.
	      2.0        2.0
	     3.00       3.00     3.00
	    4.000      4.000    4.000     4.000
	   5.0000    5.0000    5.0000    5.0000    5.0000

以下に他の例を示します。

		WRITE(6,20) INT1
	20	FORMAT(I<MAX(20,5)>)

		WRITE(6,FMT=30) REAL2(10), REAL3
	30	FORMAT(<J+K>X, <2*M>F8.3)

式の値は,READWRITE または PRINT 文の実行中に I/O 項目が処理される毎に再評価されます。たとえば,以下のようになります。

		INTEGER width, value
		width=2
		READ (*,10) width, value
	10	FORMAT(I1, I <width>)
		PRINT *, value
		END

3123 が入力されると,プログラムは 12 ではなく 123 を印字します。

関連情報

I/O 並びと書式の同期の詳細については,「書式仕様と I/O 並び間の相互作用」を参照してください。