julia31415 Posted February 28, 2008 Report Share Posted February 28, 2008 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.