我在Fortran 77代码(gfortran编译器)中遇到一个奇怪的行为, 以下行完美运行(跳转到标签202,iprob = 202):
if( iprob .eq. 202 ) goto 202
!...some commands...
202 continue
然而,它的对应物:
GO TO ( 202 ), iprob
!...some commands...
202 continue
没有。该程序只针对iprob = 202运行。
也许有人对这个问题有所了解?
答案 0 :(得分:3)
表格
go to ( 202 ), iprob
是一个计算的转到语句。在这样的语句中,有一个标签列表(这里只是一个202
)和一个选择标签的整数表达式(这里是iprob
)。
标签选择按列表中的顺序排列。因此,要选择第一个标签,表达式的值应为1
。如果iprob
的值为202
,则会选择第202个标签(如果存在)。如果整数表达式超出范围(小于1,大于列表中标签的数量),则继续执行下一行。正如你所知,在goto中运行。
您可能正在考虑分配转到语句,其中标签由表达式的值确定。但是,我不会详细介绍它,因为它不再是Fortran标准的一部分。