Fortran中赋值的表单无效

时间:2010-05-25 21:28:18

标签: fortran

我无法使用g77 minGW编译器或g95编译器来编译这段代码。有谁知道为什么?


我在g77中遇到了这些错误:

diff5z10.for:在子程序`diffract'中:

diff5z10.for:579:

    Tropo100 = 20.34 - .077 * Dist
             ^

(^)

的赋值语句的表单无效

diff5z10.for:581:

    IF (Freq .GT. 1000)  FreqAdj = 24.5 - 7200/(Freq+3000)
     ^

(^)

的赋值语句的表单无效

我在使用g95编译时遇到这些错误:

在文件diff5z10.for:574

  CLUTTER = steep*CLUTTER
  1

错误:(1)处的不可分类陈述 在文件diff5z10.for:580

  FreqAdj = 23.978 - 58026.76 / (Freq + 2320)
  1

错误:(1)

处的不可分类陈述

这是该程序的这一部分的代码: (从第362行开始)

   Span = .28 - .144 * (Round - 1.2)
   Para = C / Span**2
  IF (Ratio .GT. .4) Para = 6.25 * (C - 1)
  CLUTTER = Para * (RATIO - .4)**2 - C  
  IF (CLUTTER .GT. 0.) CLUTTER = 0.


  CSlope =  SQRT(freq)/350
  steep = 1 + CSlope * (dist - Horizon)
  IF (steep .LT. 0) steep = 0
  IF (steep .GT. 1) steep = 1
  CLUTTER = steep*CLUTTER



 Tropo100 = 20.34 - .077 * Dist
 FreqAdj = 23.978 - 58026.76 / (Freq + 2320)
 IF (Freq .GT. 1000)  FreqAdj = 24.5 - 7200/(Freq+3000)
 TropoFd = Tropo100 - FreqAdj

  FS_field = 106.9 - 20 * LOG10(Dist)     
  Scatter = TropoFd - FS_field         !loss ref to free space
  DiffL = Scatter  -  DLOSS
   Combine = 150/(20 - DiffL) - 5
  IF (DiffL .LT. -10) Combine = 0
  IF (DiffL .GT. 10)  Combine = DiffL
  DLOSS = DLOSS + Combine

  RETURN
  END

2 个答案:

答案 0 :(得分:0)

假设您的代码段中的间距反映了源代码中的实际内容,您的编译器可能会与行继续符(在古老的FORTRAN样式属于第6列)或行号字符(第1列)混淆5)。你可以尝试一些事情:

  • 在编译选项中启用自由格式源
  • 将文件从myfile.f重命名为myfile.f90并使用g95重新编译

与往常一样,在处理旧式代码时,标准警告(例如“始终使用implicit none”也适用。

答案 1 :(得分:0)

你检查了缩进风格吗?有时您的编译器会处理badway中的选项卡,而不知道有多少空格来替换它们。然后它会输出看似随机的错误,因为它不知道行标题的位置。