回 帖 发 新 帖 刷新版面

主题:求助:gfortran编译f90文件出错

如题,我的程序.f90的程序在visual fortran下可运行出结果,为什么用gfortran编译后出现错误,提示在某处“Invalid character in nume”,难道fortran语言的变量定义不一样么?
希望知道的高手解惑,十分感谢!

回复列表 (共9个回复)

沙发

也可能是控制字符引起的
把出错的代码贴出来看看

板凳

[quote]也可能是控制字符引起的
把出错的代码贴出来看看[/quote]
十分感谢您的回复,我运行gfortran命令进行编译后,显示如下:
m+1)*nQTL+nm),m_qd(Ne/2,2*nChr,(nm+1)*nQTL+nm),m_qsswap(1,2*nChr,(nm+1)*nQT
                                                                          1
Error: Invalid form of array reference at (1)
examine.f90:76.132:

m+1)*nQTL+nm),m_qd(Ne/2,2*nChr,(nm+1)*nQTL+nm),m_qsswap(1,2*nChr,(nm+1)*nQT
                                                                           1
Warning: Line truncated at (1)
examine.f90:77.132:

,nChr,(nm+1)*nQTL+nm), eff_Q(nChr,nQTL),T1(1,2*nChr,(nm+1)*nQTL+nm),eff_q_l
                                                                          1
Error: Syntax error in ALLOCATE statement at (1)
examine.f90:77.132:

,nChr,(nm+1)*nQTL+nm), eff_Q(nChr,nQTL),T1(1,2*nChr,(nm+1)*nQTL+nm),eff_q_l
                                                                           1
Warning: Line truncated at (1)
examine.f90:78.132:

/2,2*nChr,(nm+1)*nQTL+nm), adde(n1001,1),coe(n1001,nChr,nQTL), pheno(n1001,
                                                                           1
Error: Expected array subscript at (1)
examine.f90:78.132:

/2,2*nChr,(nm+1)*nQTL+nm), adde(n1001,1),coe(n1001,nChr,nQTL), pheno(n1001,
                                                                           1
Warning: Line truncated at (1)

错误好像都在同一处,是声明可变数组的语句中,原代码如下:

ALLOCATE (m(Ne,2*nChr,(nm+1)*nQTL+nm),m_qs(Ne/2,2*nChr,(nm+1)*nQTL+nm),m_qd(Ne/2,2*nChr,(nm+1)*nQTL+nm),m_qsswap(1,2*nChr,(nm+1)*nQTL+nm),m_qdswap(1,2*nChr,(nm+1)*nQTL+nm))
allocate(m1001(n1001,2*nChr,(nm+1)*nQTL+nm),m1001_c(n1001,nChr,(nm+1)*nQTL+nm), eff_Q(nChr,nQTL),T1(1,2*nChr,(nm+1)*nQTL+nm),eff_q_l(nChr,nQTL))
allocate(s1001(n1001/2,2*nChr,(nm+1)*nQTL+nm),d1001(n1001/2,2*nChr,(nm+1)*nQTL+nm), adde(n1001,1),coe(n1001,nChr,nQTL), pheno(n1001,1))
allocate(n_eQTL(nr,1),r_h2(nr,1),Var_G(nr,1),Var_P(nr,1),Var_E(nr,1))

希望你能明白错误的地方,十分感谢!

3 楼

[quote]也可能是控制字符引起的
把出错的代码贴出来看看[/quote]
出错的结果显示如下:
m+1)*nQTL+nm),m_qd(Ne/2,2*nChr,(nm+1)*nQTL+nm),m_qsswap(1,2*nChr,(nm+1)*nQT
                                                                           1                                                         
Error: Invalid form of array reference at (1)
examine.f90:76.132:

m+1)*nQTL+nm),m_qd(Ne/2,2*nChr,(nm+1)*nQTL+nm),m_qsswap(1,2*nChr,(nm+1)*nQT
                                                                           1                                                         
Warning: Line truncated at (1)
examine.f90:77.132:

,nChr,(nm+1)*nQTL+nm), eff_Q(nChr,nQTL),T1(1,2*nChr,(nm+1)*nQTL+nm),eff_q_l
                                                                           1                                                         
Error: Syntax error in ALLOCATE statement at (1)
examine.f90:77.132:

,nChr,(nm+1)*nQTL+nm), eff_Q(nChr,nQTL),T1(1,2*nChr,(nm+1)*nQTL+nm),eff_q_l
                                                                           1                                                         
Warning: Line truncated at (1)
examine.f90:78.132:

/2,2*nChr,(nm+1)*nQTL+nm), adde(n1001,1),coe(n1001,nChr,nQTL), pheno(n1001,
                                                                           1                                                         
Error: Expected array subscript at (1)
examine.f90:78.132:

/2,2*nChr,(nm+1)*nQTL+nm), adde(n1001,1),coe(n1001,nChr,nQTL), pheno(n1001,
                                                                           1                                                         
Warning: Line truncated at (1)
在visual fortran 的原代码如下:
ALLOCATE (m(Ne,2*nChr,(nm+1)*nQTL+nm),m_qs(Ne/2,2*nChr,(nm+1)*nQTL+nm),m_qd(Ne/2,2*nChr,(nm+1)*nQTL+nm),m_qsswap(1,2*nChr,(nm+1)*nQTL+nm),m_qdswap(1,2*nChr,(nm+1)*nQTL+nm))
allocate(m1001(n1001,2*nChr,(nm+1)*nQTL+nm),m1001_c(n1001,nChr,(nm+1)*nQTL+nm), eff_Q(nChr,nQTL),T1(1,2*nChr,(nm+1)*nQTL+nm),eff_q_l(nChr,nQTL))
allocate(s1001(n1001/2,2*nChr,(nm+1)*nQTL+nm),d1001(n1001/2,2*nChr,(nm+1)*nQTL+nm), adde(n1001,1),coe(n1001,nChr,nQTL), pheno(n1001,1))
allocate(n_eQTL(nr,1),r_h2(nr,1),Var_G(nr,1),Var_P(nr,1),Var_E(nr,1))
期待您的回复,谢谢!

4 楼

加入-ffree-line-length-none编译

5 楼

[quote]加入-ffree-line-length-none编译[/quote]
这些“-ffree-line-length-none”加到什么地方啊?比如我的程序文件是
simu.f90,那命令怎么写?不是很懂,谢谢赐教!

6 楼

[quote]加入-ffree-line-length-none编译[/quote]
十分感谢您的赐教,我刚开始学linux和gfortran,很多不懂的地方,能不能给解释一下,或者提供写关于gfortran命令的资料,我没有搜到,谢谢!

7 楼

[quote][quote]加入-ffree-line-length-none编译[/quote]
这些“-ffree-line-length-none”加到什么地方啊?比如我的程序文件是
simu.f90,那命令怎么写?不是很懂,谢谢赐教![/quote]
gfortran -ffree-line-length-none simu.f90

8 楼

[quote][quote]加入-ffree-line-length-none编译[/quote]
十分感谢您的赐教,我刚开始学linux和gfortran,很多不懂的地方,能不能给解释一下,或者提供写关于gfortran命令的资料,我没有搜到,谢谢![/quote]
gfortran -v --help
或是去
http://gcc.gnu.org/
看看去。

9 楼

[quote][quote][quote]加入-ffree-line-length-none编译[/quote]
十分感谢您的赐教,我刚开始学linux和gfortran,很多不懂的地方,能不能给解释一下,或者提供写关于gfortran命令的资料,我没有搜到,谢谢![/quote]
gfortran -v --help
或是去
http://gcc.gnu.org/
看看去。[/quote]

十分感谢您的热心,好好学习,争取向大虾看齐!

我来回复

您尚未登录,请登录后再回复。点此登录或注册