这个fortran计划的错误是什么?

时间:2015-04-09 00:55:09

标签: fortran fortran90

我正在编写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)中也有错误。有人可以评论吗?

1 个答案:

答案 0 :(得分:3)

发布的代码有几个问题:

  1. 您需要在执行任何其他语句之前定义所有变量。

    a=5
    b=6
    c=1
    
  2. 应该在你的最后一个变量定义之后:

    REAL,ALLOCATABLE,DIMENSION (:,:) :: arr1
    
    1. 您需要在NO声明中引用WRITE

      WRITE (*,100,ADVANCE="NO") arr1(i,j)
      
    2. 由于您正在撰写REAL值,因此您需要提供浮点格式,例如fg

      100 FORMAT (1X,f7.3)
      
    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