私は「後藤50」のような多くの書類とレガシーFortranコードを持っています。私は、gotoのターゲットがグローバルかローカルかを疑問に思っていました。つまり、複数の関数のターゲットが「50」の場合、gotoはどこにつながりますか。FORTRAN後藤スコープ
ありがとうございます。
私は「後藤50」のような多くの書類とレガシーFortranコードを持っています。私は、gotoのターゲットがグローバルかローカルかを疑問に思っていました。つまり、複数の関数のターゲットが「50」の場合、gotoはどこにつながりますか。FORTRAN後藤スコープ
ありがとうございます。
ステートメントラベル(たとえば "50")は、現在のスコープ単位内で定義する必要があります。これは、このコンテキストでは、goto呼び出しがあるサブルーチン/関数に基本的に変換されますコールはメインプログラムにあります)。
だから、たとえば、次のプログラムでは、メインプログラムとの両方がサブルーチンは、自分のラベル50を持っており、GOTOSは「彼ら」ライン50
program testgotos
implicit none
goto 50
call second
50 call first
call second
contains
subroutine first
integer :: a = 10
goto 50
a = 20
50 print *,'First: a = ', a
end subroutine first
subroutine second
integer :: a = 20
goto 50
a = 40
50 print *,'Second: a = ', a
end subroutine second
end program testgotos
に行く含まれています
ローカル。技術的F77標準から
(http://www.fortran.com/fortran/F77_std/f77_std.html)
「ステートメントラベルは、プログラムユニットの範囲を持っています。」