可変書式は,FORMAT 文や文字書式仕様の中で使用できる,山括弧 (<>) で囲まれた数値式です。
数値式には,関数呼び出しや仮引数引用を含む,任意の有効な Fortran 式を使用することができます。
式が整数型でなかった場合,使用される前に整数型に変換されます。
可変書式の値がその書式での大きさの制約に従っていなかった場合,エラーが発生します。
可変書式は,H 形編集記述子との併用はできず,文字書式仕様中での使用も許されていません。
可変書式は,書式走査過程で発見されるたびに評価されます。式中で使われている変数値が,I/O 文の実行中に変化した場合,次にその式を含んでいる書式項目が処理されるときには新しい値が使用されます。
例
次の文を考えます。
FORMAT (I<J+1>)
書式が走査されると,上の文は欄幅 J+1 の I (整数) データ転送を実行します。式は通常の書式走査過程で発見されるたびに再評価されます。
以下の文を考えます。
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)
式の値は,READ,WRITE または 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 並び間の相互作用」を参照してください。