I am working with an older Fortran code and during compilation I get many different error messages, some of the of the following format:
if(iand(n_jz2_max,1).eq.0) then
1
Error: Arguments of ‘iand’ have different kind type parameters at (1)
where n_jz2_max
is an integer*4
.
I understand that the iand
no longer supports parameters of different kind type, but I do not know how to change the code to be able to compile.
I tried to compile the code with an older version of gfortran, but this is not an option for me. The Ubuntu version I have installed does not allow me to install older versions of gfortran. Another solution would be to install an older Ubuntu version, but I prefer to make a try and change the code.
Update:
Thank you everyone for your answers. Indeed I was using compiler options like -fdefault-integer-8 which led to errors. This is how I was compiling the code: (The include option was added because the code depended on a file located inside a folder named "include".)
$ mpif90 -f90=gfortran -c -w -I include -O2 -fdefault-integer-8 -o build/mm_1.16.o source/mm_1.16.f90
After many unsuccessful tries, I ended up removing all mpich versions from my laptop and installing the newest version. I changed the compilation options to
$ mpif90 -c -w -I include -O2 -o build/mm_1.16.o source/mm_1.16.f90
and the code compiled without any issues.
2
Answers
Thank you everyone for your answers. Indeed I was using compiler options like -fdefault-integer-8 which led to errors. Of course, I was just following the Makefile of the code. This is how I was compiling the code: (The include option was added because the code depended on a file located inside a folder named "include".)
$ mpif90 -f90=gfortran -c -w -I include -O2 -fdefault-integer-8 -o build/mm_1.16.o source/mm_1.16.f90
After many unsuccessful tries, I ended up removing all mpich versions from my laptop and installing the newest version. I changed the compilation options to
$ mpif90 -c -w -I include -O2 -o build/mm_1.16.o source/mm_1.16.f90
and the code compiled without any issues.
As the comments mention, this shouldn’t happen with the default compilation options. You’re likely using
-fdefault-integer-8
or something like that.What you can do to make sure that the kind of the literal
1
and the0
matches the kind ofn_jz2_max
could be something like