回 帖 发 新 帖 刷新版面

主题:fortran 程序里屏幕打印被屏蔽?

我发现有的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个回复)

沙发

说明没有执行到这一句呗,比如 if 没有满足

板凳

就是要加if才能打印,不加的话就不打印,很奇怪。

3 楼

开 DEBUG 模式单步调试一下呗

4 楼

可是这不是一个bug啊,只是不知道怎么能被屏蔽掉了。

5 楼

楼主, 这个或者不是你代码的bug, 是编译器的bug. 查查你编译器是什么, 版本号又是什么.

6 楼

这一定是 BUG

不是你的 BUG 就是编译器的 BUG。

计算机永远不会错,错的永远只会是人。

DEBUG 是解决这些问题最有效最直接最简单的方法。

7 楼

我只是在一个大模式里加了我的一个小模式而已。自己调试小模式的时候是可以打印的。模式的bug说不太成立,因为是个公开发表的版本,起码不会在print这个地方有bug。肯定是在哪儿设置了打印控制,防止程序里到处可见的print占用打印结果文件。
如果是编译器的问题的话,怎么解释大模式里有些程序屏幕打印有效,有的不行。不知道玄机在哪里。[em10]

8 楼

我不知道你说的什么大模式, 小模式具体指的是什么.
因为如果真的像你描述的情况, 那是无法解释的, 所以雪球让你用debug调试一下看看那步开始出错(怎么跳过print的).
而我的意思是想知道你是否在用powerstation甚至更老的编译器, 如果是, 那我对这种情况没兴趣探究了.

如果这些都不愿意做, 那这里没有人能"给出"解释, 你的信息不足.

9 楼

我猜想他说的大模式小模式,应该是大模块,小模块吧??

首先用 debug 检查一下 print 语句是否[color=red][b]真的[/b][/color]执行了?这是很基础的操作,你也应该首先想到的。

如果这一步你都不肯去尝试,我想很难有人能解答你的问题了。

然后检查一下你的编译器,是否是 PowerStation 这样古老的编译器?它的窗口输出 print 是否是一个特定的文件通道号?例如 2 或者 4 ,5,6 之类的?
检查一下你的大模块里,是否有 Open( 2 ,file = ...) 或者 open 4,5,6 之类的??

最后告诉你:
Fortran 语法规范里没有打印控制的开关。不要想当然的去理解。
某些编译器是否有这样的开关我不敢保证,但至少我没听说过。

10 楼

编译器是ifort。
菜鸟级,不会用debug模式...

我来回复

您尚未登录,请登录后再回复。点此登录或注册