誰かが書いたコードがFORTRAN77だった時、そしてそのコードがifortではコンパイルできるのにgfortranだとエラーが出てしまうときがあると思います。
parameter
例えば、gfortranのバージョンにも依存しますが、
parameter ite = 1
はifortだとコンパイルできますが、gfortranではエラーが出る場合を警告が出る場合があります。
その場合には、
parameter(ite = 1)
とします。
長さ制限
問題
ifortでは72文字の長さ制限に引っかからないのにgfortranでは引っかかる例として、
implicit real*8 (a-h,o-z)
a = (1+2+3+4+5+6+7+8+9+10)*(1+2+3+4+5+6+7+8+9+10)*(1+2+3+4+5+6+7+8+9+1)
end
があります。これをtest.fと保存します。ifortの場合には
ifort test.f
はコンパイルできますが、gfortranの場合には、
gfortran test.f
ではコンパイルできません。
これは、最初の空白は実はタブになっていることがポイントです。
FORTRAN77は72文字制限があり、72文字を越えるとコンパイルができなくなります。
上の例では、タブの部分を除くと、72文字です。タブを何文字換算するかは機種に依存するかもしれませんが、ifortの場合には、このタブの部分の文字数のカウントをしていないために、コンパイルができます。
一方、gfortranはタブを文字数にカウントしているため、72文字制限に引っかかってしまい、コンパイルできません。
解決策
上記のコードをgfortranでもコンパイルしたい場合には、
gfortran test.f -ffixed-line-length-80
とします。-ffixed-line-length-80
は、固定書式の長さを80にする、というコンパイルオプションです。
これを使うことで、制限が80文字になるため、タブが入っていても制限に引っかからなくなります。