Bonjour à tous,
Je développe sous Mac OS 10.5, puce Intel, une appli multi-proc en fortran 77.
Je lis un fichier non formaté généré à partir d'une machine type G5 MacPro. Il y a donc une incompatibilité big-endian / little-endian.
Une erreur survient à l'éxécution:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 OPEN(UNIT=7,FILE='DATA.DAT',FORM='UNFORMATTED') READ(7) (DATA(I), I=1,NSIZE) CLOSE(7)
Première question: est-ce que cela peut venir du problème big-endian ou est-ce que je me fourvoie complètement et qu'il s'agit d'autre chose ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 do_us: off end of record apparent state: unit 7 named DATA.DAT last format: list io lately reading sequential unformatted external IO
Car il semble qu'il y ait "dépassement" de la taille de mon fichier.
Pourtant le même code, exécuté sur les machines initialement prévues pour lui, fonctionne correctement, avec le même DATA.DAT, la même taille NSIZE définie à l'identique, et aucun changement dans le source.
Seul le Makefile est différent.
Et comme je suis un peu embrouillé dans quel compilateur inclut quelle commande, je ne suis pas très sûr de ce qu'il faut faire.
Sur les machines pour lesquelles tout fonctionne bien, mon makefile utilise les appels et flags suivants:
Sur les nouvelles machines, j'ai utilisé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MPF77 = mpxlf_r -q64 LDFLAGS = -qsave -qextchk -O2 -qtune=auto -qarch=auto -qcache=auto
et essayé plusieurs choses:
Code : Sélectionner tout - Visualiser dans une fenêtre à part MPF77 = mpif77
un flag -fendian=big mais cela n'est pas reconnu par mpif77 (possible confusion que je ferais avec g95, mais quel est le lien entre ces deux compilateurs?)
et, avant de compiler, un EXPORT G95_ENDIAN=BIG, qui ne résout pas le problème.
J'ai l'impression de ne pas avoir été très clair, j'espère que vous pourrez quand même m'aider; je donne tous les éclaircissements dont vous auriez besoinMerci !
Partager