Fortran,如何更改写入记录的大小?

时间:2013-10-05 00:16:21

标签: fortran

我正在尝试将一些整数值写入文件。每个"列表"整数必须在同一行。这些值来自代码中的各种位置,因此代替 将所有值放入另一个数组中,我想我只需使用advance='NO'设置一次输出一个。以下是相关的代码段:

open(unit=120,file=mesh_name,action='WRITE',iostat=io,status='REPLACE',recl=(nsp*9+10))

    write(120,*) nTri,nNode,2,nEdgeBd

    if (o > 1) then

        do t = 1,nTri
            write(120,'(i2,3i9)',advance = 'NO') o,tri(:,t)-1

            en = triEdge(1,t)
            write(120,'(i9)',advance = 'NO') (edgeA(i,en)-1, i=2,o)
            en = triEdge(2,t)
            write(120,'(i9)',advance = 'NO') (edgeA(i,en)-1, i=2,o)
            en = triEdge(2,t)
            write(120,'(i9)',advance = 'NO') (edgeA(i,en)-1, i=2,o)

            if (o > 2) write(120,'(i9)',advance = 'NO') (triInt(i,t)-1, i=1,nIntNode)
            write(120,*)
        end do

当值的数量很小时,它会正确输出:

   3984        8052           2          84
 2     1443     1368     1431     2034     2035     2035
 2     1358     1261     1290     2037     2038     2038
 2       97       13       14     2040     2041     2041
 2     1291     1272     1273     2043     2044     2044

但是,当每个列表变长时,输出如下:

      3984       18054           2          84
 3     1443     1368     1431     2034
     2035     2036
     2037     2036
     2037    14070
 3     1358     1261     1290     2040
     2041     2042
     2043     2042
     2043    14071
 3       97       13       14     2046

如您所见,我尝试使用recl声明中的open参数更改默认记录长度。

我正在使用gfortran 4.7.3。

所以我的问题是:我怎么不理解fortran如何处理io?

0 个答案:

没有答案