Problème de longueur de lignes écrites dans un fichier par un programme FORTRAN

Added by Eric Venot about 10 years ago

Bonjour,

Le logiciel Recode est programmé en Fortran et écrit un programme SAS automatiquement pour constituer des groupes de parents inconnus avec la commande write(,*)*...

Lorsque le chemin du fichier à lire dans SAS est trop long, Fortran écrit les lignes du programme SAS sur 80 positions seulement et passe à la ligne, ce qui fait planter l'execution de SAS.

Ce problème est lié à la compilation avec ifort: Quand le format d'écriture n'est pas défini, ifort va chercher une valeur par défaut disponible dans la variable système FORT_FMT_RECL. Sur dga12, cette valeur est vide. ifort va donc prendre sa valeur par défaut, c'est à dire 80.

2 façons de résoudre ce problème:
- bien définir le format dans le write pour maitriser le format de sortie et le rendre indépendant du compilateur (solution préconisée par les vrais programmeurs ;-))
- donner une valeur à la variable d'environnement par un export avant lancement du programme Fortran (export FORT_FMT_RECL=200) (solution pour les fainéants qui s'appliquera par défaut à tous les write(*,*).

Possibilité peut être aussi de définir cette valeur lors de la compilation.

Eric


Replies (4)

RE: Problème de longueur de lignes écrites dans un fichier par un programme FORTRAN - Added by Olivier Filangi about 10 years ago

Je n'ai pas vu d options de compilation....

Par contre, une astuce pour ne pas reecrire systematiquement les FMT des writes.
vous pouvez utiliser la fonction SETENVQQ de ifort en debut de votre programme

USE IFPORT
LOGICAL success
success = SETENVQQ

cela rend votre programme un peu dependant d'ifort (module IFPORT) mais l utilisateur n'aura pas besoin de definir la variable d environnement dans son shell...

RE: Problème de longueur de lignes écrites dans un fichier par un programme FORTRAN - Added by Eric Venot about 10 years ago

Cela veut dire que Fortran va aller utiliser la variable FORT_FMT_RECL qui est actuellement à vide sous dga12 et dga18?

Eric

RE: Problème de longueur de lignes écrites dans un fichier par un programme FORTRAN - Added by Olivier Filangi about 10 years ago

oui,
c'est mal passé en fait...
success = SETENVQQ("FORT_FMT_RECL=200")

RE: Problème de longueur de lignes écrites dans un fichier par un programme FORTRAN - Added by Abdulai Guinguina about 10 years ago

Bonjour Eric,
Je viens de m'inscrire sur le site CTIG et je voudrais installer SAS sur mon ordinateur. Cependant, je ne peux pas le faire parce que c'est un peu compliqué pour moi. Je serais heureux si vous pouviez m'aider à intaller sas sur mon ordinateur. merci

Cordialement,
Abdulai Guinguina
Stagiaire de AGL & DIMA

(1-4/4)