FORMAT文を用いてWRITE文などで出力する書式を指定する場合,    
書式の中に変数が使えないため,    
「プログラムの中で必要な桁数を判断して,    
出力する桁数を変える」という様な芸当ができない.    
このあたりが, 古い言語の堅さの1つなのであるが,    
「だからFORTRANはきらいだ」という前に, 以下の説明を読んで欲しい.    
   
   
   
FORTRAN77では WRITE文の書式識別子にFORMAT文の文番号ではなく, 以下のように, 文字変数を指定することができる. この機能を使えば, 書式の動的な変更が可能になる.
      CHARACTER CFMT*12
      ...
      CFMT = '(T12, F5.2)'
      WRITE(6,CFMT) X
      ...
  
    
この例では, 文字変数cfmtに定数を代入しているだけなので,    
動的に書式を変更するようにはなっていないが,    
cfmtは変数であるから,    
プログラムの中で変更するのは容易である.    
   
   
   
桁数などの数値変数を文字変数に書き込むには, やはりWRITE文を使う. WRITE文の出力機番を書くところに文字変数を書くと, その文字変数を``内部ファイル''として, 普通のWRITE文と同じ様に編集, 出力ができる.
      CHARACTER CFMT*12
      ...
      CFMT = '(T12, Fx.2)'
      WRITE(CFMT(8:8),'(I1)') N
      WRITE(6,CFMT) X
      ...
この例では, 整変数nを文字変数cfmtの8桁目に書き込み, xを出力する際の桁数としている. このあたりのテクニックはFORTRAN66の時代には使えなかったので 知らない人も多いが, 知っていると非常に便利である.