Fortran は、Fortran 77 (古くはFortran 66) と Fortran 90 とに大別される。Fortran 90 は、さらに、Fortran 90, 95, 2000, 2003, 2008 などに分類され、後者になればなるほど、新しい仕様や文法が加わったり、古い文法が非推奨になったりしている。とはいえ、77と90の間の違いが、他のどのバージョン間の違いよりも圧倒的に大きい。したがって、Fortran90以降を総称してFortran90と呼ばれることが少なくない。
加えて、(Fortranコンパイラーの)ベンダーごとで、微妙な違いはある。有名なのは、Fortran 77 の仕様「DO 〜 (行番号必須)CONTINUE」で、これについては相当な早期に大半のベンダーが「DO 〜 (行番号なし)END DO」という拡張書式を認めたようだ。あるいは、ORACLE Fortranでは、unsigned integerが定められているが、これはFortran 2008の仕様にも定められていない、ORACLEの独自拡張だ。別のポイントとして、UNIXシステムとのやり取りにおいて、Fortranプロセスからシステムに返り値をわたして終了するcall EXIT(1)が使えるFortranコンパイラーが多い様子だが、これはFortranの仕様書には定められていないらしい(参考: gfortran:EXIT)。
このベンダーごとの相違は時に問題になり得る。昔動いていたコードが20年後には動かなくなったりする。Fortranの仕様では、私の知る限りbackward compatibilityは整っているので、昔動いていたコードが動かなくなったのであれば、それは、