主题:fortran 程序里屏幕打印被屏蔽?
green_tea789
[专家分:0] 发布于 2012-02-01 19:24:00
我发现有的fortran 程序里print*在运行结果里没打印出来,是怎么回事呢?
好像有的地方有加打印控制参数,比如
IF (prt_level .GE. 20) THEN
print *,'k,m_n_d,m_dp_d ',k,m_n_d,m_dp_d
ENDIF
回复列表 (共11个回复)
沙发
臭石头雪球 [专家分:23030] 发布于 2012-02-01 21:18:00
说明没有执行到这一句呗,比如 if 没有满足
板凳
green_tea789 [专家分:0] 发布于 2012-02-01 21:48:00
就是要加if才能打印,不加的话就不打印,很奇怪。
3 楼
臭石头雪球 [专家分:23030] 发布于 2012-02-02 08:20:00
开 DEBUG 模式单步调试一下呗
4 楼
green_tea789 [专家分:0] 发布于 2012-02-03 15:10:00
可是这不是一个bug啊,只是不知道怎么能被屏蔽掉了。
5 楼
yeg001 [专家分:14390] 发布于 2012-02-03 18:54:00
楼主, 这个或者不是你代码的bug, 是编译器的bug. 查查你编译器是什么, 版本号又是什么.
6 楼
臭石头雪球 [专家分:23030] 发布于 2012-02-03 20:21:00
这一定是 BUG
不是你的 BUG 就是编译器的 BUG。
计算机永远不会错,错的永远只会是人。
DEBUG 是解决这些问题最有效最直接最简单的方法。
7 楼
green_tea789 [专家分:0] 发布于 2012-02-06 17:08:00
我只是在一个大模式里加了我的一个小模式而已。自己调试小模式的时候是可以打印的。模式的bug说不太成立,因为是个公开发表的版本,起码不会在print这个地方有bug。肯定是在哪儿设置了打印控制,防止程序里到处可见的print占用打印结果文件。
如果是编译器的问题的话,怎么解释大模式里有些程序屏幕打印有效,有的不行。不知道玄机在哪里。[em10]
8 楼
yeg001 [专家分:14390] 发布于 2012-02-06 23:59:00
我不知道你说的什么大模式, 小模式具体指的是什么.
因为如果真的像你描述的情况, 那是无法解释的, 所以雪球让你用debug调试一下看看那步开始出错(怎么跳过print的).
而我的意思是想知道你是否在用powerstation甚至更老的编译器, 如果是, 那我对这种情况没兴趣探究了.
如果这些都不愿意做, 那这里没有人能"给出"解释, 你的信息不足.
9 楼
臭石头雪球 [专家分:23030] 发布于 2012-02-07 10:42:00
我猜想他说的大模式小模式,应该是大模块,小模块吧??
首先用 debug 检查一下 print 语句是否[color=red][b]真的[/b][/color]执行了?这是很基础的操作,你也应该首先想到的。
如果这一步你都不肯去尝试,我想很难有人能解答你的问题了。
然后检查一下你的编译器,是否是 PowerStation 这样古老的编译器?它的窗口输出 print 是否是一个特定的文件通道号?例如 2 或者 4 ,5,6 之类的?
检查一下你的大模块里,是否有 Open( 2 ,file = ...) 或者 open 4,5,6 之类的??
最后告诉你:
Fortran 语法规范里没有打印控制的开关。不要想当然的去理解。
某些编译器是否有这样的开关我不敢保证,但至少我没听说过。
10 楼
green_tea789 [专家分:0] 发布于 2012-02-08 21:15:00
编译器是ifort。
菜鸟级,不会用debug模式...
我来回复