计算化学公社
标题:
请教FORTRAN从高斯输出中格式化读入问题
[打印本页]
作者Author:
ChemiAndy
时间:
2014-11-14 10:54
标题:
请教FORTRAN从高斯输出中格式化读入问题
本帖最后由 ChemiAndy 于 2014-11-14 11:09 编辑
今天编译以前组里人写的一个小code能编译但运行出错。以前用低版本的f77编译运行肯定是没问题的,[size=13.63636302948px]现在用了高版本的gfortran就不行。功能很简单,从高斯输出的SCF Done这一行读入能量值和所用的循环数。
code相关部分如下:
10 READ(10,'(A)',END=20)LINE
25 FORMAT(' SCF Done: E(RHF) = ',G19.11,' A.U. after ',I4,
& ' cycles')
IF (INDEX(LINE,'SCF Done').NE.0) THEN
READ(LINE,25) V,ITER
ENDIF
复制代码
出错提示,
Fortran runtime error: Constant string in input format
(' SCF Done: E(RHF) = ',G19.11,' A.U. after ',I4, ' cycles')
复制代码
高斯输出文件这一行的内容为:
SCF Done: E(RHF) = -1.06610864862 A.U. after 1 cycles
复制代码
谁能帮着看一下应该怎么改。
作者Author:
ChemiAndy
时间:
2014-11-14 11:33
搞定了。格式化行的字符都用X编辑符代替就可以了
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