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 :
recl avec le
type integer(kind=8) : ceci est admis par la norme
Fortran 2003, mais pas dans les normes Fortran 90/95,export XLFRTEOPTS="default_recl=32"