如何在fortran 77中初始化字符变量?

时间:2017-09-22 14:32:19

标签: fortran fortran77

考虑变量

    character*100 xx

我想将它初始化为某个值,可能是一些可打印的字符或空格。我试过了

    data xx /100*char(120)/

但那没用。 最低工作示例:

cat car_array.F 
    character*10 xx
    data xx /10*char(120)/
    write(*,*)xx
    end


   ifort car_array.F 
   car_array.F(2): error #6169: This construct is not valid in this context.   [CHAR]
          data xx /10*char(120)/
  --------------------^
  compilation aborted for car_array.F (code 1)

2 个答案:

答案 0 :(得分:1)

大胆假设您并不需要符合f77标准, 你应该试试:

  character*10 :: xx=repeat(char(120),10)
在f77中,你需要将其作为运行时赋值,

  character*10 xx
  integer i
  do i=1,10
  xx(i:i)=char(120)
  end do

我看到使用重复计数data语句在f77中初始化字符串的唯一方法是通过与长度为1的字符数组进行等效,这里你不能使用char函数

  equivalence(x,y)
  character*10 x
  character*1 y(10)
  data y/10*'a'/
  write(*,*)x
  

AAAAAAAAAA

答案 1 :(得分:0)

非常类似于agentp的帖子。 如果在编译时PARAMETER语句中使用它,则可以间接使用CHAR()函数。 旧时间,但这适用于openVMS Fortran。

 PARAMETER CHAR_120 = CHAR(120)

 CHARACTER*1     X(10)   /10*CHAR_120/
 CHARACTER*10    XX
 EQUIVALENCE (X, XX)

 TYPE *,XX