Fortran 从表中读取数据时数组引用中的秩不匹配

Fortran 从表中读取数据时数组引用中的秩不匹配,fortran,Fortran,我有一个文本文件,格式如下:11列8行 Name Chris Kyle Peter Luke Sally (...) age xxxx xxxx xxxx xxxx xxxx height xxxx xxxx xxxx xxxx weight xxxx xxxx xxxx xxxx class xxxx xxxx xxxx

我有一个文本文件,格式如下:11列8行

Name    Chris    Kyle    Peter    Luke    Sally (...)   
age     xxxx    xxxx    xxxx    xxxx    xxxx
height          xxxx    xxxx    xxxx    xxxx
weight          xxxx    xxxx    xxxx    xxxx
class           xxxx    xxxx    xxxx    xxxx
第一列chris只在第一行中有数据

我需要建立一个程序来阅读这个表格,这是我到目前为止所拥有的,但我无法让它工作

  program readtable

  implicit none
  integer :: i, j, num_col, num_row
  double precision, dimension (2) :: a
  character(14), dimension (1) :: variable

  num_col = 11
  num_row = 8

  open(100,file='SSL.dat',status='old')
  do j=1, num_row

        read(100,*) variable(j), (a(i,j), i=1,num_col)
        print*, variable(j), a(i,j)

  end do

  end program
当我运行这段代码时,我得到一个秩不匹配

我想读取此表中的数据,以便将数据分配给特定变量。例如,如果我想和凯尔和彼得做一些事情,我知道凯尔a:,2和彼得a:,3

以下是我使用gfortran作为Fortran 90代码编译时遇到的错误

               read(100,*) variable(j), (a(i,j),i=1,num_col))
                                         1
Error: Rank mismatch in array reference at (1) (2/1)

看起来您假设dimensionn使数组是n维的。那不是真的!它使数组是一维的,形状从1到n,即1:n

如果要声明包含8行11列的二维数组,必须执行以下操作:

double precision, dimension(8,11) :: a
或同等地

double precision :: a(8,11)
类似地,变量必须类似于:

character(14), dimension(8) :: variable

这不会使您的程序完整且功能正常,但会解决编译器抱怨的直接问题。请缩小问题范围。

请提供您收到的确切错误消息以及导致错误的命令。请将其复制为文本。它应该可以为其他人搜索。这就是为什么你不能将图像直接放入问题中的原因。即使我可以,我也不会编辑它使图片可见。请在此处输入文本。看这个版本可以吗?是的,现在可以了。gfortran命令会更好,但这次就足够了。