ifort的无包装边际仅部分起作用

时间:2014-06-30 14:16:18

标签: fortran gfortran intel-fortran

由于一些不幸的原因,我必须使用ifort,"问题"是ifort默认截断长(> 80个字符)写(*,*)行(这不会发生在gfortran中)。有一个名为-no-wrap-margin的选项可以恢复gfortran行为,即只要我想在一行中写行。但是,这仅适用于小于8184个字符的行。比这长的行,例如用

获得的行
program main
    implicit none
    integer :: i
    write(*,*) (i, i=1, 683)
end program main

导致输出第二行中的最后一个数字。有没有办法获得我想要的行为而无需在write语句中指定格式?我误解了-no-wrap-margin选项吗?

1 个答案:

答案 0 :(得分:1)

-no-wrap-margin选项禁用英特尔Fortran中的默认检查输出记录的长度,这是older times的残余。

然而不幸的是,英特尔的实现似乎强加了大约2 ^ 15(= 32768)字节输出或8192默认(4字节)整数的限制,迫使超出到新线,而gfortran没有,正如你观察到的那样。

作为一个好处,英特尔实施了unlimited format item。应用于您的示例代码,它可能如下所示:

program main
    implicit none
    integer :: i
    write(*,'(*(I0,X))') (i, i=1, 683)
end program main