J'écris un code avec Fortran 90 et maintenant je dois utiliser les fonctions spéciales dans la bibliothèque * amos Fotran 77 (http://www.netlib.org/amos/). Maintenant, j'ai trouvé une interface de module pour ces routines (https://github.com/certik/fortran-utils/blob/master/src/amos.f90).Comment utiliser Fortran 77 sous-programmes dans Fortran 90/95?
Ma question est: comment puis-je les combiner et les utiliser dans mon programme Fortran 90 et comment les compiler correctement?
J'ai lutté pour cela pendant une journée entière et je ne pouvais toujours pas comprendre.
Ce qui suit est mon code de test:
PROGRAM TEST_ZBESI
USE set_precisions
USE amos
IMPLICIT NONE
INTEGER :: n, i, nz, ierr
!double precision :: zr,zi, cyr(5), cyi(5)
REAL(kind=DBL) :: zr, zi, cyr(5), cyi(5)
n=5
zr=1.0_DBL
zi=2.0_DBL
call ZBESI(zr,zi,0.0_DBL,1,n,cyr,cyi,nz,ierr)
print *,' '
do i=1, n
write(*,10) i-1, cyr(i)
write(*,11) i-1, cyi(i)
end do
print *,' NZ=', NZ
print *,' Error code:', ierr
print *,' '
10 format(' zr(',I1,') = ',F10.6)
11 format(' zi(',I1,') = ',F10.6)
END PROGRAM TEST_ZBESI
Le résultat je suis arrivé est la suivante:
zr(0) = 0.000000
zi(0) = 0.000000
zr(1) = 0.000000
zi(1) = 0.000000
zr(2) = 0.000000
zi(2) = 0.000000
zr(3) = 0.000000
zi(3) = 0.000000
zr(4) = 0.000000
zi(4) = 0.000000
NZ= 0
Error code: 4
Il semble que je ne pouvais pas obtenir la bonne réponse, peu importe comment.
J'ai essayé de convertir manuellement le code ZBESI.f Fortran 77 en code Fortran 90. Mais le code est si long et c'était un désastre.
S'il vous plaît montrer un échantillon du code que vous luttez avec. Expliquez aussi exactement ce qui ne fonctionne pas: Erreur de compilation? Relier le problème? – wallyk
Cela devrait être très simple. Quelque chose ne va pas au-delà du FORTRAN. Plus de détails vous aideront. –
il devrait être facile de jeter quelques instructions d'écriture de débogage dans ZBESI pour voir pourquoi il lance cette erreur. – agentp