将列表定向数据写入未格式化的 I/O
Writing list-directed data to unformatted I/O
我正在尝试将未格式化的数据写入文件。它应该很简单,但是在运行时它会抛出错误;
forrtl: severe (257): formatted I/O to unit open for unformatted transfers, unit 1, file ~/destination
我很难给出一个可行的例子,因为它包含在气候模型的一个复杂子程序中,但我最好的表现尝试是;
subroutine writev(par)
real par(x,y)
real var(x,y)
var = sqrt(par)
open (unit=1,file="~/destination",form="unformatted")
write (1,*)var
close(1)
end
据我所知,错误消息告诉我数据已格式化,但我不明白为什么会这样,因为除了指定它是真实类型。有什么明显的东西是我可能在这里遗漏的吗?
完整的轨迹是;
forrtl: severe (257): formatted I/O to unit open for unformatted transfers, unit 1, file
~/destination Image
PC Routine Line Source
genie.exe 00000000008362B6 Unknown Unknown
Unknown genie.exe 00000000008354B6 Unknown
Unknown Unknown genie.exe 00000000007E2612 Unknown
Unknown Unknown genie.exe 0000000000796881 Unknown
Unknown Unknown genie.exe 000000000079616E Unknown
Unknown Unknown genie.exe 00000000007D373E Unknown
Unknown Unknown genie.exe 0000000000467FF4 Unknown
Unknown Unknown genie.exe 000000000046F06F Unknown
Unknown Unknown genie.exe 000000000043C793 Unknown
Unknown Unknown genie.exe 0000000000461D73 Unknown
Unknown Unknown genie.exe 0000000000403816 Unknown
Unknown Unknown libc.so.6 000000376901D9F4 Unknown
Unknown Unknown genie.exe 0000000000403729 Unknown
Unknown Unknown
real 0m1.673s user 0m0.031s sys 0m0.023s ERROR: !!!!!!!!!!
ERROR PROCESSING !!!!!!!!!!
未格式化 I/O 需要 no/conflicts 和格式说明符 *
。使用
write (1) var
应该可以解决问题。有关详细信息,请参阅 here。
顺便说一句:永远不要使用低于 10 的单位数字,它们可能有特殊含义(例如通常 6
是 STDOUT
)。如果您的编译器支持,请使用 open
和 newunit
。
我正在尝试将未格式化的数据写入文件。它应该很简单,但是在运行时它会抛出错误;
forrtl: severe (257): formatted I/O to unit open for unformatted transfers, unit 1, file ~/destination
我很难给出一个可行的例子,因为它包含在气候模型的一个复杂子程序中,但我最好的表现尝试是;
subroutine writev(par)
real par(x,y)
real var(x,y)
var = sqrt(par)
open (unit=1,file="~/destination",form="unformatted")
write (1,*)var
close(1)
end
据我所知,错误消息告诉我数据已格式化,但我不明白为什么会这样,因为除了指定它是真实类型。有什么明显的东西是我可能在这里遗漏的吗?
完整的轨迹是;
forrtl: severe (257): formatted I/O to unit open for unformatted transfers, unit 1, file ~/destination Image
PC Routine Line Source
genie.exe 00000000008362B6 Unknown Unknown Unknown genie.exe 00000000008354B6 Unknown
Unknown Unknown genie.exe 00000000007E2612 Unknown
Unknown Unknown genie.exe 0000000000796881 Unknown
Unknown Unknown genie.exe 000000000079616E Unknown
Unknown Unknown genie.exe 00000000007D373E Unknown
Unknown Unknown genie.exe 0000000000467FF4 Unknown
Unknown Unknown genie.exe 000000000046F06F Unknown
Unknown Unknown genie.exe 000000000043C793 Unknown
Unknown Unknown genie.exe 0000000000461D73 Unknown
Unknown Unknown genie.exe 0000000000403816 Unknown
Unknown Unknown libc.so.6 000000376901D9F4 Unknown
Unknown Unknown genie.exe 0000000000403729 Unknown
Unknown Unknownreal 0m1.673s user 0m0.031s sys 0m0.023s ERROR: !!!!!!!!!! ERROR PROCESSING !!!!!!!!!!
未格式化 I/O 需要 no/conflicts 和格式说明符 *
。使用
write (1) var
应该可以解决问题。有关详细信息,请参阅 here。
顺便说一句:永远不要使用低于 10 的单位数字,它们可能有特殊含义(例如通常 6
是 STDOUT
)。如果您的编译器支持,请使用 open
和 newunit
。