>> 概要
C言語のprint文などで使われる書式指定子と似た物で、 あらかじめ行番号を付けておき、read,write文を使うときに行番号を指定してやることで その記述にしたがってread,writeの出力を整形する。

>> neutで使われている記述子
整数を記述するI(アイ),少数形式の実数を記述するF, 数字と文字の混在を記述するA、文字列を記述するH.
これに空白を表わすXが加わる。

>> 書き方の基本

(iteration)SYMBOL(arg1).(arg2)

(iteration)は、その後に続く記述を繰り返す回数。SYMBOLは記述子(IとかAとか)。 arg1は1つめのパラメータで、X以外の記述子には必ずあると思ってよい(?)。 arg1は大抵の場合桁総数となる。つまり、I9なら9桁の整数として表示する。 arg2は2つめのパラメータで、先に挙げた中ではFだけが持ち、全体のうち小数点以下の部分が何桁を占めるかを書く。 F5.2ならば、5桁のうち小数点以下が2桁の実数として表示する、となる。 iterationを指定してやると、例えば3I3とすれば、3桁の整数として出力することを3回繰り返す、という意味になる。 Xについての場合はより簡単で、5Xはスペースを5文字分空けることを表わす。

>> 改行
/(スラッシュ)で行う。iterationを指定してやれば、その数だけ行を空けることができる。
write文は1回実行する毎に自動改行するので、普通は一々これで改行する必要は無い。

>> 例

サンプルコード test.f の中身 :
      implicit none
      real*8 a,b,c,d
      a=3.29024098
      b=43081.130384
      c=2495.208
      d=40812
 1000 format(f10.4,1x,f10.4,3x,f5.2,1x,f10.3)
      write(6,1000)a,b,c,d
      end

出力は次のようになる。
$ g77 -o test test.f
$ ./test
    3.2902 43081.1289   *****  40812.000

aは全9桁、小数点以下8桁の実数値である。しかし、FORMATではf10.4と指定している。 これは、全10桁、小数点以下4桁で表示せよ、という意味なので、 まずaの小数点以下4桁までを表示し、残りをスペースで埋めている。小数点も1桁分に数えるので、 出力の左側には10-(1+1+4)=4文字分のスペースが並んでいる。 このように、format文は基本的に右詰めで考える。

次のbも同様に処理されているが、小数点以上が6桁(小数点自身も含む)なので、ちゃんと10桁分全て表示される。 次の3文字分の空白は3xによる。

さて、cの出力にあたる所は*で埋まっている。
書式はf5.2、つまり全5桁で出力するよう要求している。 これに対してcは全8桁。ゆえに5桁では表示しきれない。 こういう時、formatは5桁分すべてを*で埋めて返す。

最後にd.これはdouble型であるが、小数部を含まない5桁の実数である。 書式指定はf10.3で、小数点以下3桁を表示するように要求するが、dは小数部を持たない。 こういう時、formatは40812を40812.000とみなし、存在しない小数部にゼロを詰めて出力する。 ゼロを詰めても全桁数は9しかないので、余った1文字分はそのまま空ける。 cとdの間が2文字分空いているのはこういう理由による。

>> 例その2 繰り返し篇

サンプルコード iter.f の中身 :
      implicit none
      integer a,b,c,d
      a=1
      b=23
      c=456
      d=7890
 1000 format(4I4)
      write(6,1000)a,b,c,d
      end

実行結果:
$ g77 -o iter iter.f
$ ./iter
   1  23 4567890

今度のformat文は、4I4,すなわち"I4"を4回繰り返す、と言っている。
1000を呼んでいるwrite文が出力するのはa,b,c,dなので、ちょうどこれら4つが書式I4で出力されることになる。 しかし結果の方はと言うと、a,bはともかくcとdがくっついてしまっている。
実は、4I4はI4を間を空けることを考慮せずに4回繰り返すことを意味する。 ゆえに、出力に4桁の数が入ると、先頭がその前の出力の末尾と結合してしまう。 従って、このformatが想定しているのは4桁ではなく3桁までの整数ということになる。

>> 超参考ユーアールエル
マニュアル言葉で読みにくいが、正確
実例があり、明解

accend->neut