Fortran Code - Fehler trotz richtiger Ausgabe
Kompiliertes Fortran Programm gibt richtige Ausgabe, aber erzeugt einen Fehler durch Windows
Hi,
derzeit sitze ich an einem Fortran Code, welchen ich für eine Formatierung von Werten nutzen möchte. Nachdem die model2grid.f mit gfortran fehlerfrei kompiliert wurde und die erzeugte EXE DAtei aufrufe, wird das Skript ordnungsgemäß ausgeführt, aber stoppt mit einer Windows-Fehlermeldung: model2grid.exe funktioniert nicht mehr. Leider bekomme ich es selbst nicht gelöst, da ich mit Fortran noch nicht programmiert habe. Habt ihr die Lösung, wo sich der Fehler versteckt hat? Es ruft die folgende Datei auf:
Der Text soll formatiert ausgegeben werden und zusätzlich eine ctl Datei ausgeben, in der das Datum aus der Textdatei entnommen wird. Die beiden Ausgaben sehen folgendermaßen aus:
Die formatierte station2modelgrid.txt
und die ctl-Datei:
Das Fortran Skript:
derzeit sitze ich an einem Fortran Code, welchen ich für eine Formatierung von Werten nutzen möchte. Nachdem die model2grid.f mit gfortran fehlerfrei kompiliert wurde und die erzeugte EXE DAtei aufrufe, wird das Skript ordnungsgemäß ausgeführt, aber stoppt mit einer Windows-Fehlermeldung: model2grid.exe funktioniert nicht mehr. Leider bekomme ich es selbst nicht gelöst, da ich mit Fortran noch nicht programmiert habe. Habt ihr die Lösung, wo sich der Fehler versteckt hat? Es ruft die folgende Datei auf:
2007 12 01 00 0 53.547831 7.667337 12.0
2007 12 01 00 1 52.7233 7.3264 10.0
2007 12 01 00 2 52.291170 7.386997 11.0
2007 12 01 00 3 52.5903 8.3464 12.0
2007 12 01 00 4 53.7647 8.6575 12.0
2007 12 01 00 5 53.128594 6.586841 12.0
2007 12 01 00 6 53.5322 7.8806 12.0
2007 12 01 00 7 53.388004 7.228682 13.0
2007 12 01 00 8 53.712246 7.152294 14.4
2007 12 01 00 9 53.049312 8.788577 12.3
2007 12 01 00 10 52.1353 7.7000 12.0
Der Text soll formatiert ausgegeben werden und zusätzlich eine ctl Datei ausgeben, in der das Datum aus der Textdatei entnommen wird. Die beiden Ausgaben sehen folgendermaßen aus:
Die formatierte station2modelgrid.txt
2007 12 01 00 0 53.548 7.667 12.000
2007 12 01 00 1 52.723 7.326 10.000
2007 12 01 00 2 52.291 7.387 11.000
2007 12 01 00 3 52.590 8.346 12.000
2007 12 01 00 4 53.765 8.658 12.000
2007 12 01 00 5 53.129 6.587 12.000
2007 12 01 00 6 53.532 7.881 12.000
2007 12 01 00 7 53.388 7.229 13.000
2007 12 01 00 8 53.712 7.152 14.400
2007 12 01 00 9 53.049 8.789 12.300
2007 12 01 00 10 52.135 7.700 12.000
2007 12 01 00 11 0.000 0.000 0.000
und die ctl-Datei:
DSET ^station2modelgrid.bin
DTYPE station
STNMAP station2modelgrid.map
ZDEF 1 1
UNDEF -9.99e33
TITLE Station Data
TDEF 1 linear 00z01dec2007 12hr
VARS 1
var 0 99 **
ENDVARS
Das Fortran Skript:
! INPUT FILE LOOKS LIKE (separeted by any number of spaces):
!
! (...)
! yearwith4digits monthwith2digits daywith2digits hourwith2digits stationname latitude longitude value
! (...)
!
program CreateStation2ModelGrid
parameter (nl=9999) ! nl: MAXIMUM NUMBER OF STATIONS
real lat(nl),lon(nl),var(nl)
integer m2,y4,status
character (LEN=3) m2name(12)
character (LEN=2) d2,h2
character sid
open(unit=1,file='stationdata.txt')
open(unit=2,file='station2modelgrid.txt')
open(unit=10,file='station2modelgrid.ctl')
i=0
do
read(1,*,END=21)y4,m2,d2,h2,sid,lat(i),lon(i),var(i)
if((lat(i).eq.lon(i)).and.(lon(i).eq.0))exit
i=i+1
20 end do
21 if(d2(1:1).eq." ") then
d2(1:1)="0"
endif
if(d2(2:2).eq." ") then
d2(2:2)=d2(1:1); d2(1:1)="0"
endif
if(h2(1:1).eq." ") then
h2(1:1)="0"
endif
if(h2(2:2).eq." ") then
h2(2:2)=h2(1:1); h2(1:1)="0"
endif
do 30 j=0,i
! Transforms the station name (sid) in an index number (i)
if(m2.lt.10) then
write(*,15)y4,"0",m2,d2,h2,j,lat(j),lon(j),var(j) !Dient nur zur Ausgaben im Terminal
write(2,15)y4,"0",m2,d2,h2,j,lat(j),lon(j),var(j)
else
write(*,14)y4,m2,d2,h2,j,lat(j),lon(j),var(j) !Dient nur zur Ausgaben im Terminal
write(2,14)y4,m2,d2,h2,j,lat(j),lon(j),var(j)
endif
30 continue
14 format(i4,2x,i2,2x,a2,2x,a2,2x,i5,9x,f10.3,2x,f10.3,2x,f10.3)
15 format(i4,2x,a1,i1,2x,a2,2x,a2,2x,i5,9x,f10.3,2x,f10.3,2x,f10.3)
!!!!! Generating CTL
!! Picking the right m2 name
m2name=(/'jan','feb','mar','apr','may','jun','jul',
*'aug','sep','oct','nov','dec'/)
write(10,*) "DSET ^station2modelgrid.bin"
write(10,*) "DTYPE station "
write(10,*) "STNMAP station2modelgrid.map"
write(10,*) "ZDEF 1 1"
write(10,*) "UNDEF -9.99e33"
write(10,*) "TITLE Station Data"
write(10,'(a16,a2,a1,a2,a3,i4,a5)') "TDEF 1 linear ",h2,
*"z",d2,m2name(m2),y4," 12hr"
write(10,*) "VARS 1"
write(10,*) "var 0 99 **"
write(10,*) "ENDVARS"
stop
end program CreateStation2ModelGrid
Please also mark the comments that contributed to the solution of the article
Content-Key: 172432
Url: https://administrator.de/contentid/172432
Printed on: April 19, 2024 at 21:04 o'clock
1 Comment
Aloha,
welches OS nutzt du? Windows XP? 7? x86? x64?
Ich frage deshalb, weil mir bei Windows 7 x64 z.B. sehr oft passiert, dass Windows der Meinung ist, ein Programm wurde nicht richtig ausgeführt oder die Installation war fehlerhaft, obwohl alles reibungslos ablief / funktionierte und Windows XP z.B. nie auch nur einmal rummuckt bei denselben Programmen / .exe-Dateien.
greetz André
P.S.: Das war auch das einzige, was ich diesbezüglich beitragen kann - Aber jede Information kann hilfreich sein, daher die Nachfrage.
welches OS nutzt du? Windows XP? 7? x86? x64?
Ich frage deshalb, weil mir bei Windows 7 x64 z.B. sehr oft passiert, dass Windows der Meinung ist, ein Programm wurde nicht richtig ausgeführt oder die Installation war fehlerhaft, obwohl alles reibungslos ablief / funktionierte und Windows XP z.B. nie auch nur einmal rummuckt bei denselben Programmen / .exe-Dateien.
greetz André
P.S.: Das war auch das einzige, was ich diesbezüglich beitragen kann - Aber jede Information kann hilfreich sein, daher die Nachfrage.