*** JMFFT - émulation des FFTs de la SciLib de CRAY - (c) CNRS/IDRIS ***

NOM

     JMGETMESSAGE - Permet d'obtenir le message d'erreur correspondant au code
     d'erreur fourni.

SYNTAXE

     CALL JMGETMESSAGE(irc,message)

IMPLEMENTATION

     Il s'agit d'un sous-programme de service de JMFFT.

DESCRIPTION

     Au retour de l'appel, la variable message contient le message
     d'erreur correspondant au code d'erreur irc.

ARGUMENTS

     irc     Variable ou constante de type INTEGER
             Non modifié en sortie

     message  Variable de type CHARACTER (longueur recommandée : 80)
              Valeur ignorée en entrée
              En sortie contient le message d'erreur demandé

EXEMPLES

     Le programme suivant contient une erreur : l'utilisateur a fourni
     une première dimension trop petite pour le tableau Y.

           INTEGER, PARAMETER :: LDX = 129, NX1 = 128, NX2 = 256
           INTEGER, PARAMETER :: LDY = 64,  NY1 =  64, NY2 = 256
           REAL(KIND=8), DIMENSION(LDX, NX2)        :: X
           COMPLEX(KIND=8), DIMENSION(LDY, NY2)     :: Y
           REAL(KIND=8), DIMENSION(512*NX2)         :: WORK
           REAL(KIND=8), DIMENSION(100+2*(NX1+NX2)) :: TABLE
           ! ... (Definition de X)
           CALL SCFFT2D(0, 128, 256, 1.d0, X, 129, Y, 64, TABLE, WORK, 0)
           CALL SCFFT2D(1, 128, 256, 1.d0, X, 129, Y, 64, TABLE, WORK, 0)
           ! ... (Impression de Y)

     A l'exécution, le programme s'arrête après le premier appel à SCFFT2D
     avec le message suivant :

           JMFFT Erreur dans SCFFT2D : ldy doit etre >= n/2+1 ( 64 65 )
           STOP 1

     Voici une variante du même programme où on contrôle l'exécution :
     (HANDLER est un sous-programme personnel destine a traiter ces exceptions)

           INTEGER, PARAMETER :: LDX = 129, NX1 = 128, NX2 = 256
           INTEGER, PARAMETER :: LDY = 64,  NY1 =  64, NY2 = 256
           REAL(KIND=8), DIMENSION(LDX, NX2)        :: X
           COMPLEX(KIND=8), DIMENSION(LDY, NY2)     :: Y
           REAL(KIND=8), DIMENSION(512*NX2)         :: WORK
           REAL(KIND=8), DIMENSION(100+2*(NX1+NX2)) :: TABLE
           INTEGER                                  :: IRC
           CHARACTER(LEN=80)                        :: MESSAGE
           ! ... (Definition de X)
           CALL JMSETERREUR(.false.)
           CALL SCFFT2D(0, 128, 256, 1.d0, X, 129, Y, 64, TABLE, WORK, 0)
           CALL JMGETCODE(IRC)
           IF (IRC .NE. 0) THEN
             CALL JMGETMESSAGE(IRC,MESSAGE)
             PRINT *,'Code',IRC,', ',TRIM(MESSAGE)
             CALL HANDLER()
           END IF
           CALL SCFFT2D(1, 128, 256, 1.d0, X, 129, Y, 64, TABLE, WORK, 0)
           ! ... (Impression de Y)

     A l'exécution, ce programme écrira le message d'erreur suivant :

           Code 16 , ldy doit etre >= n/2+1

     puis entrera dans le sous-programme HANDLER.

VOIR AUSSI

     JMSETERREUR, JMGETCODE
© CNRS-IDRIS 2013