関数としてのサブルーチン呼び出し

戻り値のないサブルーチンが、戻り値があるかのように使用されました。

通常、これは問題のサブルーチンの宣言と定義が一致していないことを示します。

サブルーチン型の FORTRAN 仮引数を呼び出したときにも、同じ種類のエラーが発生することがあります。つまり、仮引数を使用して呼び出されるサブルーチンで、直接呼び出した場合と同じ問題が発生することがあります。この問題が発生するかどうかは、サブルーチン型の仮引数に渡されるサブルーチンに依存します。この問題が発生した場合は、サブルーチン引数が渡された呼び出し位置を特定する問題箇所もレポートされます。

ID

問題箇所

説明

1

呼び出し位置

サブルーチンが呼び出された場所


subroutine IAmASubroutine(i)
integer :: i
i = 5
end

real function IAmAFunction(i)
integer :: i
read *,i
IAmAFunction = 3.14 + i
end

subroutine ICallMyArg(sub)
external :: sub
integer :: j
print *,sub(j)
! actual subroutine "IAmASubroutine" is called as function
print *,j
end

external :: ICallMyArg,IAmASubroutine,IAmAFunction
integer :: k
call ICallMyArg(IAmASubroutine)
call ICallMyArg(IAmAFunction)
! IAmASubroutine is called as a function
print *,IAmASubroutine(k)
end        
        

© 2010 Intel Corporation. 無断での引用、転載を禁じます。