Gfortran won't let me compile the following code because nLines
and nIOstts
can't be initialized like this; so I had to declare them first and then add two lines to the code to set their required initial values.
Why does this work like this? Perhaps with INTENT(OUT)
it makes a little more sense since the variable in which the function will store the data already exists (and I don't recall right now whether Fortran subroutines worked by reference or not), but for the RESULT
variable it would seem rather unnecessary. Is this specific of the compiler or is it a general Fortran characteristic?
FUNCTION LinesInFile(nUnit,nIOstts) RESULT(nLines)
IMPLICIT NONE
INTEGER,INTENT(IN) :: nUnit
INTEGER,INTENT(OUT) :: nIOstts=0
INTEGER :: nLines=-1
DO WHILE (nIOstts.EQ.0)
READ(UNIT=nUnit,FMT='(A)',nIOstts)
nLines=nLines+1
ENDDO
END FUNCTION