解决无法分类的错误

时间:2016-02-12 10:19:54

标签: fortran

我正在处理我的分析代码的输入部分,但由于多个错误我已经卡住了。这是我未完成的代码:

    c     sinle event analysis

      implicit real(a-h,o-z)
      real day(12), nmonth(12), year(12), clas(12),
     $ hour(12), nmin(12), sec(12)
      real mark(12)
      real tst(12)
      dimension  D(12)

      real time(2054904), proa(2054904), w1(2054904),
     $ w2(2054904), w3(2054904), w4(2054904) 

      D(1) = 31, D(2) = 28, D(3) = 31, D(4) = 30, D(5) = 31,
     $ D(6) = 30, D(7) = 31, D(8) = 31, D(9) = 30, D(10) = 31,
     $ D(11) = 30, D(12) = 31

      open(100,file='singleE.txt',status='OLD')

      do i=1, 12
       tst(i)=0
      enddo

900   do i=1, 12
       read(100, 1150) day(i), nmonth(i), year(i),
     $  hour(i), nmin(i), sec(i), clas(i)

       do j=12, 1, -1

        if integer(nmonth(i)) == j then         
         tst(i) = tst(i) + D(j-1)
        endif

       enddo

       tst(i) = tst(i) + day(i) + (year(i) - 2010)*365
     $  + (hour(i) + nmin(i)/60)/24 

       if year(i) > 2011 then tst(i) = tst(i) + 1/365
       endif

       print *, day(i), nmonth(i), year(i), hour(i), nmin(i),
     $  sec(i), clas(i), tst(i)

      enddo

      open(200,file='hole.dat',status='OLD')



950   FORMAT(F12.7,2x,E10.3,2x,E10.3,2x,E10.3,2x,E10.3,
     $ 2x,E10.3,2x,E10.3)

1150  FORMAT(F2.0,1x,F2.0,1x,F4.0,1x,F2.0,1x,F2.0,4x, 
     $ F3.1)

      end

代码分手了,我不知道为什么:( 无论如何,这是我得到的错误:

singleA.f:13.6:

  D(1) = 31, D(2) = 28, D(3) = 31, D(4) = 30, D(5) = 31,            
  1

错误:(1)处的不可分类陈述 singleA.f:29.8:

    if integer(nmonth(i)) == j then                                 
    1

错误:(1)处的不可分类陈述 singleA.f:31.11:

    endif                                                           
       1

错误:在(1)处期待END DO语句 singleA.f:38.7:

   if year(i) > 2011 then tst(i) = tst(i) + 1/365                   
   1

错误:(1)处的不可分类陈述 singleA.f:39.10:

   endif                                                            
      1

错误:期待(1)

处的END DO语句

主要问题是第一个和第二个问题。我认为其余的是由第二个错误引起的。我知道这是一个很长的代码,但是如果有人告诉我我的错误会很好:)

1 个答案:

答案 0 :(得分:1)

这个,以及类似的行

D(1) = 31, D(2) = 28, D(3) = 31, D(4) = 30, D(5) = 31,

在语法上不正确;事实上它已经破碎了,编译器无法弄清楚错误是什么,并将其标记为“无法分类”。

简单的解决方法是将每个语句放在单独的行上并丢失逗号。或者,您可以将,替换为;,这是Fortran语句分隔符。