Я использую код на Фортране, чтобы упростить извлечение нужных мне данных из моих многочисленных выходных файлов. Во-первых, я создал код для использования с определенным файлом с именем 'output.sub', и он прекрасно работает для извлечения различных переменных, которые мне нужны. Теперь я попытался использовать код с другим файлом 'output.rch', который имеет структуру, аналогичную предыдущей. Изменено то, что нужно изменить, чтобы обратиться к новому выходному файлу, но теперь я получаю ошибку конца файла. Я использую файл Fortran с фиксированной формой в Visual Studios Professional 2017.
Это старый код:
PROGRAM WATER_BALANCE
IMPLICIT NONE
INTEGER I,J,K
INTEGER FLAGP(516),FLAGS(516),FLAGPET(516),FLAGET(516),
$ FLAGSW(516),FLAGPER(516),FLAGSUR(516),FLAGGW(516),FLAGWYLD(516)
REAL A,B,C,D,E,F,G,H,L
REAL PRECIP(516),SNOMELT(516),PET(516),ET(516),SW(516),PERC(516),
$SURQ(516),GW_Q(516),WYLD(516)
REAL PETB(14,516) !1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012
DO I=1,516
PRECIP(I)=0.0
SNOMELT(I)=0.0
PET(I)=0.0
ET(I)=0.0
SW(I)=0.0
PERC(I)=0.0
SURQ(I)=0.0
GW_Q(I)=0.0
WYLD(I)=0.0
END DO
OPEN(1,FILE='output.sub',STATUS='OLD')
DO I=1,9
READ(1,*)
END DO
DO I=1,365 !1999Äê
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(1,K)=PET(K)/365
PET(K)=0.0
END DO
DO I=366,731 !2000
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(2,K)=PET(K)/366
PET(K)=0.0
END DO
DO I=732,1096 !2001
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(3,K)=PET(K)/366
PET(K)=0.0
END DO
DO I=1097,1461 !2002
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(4,K)=PET(K)/366
PET(K)=0.0
END DO
DO I=1462,1826 !2003
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(5,K)=PET(K)/366
PET(K)=0.0
END DO
DO I=1827,2191 !2004
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(6,K)=PET(K)/366
PET(K)=0.0
END DO
DO I=2192,2556 !2005
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(7,K)=PET(K)/366
PET(K)=0.0
END DO
DO I=2557,2921 !2006
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(8,K)=PET(K)/366
PET(K)=0.0
END DO
DO I=2922,3287 !2007
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(9,K)=PET(K)/366
PET(K)=0.0
END DO
DO I=3288,3653 !2008
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(10,K)=PET(K)/366
PET(K)=0.0
END DO
DO I=3654,4018 !2009
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(11,K)=PET(K)/366
PET(K)=0.0
END DO
DO I=4019,4383 !2010
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(12,K)=PET(K)/366
PET(K)=0.0
END DO
DO I=4384,4748 !2011
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(13,K)=PET(K)/366
PET(K)=0.0
END DO
DO I=4749,5114 !2012
DO J=1,516
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
PRECIP(J)=PRECIP(J)+A
SNOMELT(J)=SNOMELT(J)+B
PET(J)=PET(J)+C
ET(J)=ET(J)+D
SW(J)=SW(J)+E
PERC(J)=PERC(J)+F
SURQ(J)=SURQ(J)+G
GW_Q(J)=GW_Q(J)+H
WYLD(J)=WYLD(J)+L
END DO
END DO
DO K=1,516
PETB(14,K)=PET(K)/366
PET(K)=0.0
END DO
OPEN(2,FILE='OUT',STATUS='UNKNOWN')
DO K=1,516
WRITE(2,"(14(E10.3,5X))") PETB(1,K),PETB(2,K),PETB(3,K),PETB(4,K),
$ PETB(5,K),PETB(6,K),PETB(7,K),PETB(8,K),PETB(9,K),
$ PETB(10,K),PETB(11,K),PETB(12,K),PETB(13,K),PETB(14,K)
END DO
CLOSE(1)
CLOSE(2)
END
ОБНОВЛЕНО: И это модифицированный код для использования с файлом output.rch:
PROGRAM WATER_QUALITY
IMPLICIT NONE
INTEGER X,Y,Z
INTEGER FLAGFIN(516),FLAGFOUT(516),FLAGEVAP(516),FLAGTLOSS(516),
$ FLAGSIN(516),FLAGSOUT(516),FLAGSED(516),FLAGONIN(516),
$ FLAGONOUT(516), FLAGPIN(516),FLAGPOUT(516),FLAGNO3IN(516),
$ FLAGNO3OUT(516), FLAGNH4IN(516),FLAGNH4OUT(516),FLAGNO2IN(516),
$ FLAGNO2OUT(516)
REAL A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
REAL FLOW_IN(516),FLOW_OUT(516),EVAP(516),TLOSS(516),SED_IN(516),
$SED_OUT(516),SEDCONC(516),ORGN_IN(516),ORGN_OUT(516),ORGP_IN(516),
$ORGP_OUT(516),NO3_IN(516),NO3_OUT(516),NH4_IN(516),NH4_OUT(516),
$NO2_IN(516),NO2_OUT(516)
REAL NO3_INB(15,516) !1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013
DO X=1,516
FLOW_IN(X)=0.0
FLOW_OUT(X)=0.0
EVAP(X)=0.0
TLOSS(X)=0.0
SED_IN(X)=0.0
SED_OUT(X)=0.0
SEDCONC(X)=0.0
ORGN_IN(X)=0.0
ORGN_OUT(X)=0.0
ORGP_IN(X)=0.0
ORGP_OUT(X)=0.0
NO3_IN(X)=0.0
NO3_OUT(X)=0.0
NH4_IN(X)=0.0
NH4_OUT(X)=0.0
NO2_IN(X)=0.0
NO2_OUT(X)=0.0
END DO
OPEN(10,FILE='output.rch',STATUS='OLD')
DO X=1,9
READ(10,*)
END DO
DO X=1,365 !1999
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(1,Z)=NO3_IN(Z)/365
NO3_IN(Z)=0.0
END DO
DO X=366,731 !2000
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(2,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=732,1096 !2001
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(3,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=1097,1461 !2002
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(4,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=1462,1826 !2003
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(5,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=1827,2191 !2004
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(6,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=2192,2556 !2005
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(7,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=2557,2921 !2006
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(8,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=2922,3287 !2007
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(9,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=3288,3653 !2008
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(10,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=3654,4018 !2009
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(11,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=4019,4383 !2010
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(12,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=4384,4748 !2011
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(13,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=4749,5114 !2012
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(14,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
DO X=5115,5481 !2013
DO Y=1,516
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
FLOW_IN(Y)=FLOW_IN(Y)+A
FLOW_OUT(Y)=FLOW_OUT(Y)+B
EVAP(Y)=EVAP(Y)+C
TLOSS(Y)=TLOSS(Y)+D
SED_IN(Y)=SED_IN(Y)+E
SED_OUT(Y)=SED_OUT(Y)+F
SEDCONC(Y)=SEDCONC(Y)+G
ORGN_IN(Y)=ORGN_IN(Y)+H
ORGN_OUT(Y)=ORGN_OUT(Y)+I
ORGP_IN(Y)=ORGP_IN(Y)+J
ORGP_OUT(Y)=ORGP_OUT(Y)+K
NO3_IN(Y)=NO3_IN(Y)+L
NO3_OUT(Y)=NO3_OUT(Y)+M
NH4_IN(Y)=NH4_IN(Y)+N
NH4_OUT(Y)=NH4_OUT(Y)+O
NO2_IN(Y)=NO2_IN(Y)+P
NO2_OUT(Y)=NO2_OUT(Y)+Q
END DO
END DO
DO Z=1,516
NO3_INB(15,Z)=NO3_IN(Z)/366
NO3_IN(Z)=0.0
END DO
OPEN(11,FILE='OUT',STATUS='UNKNOWN')
DO Z=1,516
WRITE(11,"(15(E10.3,6X))") NO3_INB(1,Z),NO3_INB(2,Z),NO3_INB(3,Z),
$ NO3_INB(4,Z),NO3_INB(5,Z),NO3_INB(6,Z),NO3_INB(7,Z),
$ NO3_INB(8,Z),NO3_INB(9,Z),NO3_INB(10,Z),NO3_INB(11,Z),
$ NO3_INB(12,Z),NO3_INB(13,Z),NO3_INB(14,Z),NO3_INB(15,Z)
END DO
CLOSE(10)
CLOSE(11)
END
Это часть того, как выглядит 'output.sub' (файл, который работает):
1
SWAT Dec 23 2016 VER 2016/Rev 664 0/ 0/ 0 0: 0: 0
General Input/Output section (file.cio):
12/3/2018 12:00:00 AM ARCGIS-SWAT interface AV
SUB GIS MO DA YR AREAkm2 PRECIPmm SNOMELTmm PETmm ETmm SWmm PERCmm SURQmm GW_Qmm WYLDmm SYLDt/ha ORGNkg/ha ORGPkg/haNSURQkg/ha SOLPkg/ha SEDPkg/ha LAT Q(mm)LATNO3kg/hGWNO3kg/haCHOLAmic/LCBODU mg/L DOXQ mg/L TNO3kg/ha QTILEmm TVAPkg/ha
BIGSUB 1 0 1 1 1999 .11443E+03 0.200E+00 0.000E+00 0.000E+00 0.000E+00 0.201E+03 0.000E+00 0.506E-02 0.409E-01 0.844E-01 0.714E-05 0.281E-03 0.365E-04 0.246E-03 0.232E-05 0.424E-04 0.471E-02 0.368E-03 0.180E-05 .79489E-06 0.000E+00 0.123E-01 0.000E+00 0.000E+00 0.000E+00
BIGSUB 2 0 1 1 1999 .13345E+03 0.200E+00 0.000E+00 0.000E+00 0.000E+00 0.214E+03 0.000E+00 0.466E-02 0.418E-01 0.866E-01 0.543E-05 0.247E-03 0.322E-04 0.233E-03 0.226E-05 0.370E-04 0.588E-02 0.484E-03 0.208E-05 .55263E-06 0.000E+00 0.126E-01 0.000E+00 0.000E+00 0.000E+00
BIGSUB 3 0 1 1 1999 .64204E+02 0.000E+00 0.000E+00 0.341E+00 0.169E+00 0.440E+03 0.000E+00 0.627E-03 0.150E+00 0.275E+00 0.164E-07 0.159E-04 0.209E-05 0.178E-04 0.451E-06 0.233E-05 0.952E-03 0.793E-04 0.175E-04 .45972E-10 0.000E+00 0.401E-01 0.000E+00 0.000E+00 0.000E+00
BIGSUB 4 0 1 1 1999 .43200E+00 0.000E+00 0.000E+00 0.342E+00 0.163E+00 0.550E+03 0.000E+00 0.517E-06 0.197E+00 0.348E+00 0.237E-10 0.517E-09 0.517E-09 0.517E-09 0.517E-09 0.103E-08 0.000E+00 0.000E+00 0.872E-04 .16009E-21 0.000E+00 0.507E-01 0.000E+00 0.000E+00 0.000E+00
А вот как выглядит файл output.rch:
1
SWAT Dec 23 2016 VER 2016/Rev 664 0/ 0/ 0 0: 0: 0
General Input/Output section (file.cio):
12/3/2018 12:00:00 AM ARCGIS-SWAT interface AV
RCH GIS MO DA YR AREAkm2 FLOW_INcms FLOW_OUTcms EVAPcms TLOSScms SED_INtons SED_OUTtons SEDCONCmg/L ORGN_INkg ORGN_OUTkg ORGP_INkg ORGP_OUTkg NO3_INkg NO3_OUTkg NH4_INkg NH4_OUTkg NO2_INkg NO2_OUTkg MINP_INkg MINP_OUTkg CHLA_INkg CHLA_OUTkg CBOD_INkg CBOD_OUTkg DISOX_INkg DISOX_OUTkg SOLPST_INmgSOLPST_OUTmg SORPST_INmgSORPST_OUTmg REACTPSTmg VOLPSTmg SETTLPSTmgRESUSP_PSTmgDIFFUSEPSTmgREACBEDPSTmg BURYPSTmg BED_PSTmg BACTP_OUTctBACTLP_OUTct CMETAL#1kg CMETAL#2kg CMETAL#3kg TOT Nkg TOT Pkg NO3ConcMg/l WTMPdegc
REACH 1 0 1 1 1999 0.1144E+03 0.1118E+00 0.1139E+00 0.0000E+00 0.1118E+00 0.8167E-01 0.8167E-01 0.8301E+01 0.3215E+01 0.2903E+01 0.9024E+00 0.7628E+00 0.7042E+01 0.7173E+01 0.0000E+00 0.2906E+00 0.0000E+00 0.0000E+00 0.2660E-01 0.8129E-01 0.9096E-02 0.0000E+00 0.0000E+00 0.0000E+00 0.1408E+03 0.1425E+03 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.1037E+02 0.8441E+00 0.7291E+00 -0.2837E+01
REACH 2 0 1 1 1999 0.1335E+03 0.1338E+00 0.1366E+00 0.0000E+00 0.1338E+00 0.7249E-01 0.7249E-01 0.6140E+01 0.3292E+01 0.2978E+01 0.9225E+00 0.7812E+00 0.9594E+01 0.9795E+01 0.0000E+00 0.2949E+00 0.0000E+00 0.0000E+00 0.3013E-01 0.9229E-01 0.7375E-02 0.0000E+00 0.0000E+00 0.0000E+00 0.1686E+03 0.1710E+03 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.1307E+02 0.8735E+00 0.8297E+00 -0.2837E+01
REACH 3 0 1 1 1999 0.3121E+03 0.4549E+00 0.4618E+00 0.0000E+00 0.4549E+00 0.1543E+00 0.3399E+00 0.8519E+01 0.5983E+01 0.5373E+01 0.1572E+01 0.1322E+01 0.1770E+02 0.1797E+02 0.5855E+00 0.1071E+01 0.0000E+00 0.6687E-01 0.1765E+00 0.4064E+00 0.2952E-06 0.0000E+00 0.0000E+00 0.0000E+00 0.5710E+03 0.5779E+03 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.2448E+02 0.1729E+01 0.4505E+00 -0.2837E+01
REACH 4 0 1 1 1999 0.4225E+03 0.6049E+00 0.6164E+00 0.0000E+00 0.6049E+00 0.3417E+00 0.5355E+00 0.1005E+02 0.5860E+01 0.5890E+01 0.1472E+01 0.1470E+01 0.2393E+02 0.2439E+02 0.1134E+01 0.1205E+01 0.6687E-01 0.7998E-01 0.4412E+00 0.4751E+00 0.6916E-20 0.0000E+00 0.0000E+00 0.0000E+00 0.7570E+03 0.7712E+03 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.3156E+02 0.1945E+01 0.4579E+00 -0.2837E+01
ОБНОВЛЕНО: И это ошибка, которую я получаю:
forrtl: severe (64): input conversion error, unit 10, file C:\Users\etern\OneDrive\Documents\Indiana University\PhD Research\PhD Dissertation Writing\WabashProject\VisualStudioProjects\OutPutRCH\OutPutRCH\output.rch
Image PC Routine Line Source
libifcoremdd.dll 54013BA5 Unknown Unknown Unknown
libifcoremdd.dll 54059BDA Unknown Unknown Unknown
OutPutRCH.exe 00BD1E6E _MAIN__ 51 RCH.for
OutPutRCH.exe 00BF00D3 Unknown Unknown Unknown
OutPutRCH.exe 00BF24DE Unknown Unknown Unknown
OutPutRCH.exe 00BF23C7 Unknown Unknown Unknown
OutPutRCH.exe 00BF226D Unknown Unknown Unknown
OutPutRCH.exe 00BF2548 Unknown Unknown Unknown
KERNEL32.DLL 766A8484 Unknown Unknown Unknown
ntdll.dll 77173AB8 Unknown Unknown Unknown
ntdll.dll 77173A88 Unknown Unknown Unknown
** ОБНОВЛЕНО: ** Строка 51 такова:
READ(10,"(44X,17E10.3)")A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q
Старый формат сработавшей строки:
READ(1,"(41X,9E10.3)") A,B,C,D,E,F,G,H,L
Вот изменения, внесенные в код:
1 - Изменены флаги для создания новых заголовков, соответствующих новому выходному файлу.
2 - Изменено начальное значение каждого флага в первой функции Do.
3 - Изменена функция открытия, чтобы открыть новый выходной файл.
4- Изменены буквы, используемые для идентификации переменных, поскольку в новых файлах используются 17 переменных, а в старых - 9.
5- Функция Do, которая представляет каждый год выходных файлов, была изменена для соответствия 17 переменным.
6 - Изменена функция чтения каждого года, чтобы соответствовать новому файлу. Данные в старом файле начинаются с номера столбца 41 текстового файла, в новом - с 45. Кроме того, данные в старом файле имеют ширину 9 символов, в новом - 10.
7 - Изменена функция записи для создания столбцов шириной 6 символов против 5, как в старом файле.