Fortran Coder

查看: 15429|回复: 9
打印 上一主题 下一主题

[求助] 子程序声明时出现错误

[复制链接]

16

帖子

4

主题

0

精华

入门

F 币
71 元
贡献
45 点
跳转到指定楼层
楼主
发表于 2014-4-25 18:24:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
错误提示:
-Configuration: snmaina - Win32 Debug--------------------
Compiling Fortran...
C:\Users\admin\Desktop\SNOPT_EQUI0\userfg.f
C:\Users\admin\Desktop\SNOPT_EQUI0\userfg.f(43) : Error: Syntax error, found '::' when expecting one of: * <IDENTIFIER>
      EXTERNAL :: Hex1, READINIT
---------------^
C:\Users\admin\Desktop\SNOPT_EQUI0\userfg.f(44) : Error: Syntax error, found '::' when expecting one of: * <IDENTIFIER>
      EXTERNAL :: ONESTEPRK4TH, VECTORFIELDequiTH, JACFUNequiTH,
---------------^
C:\Users\admin\Desktop\SNOPT_EQUI0\userfg.f(43) : Error: The *v specifier is invalid unless the NOF77 dialect is specified.   [HEX1]
      EXTERNAL :: Hex1, READINIT
------------------^
C:\Users\admin\Desktop\SNOPT_EQUI0\userfg.f(44) : Error: The *v specifier is invalid unless the NOF77 dialect is specified.   [ONESTEPRK4TH]
      EXTERNAL :: ONESTEPRK4TH, VECTORFIELDequiTH, JACFUNequiTH,
------------------^
C:\Users\admin\Desktop\SNOPT_EQUI0\IpoptConstDeriv.f
C:\Users\admin\Desktop\SNOPT_EQUI0\IpoptConstDeriv.f(25) : Error: Syntax error, found '::' when expecting one of: * <IDENTIFIER>
      EXTERNAL :: ONESTEPRK4TH, VECTORFIELDequiTH, JACFUNequiTH,
---------------^
C:\Users\admin\Desktop\SNOPT_EQUI0\IpoptConstDeriv.f(25) : Error: The *v specifier is invalid unless the NOF77 dialect is specified.   [ONESTEPRK4TH]
      EXTERNAL :: ONESTEPRK4TH, VECTORFIELDequiTH, JACFUNequiTH,
------------------^
C:\Users\admin\Desktop\SNOPT_EQUI0\hex1.f
C:\Users\admin\Desktop\SNOPT_EQUI0\hex1.f(87) : Error: This intrinsic function is invalid in constant expressions.   [DATAN]
      parameter         (ISTAGE = 182, xpi = 4.d0*datan(1.d0))
--------------------------------------------------^
Error executing df.exe.

snmaina.exe - 7 error(s), 0 warning(s)
请教大师们怎么解决?


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

736

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
700 元
贡献
359 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2014-4-25 19:12:37 | 只看该作者
在我这里,错误行都是正常的。

请注意你的源代码是自由格式,还是固定格式?

如果还有问题,建议上传所有代码(以附件形式上传 userfg.f 文件 )。

16

帖子

4

主题

0

精华

入门

F 币
71 元
贡献
45 点
板凳
 楼主| 发表于 2014-4-25 20:49:24 | 只看该作者
chuxf 发表于 2014-4-25 19:12
在我这里,错误行都是正常的。

请注意你的源代码是自由格式,还是固定格式?

我用的是fortran6.5版本,感觉这些函数定义都是对的,不知道为什么会报错?

userfg.f

1.83 KB, 下载次数: 1

736

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
700 元
贡献
359 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

地板
发表于 2014-4-25 21:04:44 | 只看该作者
CVF 貌似不允许 EXTERNAL 后面跟冒号,尝试删除后面的双冒号既可。

IVF 允许,我使用的是它。

16

帖子

4

主题

0

精华

入门

F 币
71 元
贡献
45 点
5#
 楼主| 发表于 2014-4-25 21:15:56 | 只看该作者
chuxf 发表于 2014-4-25 21:04
CVF 貌似不允许 EXTERNAL 后面跟冒号,尝试删除后面的双冒号既可。

IVF 允许,我使用的是它。 ...

嗯嗯,删了后那些不报错,但是还有一个内部函数DATAN报错,
C:\Users\admin\Desktop\SNOPT_EQUI0\hex1.f(87) : Error: This intrinsic function is invalid in constant expressions.   [DATAN]
      parameter         (ISTAGE = 182, xpi = 4.d0*datan(1.d0))
这是什么原因呢?这个函数不就是求反正切吗?

16

帖子

4

主题

0

精华

入门

F 币
71 元
贡献
45 点
6#
 楼主| 发表于 2014-4-25 21:17:41 | 只看该作者
chuxf 发表于 2014-4-25 21:04
CVF 貌似不允许 EXTERNAL 后面跟冒号,尝试删除后面的双冒号既可。

IVF 允许,我使用的是它。 ...

还有我想问一下,现在fortran使用IVF好呢还是用CVF好呢?我刚接触fortran不久,不知道用哪个版本好一些,

736

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
700 元
贡献
359 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

7#
发表于 2014-4-25 21:38:12 | 只看该作者
猴雨云 发表于 2014-4-25 21:15
嗯嗯,删了后那些不报错,但是还有一个内部函数DATAN报错,
C:\Users\admin\Desktop\SNOPT_EQUI0\hex1.f( ...

CVF 也不允许在常数定义时使用内部函数。

所以,把这句改为
parameter(ISTAGE = 182, xpi = 3.141592654D0 )

另,编译器之间没有绝对的好坏。
CVF 古老,经典,有些写法不支持,win7/8 无法使用。
IVF 新潮,支持的语法更现代,但臃肿,安装和操作都麻烦。

建议有条件的话,选择 IVF 吧

16

帖子

4

主题

0

精华

入门

F 币
71 元
贡献
45 点
8#
 楼主| 发表于 2014-4-25 21:43:26 | 只看该作者
chuxf 发表于 2014-4-25 21:38
CVF 也不允许在常数定义时使用内部函数。

所以,把这句改为

嗯嗯,谢谢呢,这个错误我已经改了,就是用CVF感觉有些语法错误的地方不容易察觉,我之前一直用的是matlab,请问你知道怎么在fortran中调用matlab自己编的函数吗?

736

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
700 元
贡献
359 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

9#
发表于 2014-4-25 22:02:02 | 只看该作者
猴雨云 发表于 2014-4-25 21:43
嗯嗯,谢谢呢,这个错误我已经改了,就是用CVF感觉有些语法错误的地方不容易察觉,我之前一直用的是matla ...

matlab 我不太熟悉怎么调用,百度一下相关的内容吧

16

帖子

4

主题

0

精华

入门

F 币
71 元
贡献
45 点
10#
 楼主| 发表于 2014-4-25 22:06:00 | 只看该作者
chuxf 发表于 2014-4-25 22:02
matlab 我不太熟悉怎么调用,百度一下相关的内容吧

嗯嗯,谢谢哈,嘿嘿
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-23 05:49

Powered by Tencent X3.4

© 2013-2024 Tencent

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