Jump to content

Fortran-jak to skompilowac?


julia31415

Recommended Posts

mam program (przepisany z pewnej bardzo starej ksiazki wiec powinien dzialac) ktory jest w fortranie (niestety nie wiaodmo jaka wersja) i ktory nie wiem jak skompilowac. Probuje go skompilowac kompilatore gfortran pod gcc/linux. Kompilator wyrzuca nastepujace bledy:

 

KOD

In file gaus.f:18

 

20 DO 60 J=1, NTREMS

1

Error: Unclassifiable statement at (1)

In file gaus.f:22

 

21 AJ = A(J)

1

Error: Unclassifiable statement at (1)

In file gaus.f:25

 

24 YFIT(I) = FUNCTN(X, I, A)

1

Error: Unclassifiable statement at (1)

In file gaus.f:29

 

31 DO 50 K=1, NTREMS

1

Error: Unclassifiable statement at (1)

In file gaus.f:30

 

IF (K-J) 33, 50, 36

1

Warning: Obsolete: arithmetic IF statement at (1)

In file gaus.f:31

 

33 ALFA(K,J) = (ALFA(K,J) - CHISQ2)/2.

1

Error: Unclassifiable statement at (1)

In file gaus.f:32

 

ALFA(J,K) - ALFA(K,J)

1

Error: Unclassifiable statement at (1)

In file gaus.f:34

 

36 ALFA(J,K) = CHISQ1 - CHISQ2

1

Error: Unclassifiable statement at (1)

In file gaus.f:38

 

41 AK = A(K)

1

Error: Unclassifiable statement at (1)

In file gaus.f:40

 

DO 44 I=1, NPTS

1

In file gaus.f:24

 

 

2

Error: Variable 'i' at (1) cannot be redefined inside loop beginning at (2)

In file gaus.f:41

 

44 YFIT(I) = FUNCTN(X, I, A)

1

Error: Unclassifiable statement at (1)

In file gaus.f:45

 

50 CONTINUE

1

Error: Unclassifiable statement at (1)

In file gaus.f:49

 

 

 

Sam program prezentuje sie tak: (podaje nie w calosci)

KOD

SUBRUTINE CHIFIT(X,Y,SIGMAY,NPTS,NTERMS,MODE,A,DELTAA,

1 SIGMAA,YFIT,CHISQR)

DOUBLE PRECISION ALFA

DIMENSION X(1),Y(1),SIGMAY(1),A(1),DELTAA(1),YFIT(1)

C 1 YFIT(I)

DIMENSION ALFA(10,10),BETA(10),DA(10)

11 NFREE = NPTS-NTERMS

FREE = NFREE

IF (NFREE) 14, 14, 16

14 CHISQR = 0.

GO TO 120

16 DO 17 I = 1, NPTS

17 YFIT(I) = FUNCTN(X, I, A)

CHISQ1 = FCHISQ(Y, SIGMAY, NPTS, NFREE, MODE, YFIT)

C

C

C

20 DO 60 J=1, NTREMS

C

C CHISQ1 = FCHISQ(Y, SIGMAY, NPTS, NFREE, MODE, YFIT)

C

21 AJ = A(J)

A(J) = AJ + DELTAA(J)

DO 24 I=1, NPTS

24 YFIT(I) = FUNCTN(X, I, A)

CHISQ2 = FCHISQ(Y, SIGMAY, NPTS, NFREE, MODE, YFIT)

ALFA(J,J) = CHISQ2 - 2.*CHISQ1

BETA(J) = -CHISQ2

31 DO 50 K=1, NTREMS

IF (K-J) 33, 50, 36

33 ALFA(K,J) = (ALFA(K,J) - CHISQ2)/2.

ALFA(J,K) - ALFA(K,J)

GO TO 50

36 ALFA(J,K) = CHISQ1 - CHISQ2

C

C

C

41 AK = A(K)

A(K) = AK + DELTAA(K)

DO 44 I=1, NPTS

44 YFIT(I) = FUNCTN(X, I, A)

CHISQ3 = FCHISQ(Y, SIGMAY, NPTS, NFREE, MODE, YFIT)

ALFA(J,K) = ALFA(J,K) + CHISQ3

A(K) = AK

50 CONTINUE

C

C

C

51 A(J) = AJ - DELTAA(J)

 

 

I nasuwa mi sie kilka kolejnych pytan:

-czy ja to kompiluje zlym kompilatorem?

-moze to jest program tylko pod DOS?

-Ile ma byc pustych spacji w kodzie fortrana przed instrukcjami? 7?

-Jezeli jest numer linii, to gdzie on ma byc, tj. na ktorym miejscu, na szustej czy piatej pozycji, a moze tez na siudmej?

 

I co mamz robic by to skompilowac:)

 

Z gory dziekuje za wszelka pomoc.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...