以下是指fortran 66代码。试图重新编译非常旧的程序。无法理解错误的原因。需要解决建议。试图不重新编码更新的fortran。
DATA NPOP/6HPOPS-I,6HPOPS-D,6HPOPS-C,6HPOPS-A,6HPOPS-E,6HPOP-S /
^
Truncating characters on right side of hollerith constant at (^) azthree.for:24:
DATA NPOP/6HPOPS-I,6HPOPS-D,6HPOPS-C,6HPOPS-A,6HPOPS-E,6HPOP-S /
^
Truncating characters on right side of hollerith constant at (^) azthree.for:24:
DATA NPOP/6HPOPS-I,6HPOPS-D,6HPOPS-C,6HPOPS-A,6HPOPS-E,6HPOP-S /
^
答案 0 :(得分:0)
我从未使用Fortran66,但Hollerith常量将下一个字符声明为数据,而不是代码。所以6H
意味着:H
之后的6个字符应该是数据,而不是代码。
从本质上讲,我认为6HPOPS-I
与"POPS-I"
相同。
也许您可以向我们提供有助于理解该问题的NPOP
声明。
我用这段代码重新创建了错误消息:
PROGRAM holl
IMPLICIT NONE
CHARACTER*1 NPOP(6)
INTEGER i
DATA NPOP / 6HPOPS-I,6HPOPS-D,6HPOPS-C,
+ 6HPOPS-A,6HPOPS-E,6HPOP-S /
DO 100 i = 1, 6
PRINT *, NPOP(i)
100 CONTINUE
END PROGRAM
这给编译器警告:
$ gfortran -o holl holl.f
holl.f:6.38:
+ 6HPOPS-A,6HPOPS-E,6HPOP-S /
1
Warning: Legacy Extension: Hollerith constant at (1)
holl.f:5.20:
DATA NPOP / 6HPOPS-I,6HPOPS-D,6HPOPS-C,
1
Warning: Initialization string starting at (1) was truncated to fit the variable (1/6)
holl.f:5.29:
DATA NPOP / 6HPOPS-I,6HPOPS-D,6HPOPS-C,
1
Warning: Initialization string starting at (1) was truncated to fit the variable (1/6)
但这不是你的错误。我不知道你使用哪个编译器,在你的情况下,截断的标记似乎指向H
本身。
所以我们真的需要你提供更多信息:
NPOP