Ik voor mijn stage een klein tooltje aan het schrijven en tot nu toe ging het goed. Ik ben echter vastgeraakt nu ik een nieuwe functie heb toegevoegd. Bij het compilen (met g77, default settings) krijg ik de vermelding de declaratie van of verwijzing naar de functie RELATV ongeldig is.
Het gewraakte stukje code:
En hier de functie:
Overigens is CHOOSE in het eerste stukje code een andere functie die wel werkt. Wie ziet wat ik hier fout doe?
Het gewraakte stukje code:
code:
1
2
3
4
5
6
7
8
9
10
| *Calculate realtive intensities of NOEs
400 IF (CHOOSE('Should I calculate relative intensities').NE.'Y')
$GO TO 500
DO 410, J=1,NDATA
RELTIV(J) = RELATV(ATOM1, RES1, ATOM2, RES2, INTENS, NDATA, J)
IF (RELTIV(J).EQ. 9.999999) THEN
ORPHAN=ORPHAN+1 !No diagonal NOE
END IF
410 CONTINUE
WRITE (*,*) ORPHAN, ' NOEs had no diagonal peak' |
En hier de functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| REAL FUNCTION RELATV(ATOM1, RES1, ATOM2, RES2, INTENS, NDATA, NOE)
IMPLICIT NONE
INTEGER :: NDATA, RES1(NDATA), RES2(NDATA), I, NOE
CHARACTER*5 :: ATOM1(NDATA), ATOM2(NDATA)
REAL :: INTENS(NDATA), RELA=0.0
IF (ATOM1(NOE).EQ. ATOM2(NOE)) THEN
IF (RES1(NOE).EQ.RES2(NOE)) THEN
RELA = 1.000000
END IF
ELSE
DO 10, I=1,NDATA
IF ((ATOM1(I).EQ.ATOM1(NOE)).AND.(RES1(I).EQ.RES1(NOE)) .AND.
$ (ATOM2(I).EQ.ATOM1(NOE)).AND.(RES2(I).EQ.RES1(NOE))) THEN
RELA = INTENS(NOE)/INTENS(I)
RETURN !Escape from loop
ELSE
RELA = 9.999999 !All else failed value
END IF
10 CONTINUE
END IF
RELATV=RELA
END |
Overigens is CHOOSE in het eerste stukje code een andere functie die wel werkt. Wie ziet wat ik hier fout doe?