首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fortran中赋值的无效表单

Fortran中赋值的无效表单
EN

Stack Overflow用户
提问于 2010-05-25 21:28:17
回答 2查看 3K关注 0票数 2

我无法让这些代码编译g77 minGW编译器或g95编译器。有人知道为什么吗?

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

用于:在子例程中` `diffract':

衍射5z10.579:579:

代码语言:javascript
复制
    Tropo100 = 20.34 - .077 * Dist
             ^

(^)的赋值语句无效。

衍射5z10:581:

代码语言:javascript
复制
    IF (Freq .GT. 1000)  FreqAdj = 24.5 - 7200/(Freq+3000)
     ^

(^)的赋值语句无效。

在用g95编译时,我会得到以下错误:

文件中的diff5z10.for:574

代码语言:javascript
复制
  CLUTTER = steep*CLUTTER
  1

错误:无法分类的语句在文件Diff5z10中位于(1),用于:580

代码语言:javascript
复制
  FreqAdj = 23.978 - 58026.76 / (Freq + 2320)
  1

错误:(1)不可分类的语句

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

代码语言:javascript
复制
   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
EN

回答 2

Stack Overflow用户

发布于 2010-05-25 21:53:58

假设代码段中的间距反映了源代码中的实际内容,编译器可能会将其与行延续字符(在古老的FORTRAN风格中属于第6列)或行号字符(第1-5列)混淆。有几件事你可以试试:

  • 在编译选项
  • 中启用免费格式源代码,将文件从myfile.f重命名为myfile.f90,并使用g95

重新编译。

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

票数 0
EN

Stack Overflow用户

发布于 2010-05-25 21:58:27

你检查过你的压痕风格了吗?有时编译器会在错误的路径中处理制表符,不知道有多少空格来替换它们。然后,它将输出看似随机的错误,因为它不知道行标头在哪里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2908656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档