Does someone have an effective two-dimensional FFT subroutine in Fortran 77?
Numerical building blocks like matrix algebra, linear algebra, or FFTs are not normally programmed by yourself, but taken from libraries. The reason for this is that getting those building blocks right is *very* difficult, and you get absolutely nothing from doing them yourself. FFT routines are, for example, provided by MKL or ACML (which are recommended because you also get the matrix stuff), but you can also take them from FFTW, which comes in packages for all linux systems (install fftw3) and can also be used from Fortran.
Note: You mean "efficient". "Effective" and "efficient" are not the same things.
 And in the matrix multiplication case, you simply cannot beat BLAS. It's impossible.
FFTW is wonderful, but if you want a quicker solution, check Ooura's Mathematical Software Packages. I found Ooura's FFT routines to be efficient and easy to use.
You can find a few from this website: http://people.sc.fsu.edu/~jburkardt/f77_src/f77_src.html
fftw3 claims to be the fastest although it is written in C language.
Separate names with a comma.