计算的GOTO无法执行

时间:2016-08-22 09:28:27

标签: fortran goto fortran77 go-to-definition

我在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运行。

也许有人对这个问题有所了解?

1 个答案:

答案 0 :(得分:3)

表格

go to ( 202 ), iprob

是一个计算的转到语句。在这样的语句中,有一个标签列表(这里只是一个202)和一个选择标签的整数表达式(这里是iprob)。

标签选择按列表中的顺序排列。因此,要选择第一个标签,表达式的值应为1。如果iprob的值为202,则会选择第202个标签(如果存在)。如果整数表达式超出范围(小于1,大于列表中标签的数量),则继续执行下一行。正如你所知,在goto中运行。

您可能正在考虑分配转到语句,其中标签由表达式的值确定。但是,我不会详细介绍它,因为它不再是Fortran标准的一部分。