我需要运行一个旧的FORTRAN IV代码(我应该运行得很好)。我下载了英特尔编译器的试用版,并尝试使用以下命令编译我给出的源文件:
ifort -f66 abel.for -o mycode
其中abel.for是源文件的名称。我收到了一堆警告和错误。我想问一下我给出的第一个错误:
A dummy argument name is invalid in this context [DINT]
编译器错误指示行:
EXTERNAL DINT
在下一个子程序中:
SUBROUTINE ABEL4(IN,X,Y,DINT,YCALC) AAOK0354
IMPLICIT REAL*8(A-H,O-Z) AAOK0355
EXTERNAL DINT AAOK0356
DIMENSION X(1),Y(1),YCALC(1) AAOK0357
COMMON /PI/ PI AAOK0358
COMMON /R/ R AAOK0359
COMMON /IK/ IK AAOK0360
COMMON /SPLIN/ XN(100),FN(100),GN(100),B(251),D(251),N AAOK0361
DO 50 L=1,IN AAOK0362
R=X(L) AAOK0363
IK=L AAOK0364
IF(R.EQ.0.D0) R=1.D-6 AAOK0365
YCALC(L)=0.D0 AAOK0366
IF(R.EQ.X(IN)) R=R-1.D-6 AAOK0367
RE=1.D-6 AAOK0368
LEV=1 AAOK0369
UL=1.D0 AAOK0370
WL=R+1.D-6 AAOK0371
CALL DINTEG(YC,DINT,WL,UL,1.D-12,RE,LEV,ERR,IFL) AAOK0372
YCALC(L)=-(-Y(L)/(1.D0-R*R)**.5D0+YC)/PI AAOK0373
50 CONTINUE AAOK0374
RETURN AAOK0375
END
我还必须指出主程序的第一行是:
BLOCK DATA AAOK0028
COMMON /WR/ IR,IW AAOK0029
DATA IR/5/,IW/6/ AAOK0030
END AAOK0031
C AAOK0032
C M A I N P R O G R A M AAOK0033
C AAOK0034
C AAOK0035
C COMMON AREAS: AAOK0036
C /WR/ - I/O CHANNNELS. SEE BLOCK DATA. AAOK0037
C /PI/ - PI=3.14...... AAOK0038
C /R/ - R IS THE POSITION OF THE POINT CURRENTLY INVERTED. AAOK0039
C /SPLIN/ - X,Y ARE INPUT ARGUMENTS AND DATA,N -NO. OF KNOTS, AAOK0040
C XN,FN,GN -KNOTS,SPLINE VALUE AND ITS FIRST DERIVATIVE AAOK0041
C AT KNOTS. AAOK0042
C AAOK0043
IMPLICIT REAL*8 (A-H,O-Z) AAOK0044
DIMENSION A(100),B(100),YCALC(251),YREAL(251), AAOK0045
* C(100),D(100),XD(500),YD(500),WD(500),W(8006), AAOK0046
* DN(500),THETA(500),RD(500) AAOK0047
EXTERNAL DINT,GINT AAOK0048
COMMON /WR/ IR,IW AAOK0049
COMMON /PI/ PI AAOK0050
COMMON /R/ R AAOK0051
COMMON /SPLIN/ XN(100),FN(100),GN(100),X(251),Y(251),N AAOK0052
DATA WD/500*1.D0/ AAOK0053
PI=4.D0*DATAN(1.D0) AAOK0054
并且还包含以下声明:
EXTERNAL DINT
C AAOK0377
C INTEGRAND FOR INVERSION FORMULA 4 AAOK0378
C AAOK0379
DOUBLE PRECISION FUNCTION DINT(T) AAOK0380
IMPLICIT REAL*8 (A-H,O-Z) AAOK0381
COMMON /IK/ IK AAOK0382
COMMON /SPLIN/ XN(100),FN(100),GN(100),X(251),Y(251),N AAOK0383
U=SPLVAL(-1,N,XN,FN,GN,T) AAOK0384
V=X(IK) AAOK0385
S=SPLVAL(-1,N,XN,FN,GN,V) AAOK0386
DINT=(U-S)*T/(T*T-V*V)**1.5D0 AAOK0387
RETURN AAOK0388
END AAOK0389
如果有人可以在这个迷宫中提供帮助,我会很感激,并告诉我如何解决这个错误,因为我不太了解FORTRAN,更不用说FORTRAN IV。