我試圖使用下面的代碼來讀取格式化文件並將其寫入另一個文件。但是,在運行它顯示了以下錯誤Fortran運行時錯誤:列表輸入項目1中的實際數字不正確(單元= 5,文件='stdin')
Fortran運行時錯誤:錯誤的實數列表中輸入
$ ./conv.sac.farm < i_conv.farm
# stn comp Delta Tr-time Start in record
At line 54 of file Main/conv.sac.farm.f (unit = 5, file = 'stdin')
Fortran runtime error: Bad real number in item 1 of list input
的第1項的源代碼如下
PARAMETER (nd0=100000,pi=3.1415926)
IMPLICIT COMPLEX*8 (Z)
CHARACTER name*6,comp*6,fname*60,event*20
- ,cmp(0:3)*5,fname0*60,charac*15,scode*60
REAL*8 GFACT(500),PP0(500),depth0
integer hr0,mnu0,yr,month,day,hr,mnu
REAL x(nd0),y(nd0)
DIMENSION Z(nd0),zpole(50),zero(50)
data np,cmp/8,'disp.','vel. ','acc. ','orig.'/
common /tbl/ip(110,14),is(110,14),secp(110,14),secs(110,14)
read(5,'(a)') event
read(5,*) alats,alons,depth,hr0,mnu0,sec0,id,delmin,delmax
depth0=depth
write(22,'(a,a5,3f7.2,2i3,f6.2)')
# event,cmp(id),alats,alons,depth,hr0,mnu0,sec0
* << J-B travel time table >>
OPEN(11,FILE='jb.ptime')
OPEN(12,FILE='jb.stime')
1000 read(11,*,end=1001) n,(ip(n,i),secp(n,i),i=1,14)
goto 1000
1001 read(12,*,end=1002) n,(is(n,i),secs(n,i),i=1,14)
goto 1001
1002 continue
close(11)
close(12)
* << Geometrical factor >>
OPEN(15,FILE='jb.table')
CALL GEOM(GFACT,PP0,depth0)
close(15)
nstn=0
print *,' # stn comp Delta Tr-time Start in record'
5 read(5,'(a)') fname
read(5,'(a)') scode
* ta=advance of start-time relative the standard P/S arrival
* du=duration
c
if(fname.eq.'dummy') goto 90
read(5,*) ta,du,dt,f1,f2,iph,nr,iuni
open(1,file=fname)
READ(1,'(g15.7)') dt0
read(1,'(/////5g15.7)') dum, alat, alon, elev
read(1,'(///////5i10)') yr, nday, hr,mnu, nsec
read(1,'(5i10)') nmsec,ndum,ndum,ndum,nd
read(1,'(/////)')
read(1,'(a6,2x,a13)') name,charac
read(1,'(////)')
等。 。 線54
read(5,*) ta,du,dt,f1,f2,iph,nr,iuni
和我i_conv.farm文件是
1604151625 Japan
32.79 130.58 10 16 25 06 1 30 100
II.BORG.00.BH1.A
II.BORG.00
II.BORG.00.BH2.A
II.BORG.00
II.BORG.00.BHZ.A
II.BORG.00
20 120 1
0.002 1 1 1 1
II.DGAR.00.BH1.A
II.DGAR.00
II.DGAR.00.BH2.A
II.DGAR.00
II.DGAR.00.BHZ.A
II.DGAR.00
20 120 1
0.002 1 1 1 1
II.TAU.00.BH1.A
II.TAU.00
II.TAU.00.BH2.A
II.TAU.00
II.TAU.00.BHZ.A
II.TAU.00
20 120 1
0.002 1 1 1 1
II.UOSS.00.BH1.A
II.UOSS.00
II.UOSS.00.BH2.A
II.UOSS.00
II.UOSS.00.BHZ.A
II.UOSS.00
20 120 1
0.002 1 1 1 1
II.WRAB.00.BH1.A
II.WRAB.00
II.WRAB.00.BH2.A
II.WRAB.00
II.WRAB.00.BHZ.A
II.WRAB.00
20 120 1
0.002 1 1 1 1
IU.AFI.00.BH1.A
IU.AFI.00
IU.AFI.00.BH2.A
IU.AFI.00
IU.AFI.00.BHZ.A
IU.AFI.00
20 120 1
0.002 1 1 1 1
我真的不知道格式化數據在哪裏不對?
通過我的計數,代碼在嘗試讀取「ta」的值之前並未跳過(或讀取)開始「II.BORG」的所有行,並且無法解釋類似「II.BORG.00」作爲一個實數。我沒有把我的鞋子和襪子拿走,所以我的計數可能是不可靠的,但請檢查。 –
你是否真的仍然在兩年前同樣的問題上陷入困境? http://stackoverflow.com/q/24303045/1004168。當您嘗試爲該問題提供的答案時,您獲得了什麼結果? – agentp
@agentp他是一個不同的用戶。你看不到這一點,但他試圖在答案中提問,而答覆/問題已被主持人刪除。答案並不是真正的問題的確切答案,只是提示如何進行調試。 (我沒有太多地研究這個問題的細節,我傾向於不太關心在某人的代碼和輸入文件中關於I/O的這些非常具體的問題。)如果對這些問題中的一些問題的答案吸引了贊成,我們可以關閉他們作爲重複。我個人不會爲了它而提出任何答案,只要它提供了一個真正的解決方案。 –