我无法让这些代码编译g77 minGW编译器或g95编译器。有人知道为什么吗?
我在g77中得到了这些错误:
用于:在子例程中` `diffract':
衍射5z10.579:579:
Tropo100 = 20.34 - .077 * Dist
^(^)的赋值语句无效。
衍射5z10:581:
IF (Freq .GT. 1000) FreqAdj = 24.5 - 7200/(Freq+3000)
^(^)的赋值语句无效。
在用g95编译时,我会得到以下错误:
文件中的diff5z10.for:574
CLUTTER = steep*CLUTTER
1错误:无法分类的语句在文件Diff5z10中位于(1),用于: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发布于 2010-05-25 21:53:58
假设代码段中的间距反映了源代码中的实际内容,编译器可能会将其与行延续字符(在古老的FORTRAN风格中属于第6列)或行号字符(第1-5列)混淆。有几件事你可以试试:
myfile.f重命名为myfile.f90,并使用g95重新编译。
与往常一样,在处理旧风格的代码时,标准警告如“始终使用implicit none也适用”。
发布于 2010-05-25 21:58:27
你检查过你的压痕风格了吗?有时编译器会在错误的路径中处理制表符,不知道有多少空格来替换它们。然后,它将输出看似随机的错误,因为它不知道行标头在哪里。
https://stackoverflow.com/questions/2908656
复制相似问题