我正在处理一段传统的F77代码并尝试转换它 等效的F90代码。我遇到了下面的这些行,可能会有一些 一个人建议我的转换是否正确?
Fortran 77代码:
Subroutine area(x,y,z,d)
do 15 j=1,10
if (a.gt.b) go to 20
15 CONTINUE
20 Statement 1
Statement 2
Statement 3
end subroutine
我尝试将其转换为F90,如下所示:
Subroutine area(x,y,z,d)
dloop: do j=1,10
if (a>b) then
statement 1
statement 2
statement 3
else
write(*,*) 'Exiting dloop'
exit dloop
end if
end do dloop
end subroutine
有人可以建议这种方法是否正确吗?在我的结果中,我没有得到我期望的结果。所以我的逻辑可能存在问题。
答案 0 :(得分:4)
你的翻译有点错误......第一步是重建do
循环,循环在15
:
Subroutine area(x,y,z,d)
do j=1,10
if (a.gt.b) go to 20
enddo
20 Statement 1
Statement 2
Statement 3
end subroutine
现在你可以看到goto
导致"跳出循环"。在此特定示例中,这相当于exit
,代码可以写为
Subroutine area(x,y,z,d)
do j=1,10
if (a.gt.b) exit
enddo
Statement 1
Statement 2
Statement 3
end subroutine