在FORTRAN代码中,避免每个子例程中出现长接口块的正确方法是什么?
我需要在使用solvmatrx的每个子例程上编写此接口块:在FORTRAN代码中,避免每个子例程中出现长接口块的正确方法是什么?,fortran,Fortran,我需要在使用solvmatrx的每个子例程上编写此接口块: INTERFACE SUBROUTINE solvmatrx( x0, ABRS_, nstp, ad00, alu00, b, lnt00, lnd00, nd, ns00, & mstEp, eps, lop1, lu0sw, rto, irtc, LPV, LPM, NV, LEPSSW, OMG, &
INTERFACE
SUBROUTINE solvmatrx( x0, ABRS_, nstp, ad00, alu00, b, lnt00, lnd00, nd, ns00, &
mstEp, eps, lop1, lu0sw, rto, irtc, LPV, LPM, NV, LEPSSW, OMG, &
GAMMA_, LCOLOR_, PARALLEL)
integer*4 nd, ns00, nv, ndb, ndx, irtc, nstp, mstep, lepssw, lop1, lu0sw
integer*4 lnd00(ND), lnt00(NS00), lpv(ND), lpm(ND), LCOLOR_
real*8 x0(ND),b(ND),ad00(ND),alu00(NS00),ABRS_,eps,rto,omg,GAMMA_
LOGICAL, INTENT(IN), optional :: PARALLEL
END SUBROUTINE solvmatrx
END INTERFACE
我如何避免这种情况呢?也许显而易见的事情应该明确地写出来 在Fortran 90中很少需要接口块。十次中有九次使用接口块意味着你做错了什么。您应该使用模块
solvmatrix
本身应该在一个模块中MODULE INTERFACES
INTERFACE
SUBROUTINE solvmatrx( x0, ABRS_, nstp, ad00, alu00, b, lnt00, lnd00, nd, ns00, &
mstEp, eps, lop1, lu0sw, rto, irtc, LPV, LPM, NV, LEPSSW, OMG, &
GAMMA_, LCOLOR_, PARALLEL)
integer*4 nd, ns00, nv, ndb, ndx, irtc, nstp, mstep, lepssw, lop1, lu0sw
integer*4 lnd00(ND), lnt00(NS00), lpv(ND), lpm(ND), LCOLOR_
real*8 x0(ND),b(ND),ad00(ND),alu00(NS00),ABRS_,eps,rto,omg,GAMMA_
LOGICAL, INTENT(IN), optional :: PARALLEL
END SUBROUTINE solvmatrx
END INTERFACE
END MODULE
MODULE INTERFACES
INTERFACE
SUBROUTINE solvmatrx( x0, ABRS_, nstp, ad00, alu00, b, lnt00, lnd00, nd, ns00, &
mstEp, eps, lop1, lu0sw, rto, irtc, LPV, LPM, NV, LEPSSW, OMG, &
GAMMA_, LCOLOR_, PARALLEL)
integer*4 nd, ns00, nv, ndb, ndx, irtc, nstp, mstep, lepssw, lop1, lu0sw
integer*4 lnd00(ND), lnt00(NS00), lpv(ND), lpm(ND), LCOLOR_
real*8 x0(ND),b(ND),ad00(ND),alu00(NS00),ABRS_,eps,rto,omg,GAMMA_
LOGICAL, INTENT(IN), optional :: PARALLEL
END SUBROUTINE solvmatrx
END INTERFACE
END MODULE
USE INTERFACES
也许显而易见的事情应该明确地写出来 在Fortran 90中很少需要接口块。十次中有九次使用接口块意味着你做错了什么。您应该使用模块
solvmatrix
本身应该在一个模块中MODULE INTERFACES
INTERFACE
SUBROUTINE solvmatrx( x0, ABRS_, nstp, ad00, alu00, b, lnt00, lnd00, nd, ns00, &
mstEp, eps, lop1, lu0sw, rto, irtc, LPV, LPM, NV, LEPSSW, OMG, &
GAMMA_, LCOLOR_, PARALLEL)
integer*4 nd, ns00, nv, ndb, ndx, irtc, nstp, mstep, lepssw, lop1, lu0sw
integer*4 lnd00(ND), lnt00(NS00), lpv(ND), lpm(ND), LCOLOR_
real*8 x0(ND),b(ND),ad00(ND),alu00(NS00),ABRS_,eps,rto,omg,GAMMA_
LOGICAL, INTENT(IN), optional :: PARALLEL
END SUBROUTINE solvmatrx
END INTERFACE
END MODULE
MODULE INTERFACES
INTERFACE
SUBROUTINE solvmatrx( x0, ABRS_, nstp, ad00, alu00, b, lnt00, lnd00, nd, ns00, &
mstEp, eps, lop1, lu0sw, rto, irtc, LPV, LPM, NV, LEPSSW, OMG, &
GAMMA_, LCOLOR_, PARALLEL)
integer*4 nd, ns00, nv, ndb, ndx, irtc, nstp, mstep, lepssw, lop1, lu0sw
integer*4 lnd00(ND), lnt00(NS00), lpv(ND), lpm(ND), LCOLOR_
real*8 x0(ND),b(ND),ad00(ND),alu00(NS00),ABRS_,eps,rto,omg,GAMMA_
LOGICAL, INTENT(IN), optional :: PARALLEL
END SUBROUTINE solvmatrx
END INTERFACE
END MODULE
USE INTERFACES
除了显而易见的选择,比如把它放在模块mymod中,这样你就可以简单地使用mymod?许多观察家正确地希望你引用标准的Fortran语法,比如integer(int32)、real(real64)或Fortran 90替代品来代替旧的IBM360非标准内容。除了显而易见的选择,比如把它放在一个模块mymod中,这样你就可以简单地使用mymod了?许多观察家正确地希望你引用标准的Fortran语法,比如integer(int32)、real(real64)或Fortran 90,来代替旧的IBM360非标准的东西。