fortran errorについて
fortranを勉強していたのですがエラーがでてしまい、何時間かけても理解できなかったので質問させてください。
以下プログラム
program test
!ここからメインルーチン
!前準備 配列の用意
implicit none
integer N
integer,dimension(0:N,0:N) :: A
integer :: i,j,k
read * ,N
!初期状態の代入
do i=0,N
do j=0,N
A(i,j)=0
end do
end do
do i=N/2,N-1
A(N/2,i)=1
end do
do i=N/2,N-1
A(N/2+1,i)=-1
end do
!ループ 50回ループさせる
do k=0,50
!状態の表示
call visualize
!サブルーチン visualize
subroutine visualize
do i=0,N
do j=0,N
if(A(i,j)== 1) write(*,'(A1)',advance='NO') "*"
if(A(i,j)== 0) write(*,'(A1)',advance='NO') " "
if(A(i,j)==-1) write(*,'(A1)',advance='NO') "+"
end do
write(*,*)
end do
!end subroutine visualize
call insert
!サブルーチン insert
subroutine insert
do i=0,N
do j=0,N
if(A(i,j)== 1) A(i,j)=-1
if(A(i,j)== 0) A(i,j)=max(0,A(i-1,j),A(i,j-1),A(i,j+1),A(i+1,j))
if(A(i,j)==-1) A(i,j)=0
end do
end do
!end subroutine insert
end do
end program test
これでコンパイラすると
In file test.f90:48
subroutine visualize
1
Error: Unclassifiable statement at (1)
In file test.f90:69
subroutine insert
1
Error: Unclassifiable statement at (1)
とでます
いろいろ調べたのですが全くわかりませんでした
できればよろしくお願いします
お礼
回答有難うございます。 解決しました。 上記に書いていなかった部分の41行目のjj1(Integer)の値がwrite文の有無で変わっていました。 41 call pick_p_arrival(ibuf4,jj1,jj2,ians,j1,jk3,j4,sn) 42 nnn=jj2-jj1+1 jj1の値を定義していなかったため、writeの有無で参照するポインタの値が変わってしまったのではないかと思われます。jj1の値をきちんと定義したところ、write文がなくても期待とおりの結果がでるようになりました。 前提条件の記述不備な質問にもお付き合い頂き有難うございました。