我正在编写fortran 90程序并使用GNU Fortran编译器进行编译。但是,我遇到了一些我无法解决的错误。有人能解释我哪里出错了吗?
PROGRAM FILE1
IMPLICIT NONE
INTEGER:: status,a,b,c,i,j
a=5
b=6
c=1
REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
ALLOCATE (arr1(a,b))
DO i=1,a,1
DO j=1,b,1
arr1(i,j)=c
c=c+1
END DO
END DO
DO i=1,a,1
DO j=1,b,1
WRITE (*,100,ADVANCE=NO) arr1(i,j)
100 FORMAT (1X,I4.1)
END DO
WRITE (*,110)
110 FORMAT ('',/)
END DO
DEALLOCATE(arr1)
END PROGRAM
我收到了一些错误,例如在声明REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
Error: Unexpected data declaration statement at (1)
中。我从几个来源检查了语法,但没有运气。语句WRITE (*,100,ADVANCE=NO) arr1(i,j)
中也有错误。有人可以评论吗?
答案 0 :(得分:3)
发布的代码有几个问题:
您需要在执行任何其他语句之前定义所有变量。
a=5
b=6
c=1
应该在你的最后一个变量定义之后:
REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
您需要在NO
声明中引用WRITE
:
WRITE (*,100,ADVANCE="NO") arr1(i,j)
由于您正在撰写REAL
值,因此您需要提供浮点格式,例如f
或g
100 FORMAT (1X,f7.3)
工作代码为:
PROGRAM FILE1
IMPLICIT NONE
INTEGER:: status,a,b,c,i,j
REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
a=5
b=6
c=1
ALLOCATE (arr1(a,b))
DO i=1,a,1
DO j=1,b,1
arr1(i,j)=c
c=c+1
END DO
END DO
DO i=1,a,1
DO j=1,b,1
WRITE (*,100,ADVANCE="NO") arr1(i,j)
100 FORMAT (1X,f7.3)
END DO
WRITE (*,110)
110 FORMAT ('',/)
END DO
DEALLOCATE(arr1)
END PROGRAM