[Fortran 77/Mac] Lecture unformatted, problème endian ou autre ?
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.
Code:
1 2 3 4
|
OPEN(UNIT=7,FILE='DATA.DAT',FORM='UNFORMATTED')
READ(7) (DATA(I), I=1,NSIZE)
CLOSE(7) |
Une erreur survient à l'éxécution:
Code:
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 |
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 ?
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:
Code:
1 2
| MPF77 = mpxlf_r -q64
LDFLAGS = -qsave -qextchk -O2 -qtune=auto -qarch=auto -qcache=auto |
Sur les nouvelles machines, j'ai utilisé
et essayé plusieurs choses:
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 besoin :lol: Merci !