-
Equivalent ERRSET VMS
Bonjour à tous,
Contexte :
Depuis un projet codé en C++ sous une plateforme linux, je fais appel à une fonction en Fortran.
J'utilise ifort (compilateur intel) pour compiler la librairie contenant ma fonction Fortran et g++ pour compiler le code en C++ et linker le tout.
Problème :
Je souhaite au sein de ce code Fortran avoir un appel à une fonction équivalent à ERRSET (utilisé en Fortran VMS).
Le comportement recherché étant en cas d'exception arithmetic, d'avoir une trace dans un fichier mais que le traitement continu normalement.
Merci d'avance pour vos idées.
-
Salut,
Je n'ai jamais utilisé le traitement des exceptions mais il me semble que ton problème doit trouver une solution ici :http://www.codiciel.fr/compilateur/fortran2003.pdf
C'est un résumé des apports f2003, et si cela répond à tes attentes, tu as un cours plus complet ici :
http://www.idris.fr/data/cours/lang/...rtran_2003.pdf
ensuite, est-ce que ifort intègre ces fonctionnalités ?...
-
Après de multiples recherches j'ai réussi à obtenir le comportement suivant :
Je positionne mon Flag FPE pour qu'une exception FPE soit levée :
Code:
CALL FOR_SET_FPE(CODE)
J'affecte ensuite un handler à un signal de type FPE
Code:
CALL PXFSIGACTION(SIGFPE,jaction,joaction,pxferr)
Les signaux FPE sont bien trappés, mais quand j'arrive dans mon handler de signaux, je suis incapable de savoir quelle erreur FPE a été levée (Division par zéro, Overflow, etc ...).
Je pourrais utiliser plutôt la fonction IEEE_HANDLER qui me permet de créer également un handler pour les exceptions FPE et avec laquelle je peux savoir quelle erreur a été levée mais le problème de cette fonction c'est que le programme se termine à la fin de la fonction handler, sans possibilité de trapper le signal en aval ...
Si quelqu'un a une idée ?