このようにnLinesとnIOsttsを初期化できないため、Gfortranは次のコードをコンパイルできません。最初に宣言してから、必要な初期値を設定するコードに2行追加する必要がありました。FORTRAN:INTENT(OUT)またはRESULT変数を初期化できないのはなぜですか?
なぜこのように機能しますか?おそらくINTENT(OUT)を使用すると、関数がデータを格納する変数がすでに存在するため(つまりFortranのサブルーチンが参照によって動作するかどうかは今は思い出せません)、RESULT変数むしろ不必要と思われる。これはコンパイラ固有のものか、それとも一般的なFortranの特性ですか?
機能LinesInFile(NUnitの、nIOstts)結果(nlines行)
IMPLICIT NONE
INTEGER、INTENT(IN):: NUnitの
INTEGER、INTENT(OUT):: nIOstts = 0
INTEGER :: nlines行= -1DO WHILE(nIOstts.EQ.0)
READ(UNIT=nUnit,FMT='(A)',nIOstts) nLines=nLines+1
ENDDO
RETURN; END機能
http://www.cs.rpi.edu/~szymansk/OOF90/bugs.html – Wildcat