Fortran FORMAT,WRITE

时间:2013-07-02 08:26:16

标签: format fortran formatting

我正在尝试用fortran写出格式化的列表。基本上它很简单,它编译,但只给出垃圾。

我的代码:

     SUBROUTINE f_m ()
#ifdef _IMPLICITNONE
      implicit none
#else
      implicit logical (a-z)
#endif
c     ** Start of generated type statements **
      INCLUDE 'var'
      integer :: i
c     ** End of generated type statements **

      open(777,file='force.bla',Access='Append',status='unknown')
c     rewind(777)        
      do i=1,3
         write(777,431)cbname(i),rvar(15,i),rvar(14,i),rvar(15,i)
      end do
      write(777,*)"#############################"
      close(777)
430   Format(3A18)   
431   Format(3A12,f12.8,f12.8,f12.8)
      return
      end subroutine f_m

cbname是一个字符,而rvar是真实的,都在'var'中定义。在FEM模拟期间和每个步骤结束时调用子程序。

主要问题是输出如下:

[...我现在不允许发布图片所以:]

字符写得正确,据我所知,接下来的两列是随机ascii或只是一些噪音,第四列是好的。打开文件时出现错误消息,声称它不是utf8格式。甚至有些线路被切成两半,所以我只能看到高位。

真正奇怪的是:第2列和第4列应完全相同。

你知道发生了什么吗?

1 个答案:

答案 0 :(得分:4)

D'哦~~

答案显而易见。您的格式声明

431   Format(3A12,f12.8,f12.8,f12.8)

提供3个12个字符的字段,后跟3个f-p字段,但是你的写声明

     write(777,431)cbname(i),rvar(15,i),rvar(14,i),rvar(15,i)

仅提供1个字符变量,然后提供3个f-p变量。前两个是在A12编辑描述符下编写的,当然它们看起来像垃圾。将声明431更改为

431   Format(A12,f12.8,f12.8,f12.8)

看看会发生什么