主题:[讨论]fortran 77 中if 内部例程出错,急
kqlabc3334
[专家分:0] 发布于 2011-04-02 17:42:00
各位大侠,我一个F77编写的程序,运行到
DO IJ=1,NOPTS
IF ( CDNAME .EQ. OPTION(IJ)) GOTO( 6000, 1000, 2000, 3000,8000,
& 4000,8500),IJ
ENDDO
===================================================================
出现错误:
"GDYN2S.f", Line = 50142, Column = 1: 内部: 在例程cif_message_rec的条件语句中选择 DEFAULT 条件。将无法运行到此处。[color=808000][/color]
其中, Line = 50142是指的IF ( CDNAME .EQ. OPTION(IJ)) GOTO( 6000, 1000, 2000, 3000,8000,
====================================================================
这到底是怎么回事,怎么修改,才能避免这样的错误。我已经对它研究了一个星期,也没有找到解决的办法,请教各位大侠,在此多谢啦。
最后更新于:2011-04-04 15:25:00
回复列表 (共40个回复)
11 楼
cgl_lgs [专家分:21040] 发布于 2011-04-06 15:38:00
2000这段代码是不是正好被包含在了一个IF...END IF 语句块或类似的语句块中?如果是这样,那肯定是有问题的了:)
12 楼
kqlabc3334 [专家分:0] 发布于 2011-04-06 17:12:00
多谢cgl_lgs,我把这个子程序发给你,你帮我看看,多谢啦
13 楼
cgl_lgs [专家分:21040] 发布于 2011-04-06 22:03:00
果然不出所料:)先看:
216行 IF(DIFF.LT.0.0000005.AND.DIFF2.LT.0.0000005) THEN
281行 ELSE
292行 ENDIF
而你的:
2000 CONTINUE則是267行,正好在這個IF和ELSE的中間。這對于新的FORTRAN是不被允許的(GOTO不可以GOTO到循環內或條件分支內)。你先看看原來的程序邏輯有沒有問題吧,如果沒有問題,那這一部分可能需要重新改改了:)
14 楼
kqlabc3334 [专家分:0] 发布于 2011-04-07 16:44:00
多谢cgl_lgs,我已经把修改后的程序发多您邮箱,请多多指教。[em37]
15 楼
cgl_lgs [专家分:21040] 发布于 2011-04-08 09:39:00
已回复,不明白再发:)
16 楼
kqlabc3334 [专家分:0] 发布于 2011-04-10 22:05:00
cgl_lgs老师,多谢您的热心帮助,我的程序已经运行无误[em2],感激感激再感激!!!
17 楼
cgl_lgs [专家分:21040] 发布于 2011-04-10 23:24:00
呵呵,8客气,俺84老师,随便给个称呼就行了:)
18 楼
dongyuanxun [专家分:7180] 发布于 2011-04-11 01:31:00
[quote]呵呵,8客气,俺84老师,随便给个称呼就行了:)[/quote]
好小爱新老师你好。
给几个关键词:bigc、广东、昌平
19 楼
cgl_lgs [专家分:21040] 发布于 2011-04-11 09:29:00
[quote][quote]呵呵,8客气,俺84老师,随便给个称呼就行了:)[/quote]
好小爱新老师你好。
给几个关键词:bigc、广东、昌平[/quote]
董兄你人肉我?哈哈:)
20 楼
dongyuanxun [专家分:7180] 发布于 2011-04-11 10:33:00
这几天听别人讲粤语听得我很迷茫……
我来回复