Fortran Coder

改程序中出现的问题

查看数: 14839 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-4-17 10:14

正文摘要:

源程序很简单的依据:DO I=NLAYER,1,-1 我需要加些判定条件,大概改成这个意思: IF(FDTNLAYER.GT.0.AND. FDTNLAYER .LT.NLAYER)THEN      DO I=NLAYER,FDTNLAYER,-1 IF(fDTNLAYER.EQ.NLAYER) ...

回复

Villain 发表于 2015-4-17 12:32:13
renlu617 发表于 2015-4-17 11:28
就是会出现截图里面的情况,以前也没见过啊

f77的固定格式中,do  enddo的格式是没有的。
Villain 发表于 2015-4-17 12:30:14
renlu617 发表于 2015-4-17 11:17
错误        1         error #8093: A do-variable within a DO body shall not appear in a variable definition cont ...

fcode 给你的是以f90的自由格式写的,而你用的后缀是FOR,编译器就是以f77的固定格式来编译,自然会抱错。
fcode 发表于 2015-4-17 12:29:58
这需要代码才能判断。
renlu617 发表于 2015-4-17 11:17:03
fcode 发表于 2015-4-17 10:33
[mw_shl_code=fortran,true] If (fdtnlayer>0 .And. fdtnlayer0 .And. tdtnlayer

错误        1         error #8093: A do-variable within a DO body shall not appear in a variable definition context.   [I]        C:\B90Vdongtu\FOR\B90.FOR        510       

出现了好几个这样的错误,这是怎么回事呢?
fcode 发表于 2015-4-17 10:33:12
[Fortran] 纯文本查看 复制代码
 If (fdtnlayer>0 .And. fdtnlayer<nlayer) Then
   iBegin = nLayer
   iEnd   = fdtnLayer
   iStep  = -1
 Else If (fdtnlayer==nlayer) Then
   iBegin = 1
   iEnd   = 0 !// 结束小于开始,则不循环
   iStep  = 1
 Else If (tdtnlayer>0 .And. tdtnlayer<nlayer) Then
   iBegin =  tdtnLayer
   iEnd   = 1
   iStep  = -1
 Else If (tdtnlayer==nlayer) Then
   iBegin = nLayer
   iEnd   = 1
   iStep  = -1
 End If
 Do i = iBegin , iEnd , iStep
   ...
 End Do

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-23 23:45

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表