霍勒瑞斯数据陈述

时间:2016-10-19 00:06:21

标签: fortran

以下是指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 /
                                 ^

1 个答案:

答案 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本身。

所以我们真的需要你提供更多信息:

  1. 更多代码,特别是NPOP
  2. 的声明
  3. 编译器版本和-options