gfortran supports f77, but I'm not sure that this is good f77.
The piece of code is
logical Memb(1)
integer*2 Memc(1)
integer*2 Mems(1)
integer Memi(1)
integer Meml(1)
real Memr(1)
double precision Memd(1)
complex Memx(1)
equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
common /Mem/ Memd
Memi are then used to reference the memory location as pointers. The trouble is that f90 sees this as real arrays.