Bonjour à tous,
Mon problème est le suivant: j'ai besoin de récupérer des subroutines faites en fortran 77 afin de les intégrées dans un code en fortran 90. Et il se trouve que j'ai un petit problème lors du passage de tableau en arguments.
Supposons que j'ai un tableau du genre:
celui-ci est passé en argument de la subroutine toto dans une boucle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 real, dimmension(l,m,n):: mat
Cependant à l'interrieur de la subroutine toto, ma variable n'est pas déclarée comme un réel tout bête mais comme un tableau:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 do i=1,n toto(mat(1,1,i)) end do
J'ai fait des impressions dans des fichiers et j'ai remarqué que:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 subroutine toto (lala) real, dimension(l,m)::lala ..... end subroutine toto
- "mat" est la même en f77 et en f90
- "mat(1,1, : )" est également le même AVANT de rentrer dans toto
- "lala" est totalement différent entre f77 et f90
Je pense que c'est un problème du au fait que les tableaux ne vont pas être lus de la même manière, l'adressage ne se fait pas pareil. Mais je n'ai aucune idée de comment vérifier comment cela fonctionne en détaille et comment modifier le code en conséquence.
Je sais par exemple que en f77 je pourrais écrire:
et que cela ne créera pas de dépassement de l'indice car fortran 77 incrémente AUTOMATIQUEMENT les arguments du tableau suivant...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 do i=1, l*n*m mat(i,1,1) end do
y-a-t-il une règle comme celle-ci sur la manière dont la subroutine toto va lire ma variable d'entrée qui puisse faire que à l'intérieur de celle-ci ma variable n'est plus la même ?
Je suis vraiment bloqué, j'ai regardé des tableaux de chiffre toute la journée pour voir comment cela fonctionne mais je n'y parviens pas.
Merci beaucoup pour votre précieuse aide.
![]()
Partager