fortranintel-fortran

Correct suffix for Fortran 2003 source file - Intel Fortran compiler


I've written a small snippet of code, trying to adhere to the Fortran 2003 standard. The code is available on github.

This is my makefile:

FC = gfortran
FLGS = -g -pg -std=f2003 -I. -fbounds-check
DEPS = camx.prm
OBJ = unit-test-hadvppm.o hadvppm.o

#linker macro
%.o: %.f03 $(DEPS)
        $(FC) -c -o $@ $< $(FLGS)

#build targets

gnu-amd64-linux: $(OBJ)
        $(FC) -o $@ $^ $(FLGS)

clean: gnu-amd64-linux
        rm *.o

The code compiles without a problem using the above makefile and gfortran.

However, if I try to compile it with iFort, using just

ifort -o ifort-amd64-linux unit-test-hadvppm.f03 hadvppm.f03

it doesn't work, see the output below. I suppose that this has to do with the .f03 free file format. Is there a flag in iFort similar to gfortran's -std=f2003 flag? I tried to find this in the iFort Documentation, should I look harder?

enter image description here


Solution

  • There is nothing in the standard that specifies the suffix of the files. Intel always stated, that they treat *.f90 as the suffix for the free source format irrespective of the standard version. It is just a convention not based on any standard document.

    Maybe the f90 suffix is little unfortunate, looking like just for Fortran 90, but you shouldn't hesitate to use it for every free-format source file.

    Personally, I also do not like the practice of .f95,.f03, .f08 files. Should I rename the source file just because I call some intrinsic from a newer standard?