J'ai été chargé de maintenir un code fortran hérité, et j'ai du mal à le compiler avec gfortran. J'ai écrit une bonne quantité de Fortran 95, mais c'est ma première expérience avec Fortran 77. Ce bout de code est la problématique un:Quel est le problème avec cet extrait de Fortran '77?
CHARACTER*22 IFILE, OFILE
IFILE='TEST.IN'
OFILE='TEST.OUT'
OPEN(5,FILE=IFILE,STATUS='NEW')
OPEN(6,FILE=OFILE,STATUS='NEW')
common/pabcde/nfghi
Quand je compile avec gfortran file.FOR
, toutes les lignes commençant par la déclaration common
sont des erreurs (par exemple Error: Unexpected COMMON statement at (1)
pour chaque ligne suivante jusqu'à ce qu'elle atteigne la limite d'erreur de 25). J'ai compilé avec -Wall -pedantic
, mais la fixation des avertissements n'a pas résolu ce problème.
La chose folle est que si je commente sur les 4 lignes commençant par IF='TEST.IN'
, le programme compile et fonctionne comme prévu, mais je dois commenter tous. En laissant l'un d'eux sans commentaire, cela me donne les mêmes erreurs en commençant par l'instruction common
. Si je commente l'instruction common
, j'obtiens les mêmes erreurs, en commençant juste sur la ligne suivante.
Je suis sur OS X Leopard (pas Snow Leopard) en utilisant gfortran
. J'ai beaucoup utilisé ce système avec gfortran
pour écrire des programmes Fortran 95, donc en théorie le compilateur lui-même est sain. Que diable se passe-t-il avec ce code?
Modifier: Compiler avec G77 donne:
test.FOR: In program `MAIN__':
test.FOR:154:
IFILE='TEST.IN'
1
test.FOR:158: (continued):
common/pabcde/nfghi
2
Statement at (2) invalid in context established by statement at (1)
Er, quel contexte est établi à (1)?
Ahh, bien sûr. Je pensais à cela, mais j'avais besoin de déplacer les instructions exécutables, et je ne les ai pas suffisamment déplacées au départ. Lire la spécification m'a aidé à déchiffrer d'autres erreurs que je recevais aussi. – notJim