前回までで、なんとなくfortranでプログラムを 組めるようになってきたのではないでしょうか? まだまだ、覚えることはたくさんありますが 後は自分で計算したいものを見つけて実際に書いて いけば、自然と身に付いてくると思います。
さて、今回は長いプログラムを書く上で、 プログラムを見やすくするのに必要なサブルーチン の考え方を学んでいきます。次の例を見てください。
 
      open(11,file='cal.dat',status='unknown')
c
      ndata=100
      xmin=-5.0
      xmax=5.0
      xl=xmax-xmin
      dx=xl/float(ndata)
c
      do 10 i=1,ndata
       x=xmin + float(i-1)*dx + 0.5*dx
       y=x-1.0
        write(11,*) x,y
 10   continue
      end

このプログラムは、y=x-1という関数の(x,y)を100点 'cal.dat' というファイルに書き出すものです。 これは次のように、書き換え可能です。
 
      open(11,file='cal.dat',status='unknown')
c
      ndata=100
      xmin=-5.0
      xmax=5.0
      xl=xmax-xmin
      dx=xl/float(ndata)
c
      do 10 i=1,ndata
       x=xmin + float(i-1)*dx + 0.5*dx
       y=f(x)
        write(11,*) x,y
 10   continue
      end
c
      function f(x)
      f=x-1.0
      return
      end
どこが変わったかというと、endの後ろに5行付け加わっているのですが、 それ以外にdo ループ中でy=のところが少し変わっています。 計算の流れは、doループ中のx=…の行でxにある値が代入され 次のy=f(x)の部分でfunction に突然ワープします。そしてさきほどのxの値はそのまま function文中に引き継がれfunction中で f が計算されて do ループ中にもどり、さきほど計算された f の値を y へ代入しwrite文で xと yの値をファイルに 書き出します。 長くなった分だけ解りにくい、あるいは効率の悪いプログラム になったと思いますか?短いプログラムでは、なかなか わかりづらいかも知れませんが、 プログラムをいくつかのパーツにわけるという作業は、 あなたが今後プログラムを組んでいく上できっと必要 になると思いますので、がまんしてつき合ってくださいね。 このようにプログラムを短いパーツに わけることのメリットのひとつはプログラムが見やすく なるということがあげられると思います。 例えば、y=x-1の代わりに y=-2x + 5のデータが欲しくなった ときには、書き換えるところがすぐに見付かります。 また、この後に例をあげるサブルーチンと同様に function文は別のファイルに書いてコンパイルすることも できます。この場合のファイルの中身は
 
      function f(x)
      f=x-1.0
      return
      end
となります。 これだと書き換える箇所がすぐに見つかり、見やすいと 思いませんか?
目次へ