Fortran:命名输出文件时出现“输出语句溢出记录”错误

时间:2015-04-05 23:16:41

标签: dynamic fortran output

我正在尝试动态写入不同的文件名(例如“output_0001.txt”“output_0002.txt”),但反复出现以下错误:

forrtl: severe (66): output statement overflows record, unit -5, file
Internal Formatted Write

我已经尝试将我的“文件名”字符数组扩展到过大的长度,但它仍然无效。不知道为什么我的字符串会变得太大皱眉表情如果我将“文件名”更改为静态字符数组,那么它工作正常。有什么想法吗?

我的代码如下:

character(30)::filename
...
write(filename, fmt = "(2A, I0.4, A)") out_file_basename, "_", i, ".dat"
open(unit = 3, file = filename)

1 个答案:

答案 0 :(得分:3)

从您的评论中,您有类似

的内容
character(30)::filename, out_file_basename
...
write(filename, fmt = "(2A, I0.4, A)") out_file_basename, "_", i, ".dat"

这将是一个问题。从其他情况来看,可能很容易解决。

之间存在差异
character(len=30) out_file_basename
out_file_basename = "output"  ! Or from get_command_argument
write(filename, fmt = "(2A, I0.4, A)") out_file_basename, "_", i, ".dat"

write(filename, fmt = "(2A, I0.4, A)") "output", "_", i, ".dat"

不同之处在于out_file_basename用24个空格填充(长度为30),文字"output"不是(长度为6)。在第一个中,您将需要一个至少长度为39的字符变量。

简单的解决方案是修剪out_file_basename

中的所有空格
write(filename, fmt = "(2A, I0.4, A)") TRIM(out_file_basename), "_", i, ".dat"

但为了安全起见,您希望filename足够大。