计算化学公社

标题: 请教FORTRAN从高斯输出中格式化读入问题 [打印本页]

作者
Author:
ChemiAndy    时间: 2014-11-14 10:54
标题: 请教FORTRAN从高斯输出中格式化读入问题
本帖最后由 ChemiAndy 于 2014-11-14 11:09 编辑

今天编译以前组里人写的一个小code能编译但运行出错。以前用低版本的f77编译运行肯定是没问题的,[size=13.63636302948px]现在用了高版本的gfortran就不行。功能很简单,从高斯输出的SCF Done这一行读入能量值和所用的循环数。

code相关部分如下:
  1.    10 READ(10,'(A)',END=20)LINE
  2.    25 FORMAT(' SCF Done:  E(RHF) = ',G19.11,' A.U. after ',I4,
  3.      &  ' cycles')
  4.       IF (INDEX(LINE,'SCF Done').NE.0) THEN
  5.          READ(LINE,25) V,ITER
  6.       ENDIF
复制代码


出错提示,
  1. Fortran runtime error: Constant string in input format
  2. (' SCF Done:  E(RHF) = ',G19.11,' A.U. after ',I4,            ' cycles')
复制代码


高斯输出文件这一行的内容为:
  1. SCF Done:  E(RHF) =  -1.06610864862     A.U. after    1 cycles
复制代码


谁能帮着看一下应该怎么改。

作者
Author:
ChemiAndy    时间: 2014-11-14 11:33
搞定了。格式化行的字符都用X编辑符代替就可以了
  1.    25 FORMAT(21X,G19.12,12X,I4,7X)
复制代码

作者
Author:
sobereva    时间: 2014-11-14 11:36
这么写是违背语法的。write的时候能用25号格式,而在读取的时候不能把本来要读的内容直接写在格式里。
如果你想空过字符部分,应该用比如24x,f19.11,10x,i4 ,x前面的数代表读的时候跳过的字符数
作者
Author:
ChemiAndy    时间: 2015-2-8 15:21
sobereva 发表于 2014-11-14 11:36
这么写是违背语法的。write的时候能用25号格式,而在读取的时候不能把本来要读的内容直接写在格式里。
如 ...

Sob老大说的很对。我已经按照你的说法改过code了。
原来的code是老板写的。老。板。写。的。。。
作者
Author:
ChemiAndy    时间: 2015-2-8 15:21
sobereva 发表于 2014-11-14 11:36
这么写是违背语法的。write的时候能用25号格式,而在读取的时候不能把本来要读的内容直接写在格式里。
如 ...

Sob老大说的很对。我已经按照你的说法改过code了。
原来的code是老板写的。老。板。写。的。。。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3