Fortran-90 - Versuch zum Lesen hinter Dateiende

Ich bin eine lese-Problem in Fortran-90. Ich bin versucht zu Lesen 31488 Zeilen von Daten. Ich bin mit der Portland Group Fortran-90-compiler.

Meine Fehlermeldung ist diese:

PGFIO-F-217/list-directed Lesen/Einheit=14/versuchen zu Lesen hinter Dateiende.
Dateiname = /import/c/w/username/WRFV3/SKILLSETS/Overestimations.txt formatiert, sequential access Datensatz = 31489

Fortran-Programm denkt, dass ich eine zusätzliche Zeile. Ich weiß nicht, wo das angegeben ist in den code.

Ich angehängt habe den relevanten Teil des Codes... ich habe gesucht hoch und niedrig durch diesen Teil des Codes habe ich untersucht der text-Datei angezeigt, wenn die Anzahl der Zeilen entsprechen. Ich absolut nicht sehen, wo das problem liegt.

Den compiler besagt, dass der Fehler liegt in der read-Anweisung... zu Lesen(14,*) ist, dass der code innerhalb der do-Anweisungen.

Bitte helfen. Ich danke Ihnen sehr.

Program skillruss
! Purpose: to calculate skill scores

implicit none
integer :: i,j,nsite,ntime,iref,jj,csite

! nsite = number of observation sites, csites = number of chemical sites, ntime = number of hours

parameter(nsite=32,csite=1,ntime=984)

real :: Tob(nsite,ntime),RHo(nsite,ntime),diro(nsite,ntime)
real :: raino(nsite,ntime),swo(nsite,ntime),po(nsite,ntime)
real :: Tdo(nsite,ntime),vo(nsite,ntime)
real :: Ts(nsite,ntime),RHs(nsite,ntime),dirs(nsite,ntime)
real :: rains(nsite,ntime),sws(nsite,ntime),ps(nsite,ntime)
real :: Tds(nsite,ntime),vs(nsite,ntime)
real :: PMo(csite,ntime),PMs(csite,ntime)

real :: pers(csite,ntime)
real :: bias,rmse,sde,r,x,y,sx,sy,dw,isig
real :: countn
real :: nrmse,fac2,nstdev,mg,fb,nmse
real :: biast(ntime),rmset(ntime),sdet(ntime)
real :: rt(ntime),xt(ntime),yt(ntime)
real :: sxt(ntime),syt(ntime),isigt(ntime),countt(ntime),dt(ntime)


! Open file to read the observational data

open(14,file=&
"/import/c/w/username/WRFV3/SKILLSETS/Overestimations.txt",&
   form="formatted",status="old")

Tob= -999.
RHo= -999.
vo= -999.
diro= -999.
raino= -999.
swo= -999.
po= -999.
Tdo= -999.

do i=1,nsite
do j=1,ntime
read(14,*) Tob(i,j),RHo(i,j),vo(i,j),diro(i,j),raino(i,j),swo(i,j),&
    po(i,j),Tdo(i,j)
if(vo(i,j) <=0.)diro(i,j)=-999.
end do
end do
close(14)
InformationsquelleAutor wrf_89 | 2013-08-01
Schreibe einen Kommentar