11

次の簡単なプログラムを実行したとき

program test
! integer m,n,r,i
double precision x(2),y(3),z(4)
x=(/2.0,1.0/)
y=(/1.0,2.0,1.0/)
call polymul(x,2,y,3,z,4)
print *,z
 end

subroutine polymul(x,m,y,n,z,r)
! polynominal multipy
integer i,j,k
do i=1,r
z(i)=0.0
end do
do i=1,m
  do j=1,n
    k=i+j-1
    z(k)=z(k)+x(i)*y(j)
  end do
end do
end

それは示した

エラー: 分類できないステートメント

4

2 に答える 2

12

サブルーチンでxy、およびが宣言されていません。zFortran は、これらの変数が関数 (定義されていない) なのか配列なのかを認識しません。修正は簡単です。サブルーチンで配列を明示的に宣言します。

    subroutine polymul(x, m, y, n, z, r)
       implicit none
       integer m, n, r
       double precision x(m), y(n), z(r)
       integer i, j, k
       do i=1,r
          z(i)=0.0
       enddo
       do i=1,m
          do j=1,n
             k=i+j-1
             z(k)=z(k)+x(i)*y(j)
          enddo
       enddo
    end subroutine
于 2013-06-05T01:42:36.327 に答える
3

ifort が (変数 z) この名前は配列または関数として宣言されていません.u は、サブルーチン polymul で変数 x,y,z を配列として宣言する必要があることを示します。

于 2013-06-06T03:13:12.450 に答える