sqs 发表于 2022-5-28 15:12:52

Unclassifiable statement 报错

程序中有如下子程序(部分)
subroutine integralk(numk, numw, w, gamma, sigma)

    use ABA

    implicit none
    integer, intent(in) :: numw, numk
    real(8),intent(in) :: w(numw)
    real(8), intent(in) :: gamma
    complex(8),intent(out) ::sigma(2, 2, numw)


    integer :: N = 6, i1, i3, i4
    real(8) :: k(2), en(6), ds
    complex(8) :: t_sigma(2, 2, numw) , sigmak(2, 2, numw)
    complex(8) :: H(6,6), dagger_H(6,6), v(2, 6, 6), r(2, 6, 6)

    ds = 8d0*(PI**2)/((a0**2)*sqrt(3.0)*(numk**2))

    t_sigma = 0.d0

    do i3 = 1,numk
      do i4 = 1,numk
      
      k(1) = real(i3)/numk, k(2) = real(i4)/numk

但是在运行是出现了如下报错
228 |         k(1) = real(i3)/numk, k(2) = real(i4)/numk
      |         1
Error: Unclassifiable statement at (1)

这里面我对k(1),k(2)以及给出了定义,为什么还会出现unclassifiable statement 报错呢

vvt 发表于 2022-5-28 16:15:10

k(1) = real(i3)/numk; k(2) = real(i4)/numk

k=/numk


sqs 发表于 2022-5-28 18:37:13

vvt 发表于 2022-5-28 16:15
k(1) = real(i3)/numk; k(2) = real(i4)/numk

k=/numk

所以Fortran在定义变量时是可以用逗号,而赋值的时候需要用分号么

kyra 发表于 2022-5-29 08:52:51

本帖最后由 kyra 于 2022-5-29 08:55 编辑

不管是赋值,还是其他操作。(所有的)语句要么独立一行,要么以分号分隔。

定义语句允许一次定义多个变量。但这些变量的定义,是一个语句。
如果有多个定义语句,也可以用分号分隔。比如
integer :: a , b , c ; real :: d , e , f

赋值语句也允许一次赋值一个数组,就像楼上给出的 k=/numk 这个语句一样。


页: [1]
查看完整版本: Unclassifiable statement 报错