Fortran goto遗留错误

时间:2015-07-28 21:40:47

标签: gcc fortran

我想知道如果不满足if条件,如何重复第一个循环是可能的。虽然我一直在尝试使用goto语句,但它给了我遗留错误。我该如何解决这个问题?

   10   do i=0,izmax
         some code
          do j=jmin,jmax
           some other code
          enddo
        enddo

    do i=0,izmax
      if (x < y) then
        write 
      else goto 10
    enddo 

在其他情况下,当循环中只有一个东西应该重复时,方法是什么?我的意思是

     do i=0,izmax
         some code
          do j=jmin,jmax
           some other code
          enddo
  10 statement to be repeated
        enddo

    do i=0,izmax
      if (x < y) then
        write 
      else goto 10
    enddo 

2 个答案:

答案 0 :(得分:1)

notdone=.true.
do while(notdone)
 do i=0,izmax
    first loop
 enddo
 notdone=.false.
 do i=0,izmax
  if (x < y) then
    write 
  else
    notdone=.true.
    exit !exits inner loop
  endif      
 enddo 
enddo

答案 1 :(得分:1)

您可以使用命名循环,将其设置为连续执行,但最后会有from logging import handlers fname = getattr(log, "rot_access_file", "access.log") #The log for access messsages. h = handlers.TimedRotatingFileHandler(fname, when='midnight') h.setLevel(logging.DEBUG) h.setFormatter(_cplogging.logfmt) log.access_file = "" log.access_log.addHandler(h) 语句。然后,如果需要,您可以在到达结尾之前exit外循环。

cycle

你的第二个问题更难理解。该程序再次完成outer : do do i = 0, izmax ! First Loop end do do i = 0, izmax if (x < y) then write(*, *) "Need to do again" cycle outer end if end do exit outer end do outer 后应该执行什么操作。它应该再次进入那个循环吗?它应该立即退出第一个循环并重新启动第二个循环吗?

我认为重复该语句可能更容易,或者将其放在子程序中,从第一个循环内部调用,再从需要再次执行的地方调用。