fortran函数参数中的语法错误

时间:2015-09-07 12:11:49

标签: fortran gfortran

我有一个子例行文件如下

subroutine grids(Ngrids,gridsize,boundx,boundy,boundz,occmatrix,myid)

  implicit NONE

  integer           i,j,k,Ngrids, occmatrix(14,14,10)
  integer           locx,locy,locz,myid
  double precision  gridsize,boundx,boundy,boundz


  do i = 1, 14
     do j = 1, 14
        do k = 1, 10
           occmatrix(i,j,k) = 0
        enddo
     enddo
  enddo

  open (13, file = 'grid_data.9deg')    
  write(*,'(A,i2)'),' READING GRID FILE ON PROC.....',myid
  read(13,*) Ngrids,gridsize
  read(13,*) boundx,boundy,boundz       
  do i = 1, Ngrids
    read(13,*) locx, locy, locz
    occmatrix(locx,locy,locz) = 1 
  enddo 
  close(13)

  return
end

在编译时会出现以下语法错误

subroutine grids(Ngrids,gridsize,boundx,boundy,boundz,occmatrix,my
                                                                  1
Error: Unexpected junk in formal argument list at (1)

以前运行良好

1 个答案:

答案 0 :(得分:3)

我相信,你的路线很长。你添加了一个新论点吗?您的代码看起来像自由格式,但可能是编译器尝试应用固定格式,因为文件名中有.f后缀或类似的东西。说服编译器假设自由格式化的源代码(通过编译器选项或通常是.f90后缀)。

即使在自由格式化的文件中,您的线宽也是有限的,您应该打破较长的线条,例如:

subroutine grids( Ngrids,gridsize,boundx,boundy,boundz, &
  &               occmatrix,myid )

如果您遇到固定格式,则需要在第6列中用非空白字符表示延续行。

以下是固定形式的样子:

      subroutine grids(Ngrids,gridsize,boundx,boundy,boundz,
     &                 occmatrix,myid)

不再使用固定格式了!相反,将文件更改为以.f90结尾,大多数编译器都会将其识别为免费格式化代码。