File io ';重复计数错误';在输入文件时,FORTRAN

File io ';重复计数错误';在输入文件时,FORTRAN,file-io,runtime-error,fortran90,File Io,Runtime Error,Fortran90,我正在尝试将一个文件读入我的代码。 有两个子例程,一个写文件,另一个读文件。 写作部分是: write(*,*)'entered refile, shall make file' ileunitA=int(presentstep) write(fname,1012)ileunitA 1012 format('DATA_',i6.6,'.dat') write(fnam,1112)index 1112 format('pp',i3.3) open(UNIT=ileunitA,FILE=fnam

我正在尝试将一个文件读入我的代码。 有两个子例程,一个写文件,另一个读文件。 写作部分是:

write(*,*)'entered refile, shall make file'
ileunitA=int(presentstep)
write(fname,1012)ileunitA
1012 format('DATA_',i6.6,'.dat')

write(fnam,1112)index
1112 format('pp',i3.3)

open(UNIT=ileunitA,FILE=fname)

!variables from module global
write(ileunita,*)u,v,w,pc,p,p0,rho1,gam,con
write(ileunita,*)aip,aim,ajp,ajm,akp,akm,ap,ap0
write(ileunita,*) scon,smomu,smomv,smomw
...
读取部分如下(在另一个子程序中):

当我运行代码时,它显示以下错误:

在文件bub2.f90的第3682行(单位=25,文件='DATA_000001.dat')

Fortran运行时错误:列表输入的第1项中重复计数错误

有人能帮我找出问题所在吗?什么是“重复计数”。什么是“坏”重复计数?感谢您的猜测(您可以在问题中有问题的行中显示文本…),但是您正在使用列表定向输入(和输出)和
*
作为读(和写)语句中的第二个说明符。列表定向输入允许使用语法
r*c
表示具有相同值的多个字段,其中
r
是数字重复计数,
c
是要重复的值

如果您的任何输出项生成一个包含
*
的字段,则可能会混淆输入的处理

(处理器允许(尽管很少)使用重复计数来表示具有相同值的多个输出字段,例如
WRITE(unit,*)23、23、23、23
可能导致输入文件包含文本
4*23

列表定向输入还具有一些其他功能,如分隔符字符的处理、
/
字符导致输入处理终止,以及空值的可能性和处理。其中一些特性可能会让那些不熟悉规则的人感到惊讶(这些规则的灵感来自于通过穿孔卡片提交输入时所采取的典型捷径),这就是为什么通常最好避免列表导向的输入和输出,而是使用显式格式

如果您的任何数据字段都是字符类型,则应该考虑使用非默认的Delm模式来避免字符变量值中的任何特殊字符混淆输入处理。

ileunita=25;
open(unit=ILEUNITA,file='DATA_010500.dat')

!variables from module global
read(ileunita,*)u,v,w,pc,p,p0,rho1,gam,con
read(ileunita,*)aip,aim,ajp,ajm,akp,akm,ap,ap0
read(ileunita,*) scon,smomu,smomv,smomw
...