fortran 编译错误 求帮助

编译打包和其他
回复
hgf054
帖子: 25
注册时间: 2011-09-04 13:38

fortran 编译错误 求帮助

#1

帖子 hgf054 » 2011-10-06 11:16

fortran文件如下:

PROGRAM GSTA

C Grain Size Trend Analysis, on the basis of the combined trend

C of the following types of trends:

C Type 1: Better sorted, coarser and more positively skewed

C Type 2: Better sorted, finer and more negatively skewed

C Table of Variables

C N: Total number of sampling stations

C (X,Y): Position of the sampling stations

C SM: Sample number

C MD: Mean grain size.

C SRT: Sorting coefficient.

C SK: Skewness.

C DC: Characteristic distance

C A: Scaling factor for X data

C VL: Length of the residual vector

C BITA: Direction of the residual vector, in relation to the "north"

C of the sampling grid

CHARACTER *30 FIN,FOUT

REAL X(10000), Y(10000), MD(10000), SRT(10000), SK(10000)

REAL SNP(10000), SEP(10000), VL(10000), BITA(10000)

REAL SNPP(10000), SEPP(10000)

REAL DC, DXY, NP, EP, ALPHA, A

INTEGER SM(10000), K(10000), L(10000), M(10000), N

C INPUT OF RAW DATA

WRITE(*,*) ' NAME OF INPUT FILE : '

READ(*,1) FIN

WRITE(*,*) ' NAME OF OUTPUT FILE : '

READ(*,1) FOUT

1 FORMAT(A)

OPEN(8,FILE=FIN,STATUS='OLD')

READ(8,*) N, A, DC

DO 2 I=1,N

READ(8,*) SM(I),X(I),Y(I),MD(I),SRT(I),SK(I)

2 CONTINUE

PRINT*, 'OK'

CLOSE(8)

DO 3 I=1,N

SNP(I)=0.0

SEP(I)=0.0

X(I)=A*X(I)

3 CONTINUE

C DEFINITION OF TREND VECTORS

DO 4 I=1,N-1

DO 5 J=I+1,N

DXY=SQRT((X(I)-X(J))*(X(I)-X(J))+(Y(I)-Y(J))*(Y(I)-Y(J)))

IF(DXY.GT.DC) GO TO 5

IF(MD(I).GE.MD(J).AND.SRT(I).GE.SRT(J).AND.SK(I).LE.SK(J)) THEN

CALL VECTOR(X(I),X(J),Y(I),Y(J),A,NP,EP)

SNP(I)=SNP(I)+NP

SEP(I)=SEP(I)+EP

END IF

IF(MD(I).LE.MD(J).AND.SRT(I).LE.SRT(J).AND.SK(I).GE.SK(J)) THEN

CALL VECTOR(X(J),X(I),Y(J),Y(I),A,NP,EP)

SNP(J)=SNP(J)+NP

SEP(J)=SEP(J)+EP

END IF

IF(MD(I).LE.MD(J).AND.SRT(I).GE.SRT(J).AND.SK(I).GE.SK(J)) THEN

CALL VECTOR(X(I),X(J),Y(I),Y(J),A,NP,EP)

SNP(I)=SNP(I)+NP

SEP(I)=SEP(I)+EP

END IF

IF(MD(I).GE.MD(J).AND.SRT(I).LE.SRT(J).AND.SK(I).LE.SK(J)) THEN

CALL VECTOR(X(J),X(I),Y(J),Y(I),A,NP,EP)

SNP(J)=SNP(J)+NP

SEP(J)=SEP(J)+EP

END IF

5 CONTINUE

4 CONTINUE

C DEFINITION THE RESIDUAL PATTERN

DO 6 I=1,N

L(I)=0

SNPP(I)=0.0

SEPP(I)=0.0

DO 7 J=1,N

DXY=SQRT((X(I)-X(J))*(X(I)-X(J))+(Y(I)-Y(J))*(Y(I)-Y(J)))

IF(DXY.EQ.0.0) GO TO 7

IF(DXY.GT.DC) GO TO 7

SNPP(I)=SNPP(I)+SNP(J)

SEPP(I)=SEPP(I)+SEP(J)

L(I)=L(I)+1

7 CONTINUE

6 CONTINUE

DO 8 I=1,N

SNPP(I)=SNPP(I)/FLOAT(L(I)+1)

SEPP(I)=SEPP(I)/FLOAT(L(I)+1)

VL(I)=SQRT(SNPP(I)*SNPP(I)+SEPP(I)*SEPP(I))

IF(SEPP(I).EQ.0.0.AND.SNPP(I).EQ.0.0) THEN

BITA(I)=0.0

GO TO 8

END IF

BITA(I)=ATAN2(SEPP(I),SNPP(I))*180.0/3.1416

IF(BITA(I).LT.0.0) THEN

BITA(I)=BITA(I)+360.00

END IF

8 CONTINUE

DO 9 I=1,N

X(I)=X(I)/A

9 CONTINUE

C OUTPUT OF RESULTS

OPEN(10,FILE=FOUT,STATUS='UNKNOWN')

WRITE(10,10)

10 FORMAT(12H INPUT DATA)

WRITE(10,11) (SM(I),X(I),Y(I),MD(I),SRT(I),SK(I),I=1,N)

11 FORMAT(I5,2F10.1,3F10.2)

WRITE(10,12)

12 FORMAT(12H OUTPUT DATA)

WRITE(10,13)

13 FORMAT('TRENDS OF TYPES 1 AND 2')

WRITE(10,14) DC

14 FORMAT(1X,'DC =',F8.1)

WRITE(10,15)

15 FORMAT('NUMBER POSITION LENGTH DIRECTION (N)')

WRITE(10,16) (SM(I),X(I),Y(I),VL(I),BITA(I),I=1,N)

16 FORMAT(I5,2F12.2,2F10.2)

CLOSE(10)

STOP

END

C TO DEFINE A VECTOR FROM STATION 2 TO STATION 1

SUBROUTINE VECTOR(XX2, XX1, YY2, YY1, A, NP, EP)

REAL ALPHA, XX2, XX1, YY2, YY1, A, NP, EP

IF(YY1.EQ.YY2) THEN

ALPHA=0.0

ELSE

ALPHA=ATAN2((XX1-XX2)/A, (YY1-YY2))

END IF

EP=SIN(ALPHA)

NP=COS(ALPHA)

RETURN

END




文件名如下:gsta.for
在终端输入命令及结果如下:
whgl@whgl-EP43T-UD3L:~/文档/center_ka/stra_line/2700$ gfortran gsta.for -o gsta
gsta.for:1.6:

PROGRAM GSTA
1
Error: Bad continuation line at (1)
gsta.for:1.6:

PROGRAM GSTA
1
Error: Unclassifiable statement at (1)
gsta.for:130.1:

\x1A
1
Error: Non-numeric character in statement label at (1)

这是什么问题呢?
回复