Taille par défaut des enregistrements pour les fichiers séquentiels, en Fortran, sur Vargas


Vous êtes ici : Support technique -> Calcul scalaire -> Système de compilation Fortran : Taille par défaut des enregistrements pour les fichiers séquentiels.


Il existe une incompatibilité (très mineure) du compilateur Fortran avec la norme Fortran 95. Elle concerne l'instruction inquire, utilisée avec le mot-clef recl.

Considérons le cas d'un fichier ouvert en accès séquentiel, formaté, sans mention de recl. Par exemple :

open(unit=1, file="anything.txt", status="old", action="read", &
   position="rewind")
Après une telle ouverture, l'instruction inquire(unit, recl=recl) donne la longueur maximale des enregistrements, en caractères. Cette longueur n'est pas obtenue par analyse du fichier. Elle est choisie au niveau du compilateur ou de l'environnement d'exécution Fortran. La norme Fortran 95 indique que la variable qui reçoit la valeur de recl doit être du sous-type entier par défaut. Par exemple :
integer recl
...
inquire(unit=1, recl=recl)
Or, dans sa configuration sur Vargas ("grand" système de fichiers et option par défaut -q64 à la compilation), le système Fortran renvoie une valeur de recl supérieure à la valeur maximale du sous-type entier par défaut. Ainsi, dans notre exemple, nous obtiendrions à l'exécution l'erreur :
1525-183 The maximum record length of 9223372036854775806 for the unit
1 is out of the range of the scalar variable specified with the RECL=
specifier in the INQUIRE statement.  A larger type kind should be
used.  The program will stop.
Pour résoudre ce problème, vous avez deux solutions :
© CNRS - IDRIS, 13/01/2012