Fortran Coder

楼主: sharpcoder
打印 上一主题 下一主题

[求助] CVF中函数的问题

[复制链接]

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
11#
发表于 2014-12-28 16:15:38 | 只看该作者
sharpcoder 发表于 2014-12-28 09:43
这种情况能否在IVF加编译选项Qsave和Qzero完全解决?
如果要赋初值的话估计得有成百上千变量了,工作量不 ...

IVF加编译选项Qsave和Qzero不一定能够完全解决
cvf默认的初值是0

30

帖子

8

主题

0

精华

熟手

F 币
212 元
贡献
104 点
12#
 楼主| 发表于 2015-1-23 11:25:06 | 只看该作者
li913 发表于 2014-12-28 16:15
IVF加编译选项Qsave和Qzero不一定能够完全解决
cvf默认的初值是0

目前已经把老版本程序中implicit real改成了implicit none,并且将所有未声明的局部变量进行了声明,common变量还是沿用之前的external+block data的方式赋初值。
为了程序能够在IVF中正常运行,不知道有没有必要将所有的声明的局部变量初始化为0或0.0或' '?
我初步设想是直接复制各个程序模块中的局部变量声明语句,然后改成DATA+变量名+/变量数*0或0.0或' '/,这样就可以认为初始化所有变量了,兴许这样之后程序就可以在IVF中运行了。不知道这样做是否靠谱?
(老板非要将程序转到IVF中,很捉急啊!CVF成动态链接库都不愿意。。。)
世界上有 10 种人:懂 10 进制的人,和不懂 10 进制的人。

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
13#
发表于 2015-1-23 11:33:43 | 只看该作者
还是手动赋初值把。

ivf 有一个开关可以检查是否初始化(如果未初始化,则会触发运行时错误)。但只对单变量有效,对数组无效。

不要使用 DATA 语句。

30

帖子

8

主题

0

精华

熟手

F 币
212 元
贡献
104 点
14#
 楼主| 发表于 2015-2-7 21:36:20 | 只看该作者
花了几周时间,把老程序中的所有变量都声明并且赋初值了(integer赋0,real赋0.0,character赋' '),但是编译后运行还是会出错,程序执行过程中还是有数组越界的问题,仔细看了下,有一个common变量的值莫名其妙不是0,而且每次执行都是那些值,感觉不像没有初始化导致的,不知道会不会是IO的问题,因为老程序需要从txt中读入大量参数。不知道有没有什么解决方法?
此外,发现IVF的write输出到文本文件时,当每行超过一定字符数后会自动换行,即使输出时使用了格式化字符串。自己试着在write中添加了advance='no'也没有作用,不知道该怎么解决,还请大家指导!
世界上有 10 种人:懂 10 进制的人,和不懂 10 进制的人。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-23 22:55

Powered by Tencent X3.4

© 2013-2024 Tencent

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