Fortran 90错误:输入需要太多数据

时间:2014-04-01 15:55:00

标签: error-handling fortran fortran90

我有以下代码:

if (complex) then
read(unitvector) (CoefC(jl),jl=1,NV)
endif

用户指示数据是否是复数的集合。现在,如果用户指出它,但它实际上不是,我得到错误67(输入需要太多数据)。我如何陷阱,所以我可以写,也许用户犯了一个错误。我觉得它看起来像是:

read(unitvector, ioStat=iocplx) (CoefC(jl),jl=1,NV) 

但是我会把" if"检查错误?

1 个答案:

答案 0 :(得分:1)

这取决于程序的整体逻辑,我们无法从这么小的代码片段告诉你最好的方法。你可以试试(未经测试):

if (complex) then
  read(unitvector, ioStat=iocplx) (CoefC(jl),jl=1,NV) 
  if (iocplx/=0) stop "Error reading the complex data."
end if

if (complex) then
  read(unitvector, ioStat=iocplx) (CoefC(jl),jl=1,NV) 
  if (iocplx/=0) then
     write(*,*) "Error reading the complex data, triung real."
     complex = .false.
     backspace(unitvector)
     read(unitvector, ioStat=ioreal) (CoefR(jl),jl=1,NV)
     if (ioreal/=0) then
       stop "Error reading real data."
     end if
  end if
end if

但是你真的没有指定你想要的东西,停止程序并写一个有意义的消息?以其他方式读取数据?一切皆有可能,我们没有水晶球。