wolkig
Goto Top

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:

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

Content-Key: 172432

Url: https://administrator.de/contentid/172432

Printed on: April 19, 2024 at 08:04 o'clock

Member: Skyemugen
Skyemugen Sep 01, 2011 at 16:44:56 (UTC)
Goto Top
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 face-wink - Aber jede Information kann hilfreich sein, daher die Nachfrage.