1 | <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
---|
2 | <HTML> |
---|
3 | <HEAD> |
---|
4 | <title>JMSETERREUR</title> |
---|
5 | </HEAD> |
---|
6 | |
---|
7 | <BODY BGCOLOR="#fdf5e6"> |
---|
8 | <PRE> |
---|
9 | <B>*** JMFFT 8.0 - émulation des FFTs de la SciLib de CRAY - (c) CNRS/IDRIS ***</B> |
---|
10 | |
---|
11 | <B>NOM</B> |
---|
12 | |
---|
13 | JMSETERREUR - Permet de contrôler le comportement de JMFFT en cas d'erreur |
---|
14 | |
---|
15 | <B>SYNTAXE</B> |
---|
16 | |
---|
17 | CALL JMSETERREUR(flag) |
---|
18 | |
---|
19 | <B>IMPLEMENTATION</B> |
---|
20 | |
---|
21 | Il s'agit d'un sous-programme de service de JMFFT. |
---|
22 | |
---|
23 | <B>DESCRIPTION</B> |
---|
24 | |
---|
25 | La valeur .true. correspond au comportement par défaut : en cas |
---|
26 | d'erreur JMFFT imprime un message d'erreur et arrête le programme |
---|
27 | par une instruction STOP. |
---|
28 | |
---|
29 | Avec la valeur .false., en cas d'erreur l'exécution continue. Il |
---|
30 | appartient donc à l'utilisateur de tester le code de retour des appels |
---|
31 | à JMFFT et de prendre les actions qui s'imposent. |
---|
32 | |
---|
33 | <B>ARGUMENTS</B> |
---|
34 | |
---|
35 | flag Variable ou constante de type LOGICAL |
---|
36 | En entrée, il contient la valeur à fournir. |
---|
37 | Non modifié en sortie. |
---|
38 | |
---|
39 | <B>EXEMPLES</B> |
---|
40 | |
---|
41 | Le programme suivant contient une erreur : l'utilisateur a fourni |
---|
42 | une première dimension trop petite pour le tableau Y. |
---|
43 | |
---|
44 | INTEGER, PARAMETER :: LDX = 129, NX1 = 128, NX2 = 256 |
---|
45 | INTEGER, PARAMETER :: LDY = 64, NY1 = 64, NY2 = 256 |
---|
46 | REAL(KIND=8), DIMENSION(LDX, NX2) :: X |
---|
47 | COMPLEX(KIND=8), DIMENSION(LDY, NY2) :: Y |
---|
48 | REAL(KIND=8), DIMENSION(512*NX2) :: WORK |
---|
49 | REAL(KIND=8), DIMENSION(100+2*(NX1+NX2)) :: TABLE |
---|
50 | ! ... (Definition de X) |
---|
51 | CALL SCFFT2D(0, 128, 256, 1.d0, X, 129, Y, 64, TABLE, WORK, 0) |
---|
52 | CALL SCFFT2D(1, 128, 256, 1.d0, X, 129, Y, 64, TABLE, WORK, 0) |
---|
53 | ! ... (Impression de Y) |
---|
54 | |
---|
55 | A l'exécution, le programme s'arrête après le premier appel à SCFFT2D |
---|
56 | avec le message suivant : |
---|
57 | |
---|
58 | JMFFT Erreur dans SCFFT2D : ldy doit etre >= n/2+1 ( 64 65 ) |
---|
59 | STOP 1 |
---|
60 | |
---|
61 | Voici une variante du même programme où on contrôle l'exécution : |
---|
62 | (HANDLER est un sous-programme personnel destiné à traiter ces exceptions) |
---|
63 | |
---|
64 | INTEGER, PARAMETER :: LDX = 129, NX1 = 128, NX2 = 256 |
---|
65 | INTEGER, PARAMETER :: LDY = 64, NY1 = 64, NY2 = 256 |
---|
66 | REAL(KIND=8), DIMENSION(LDX, NX2) :: X |
---|
67 | COMPLEX(KIND=8), DIMENSION(LDY, NY2) :: Y |
---|
68 | REAL(KIND=8), DIMENSION(512*NX2) :: WORK |
---|
69 | REAL(KIND=8), DIMENSION(100+2*(NX1+NX2)) :: TABLE |
---|
70 | INTEGER :: IRC |
---|
71 | CHARACTER(LEN=80) :: MESSAGE |
---|
72 | ! ... (Definition de X) |
---|
73 | CALL JMSETERREUR(.false.) |
---|
74 | CALL SCFFT2D(0, 128, 256, 1.d0, X, 129, Y, 64, TABLE, WORK, 0) |
---|
75 | CALL JMGETCODE(IRC) |
---|
76 | IF (IRC .NE. 0) THEN |
---|
77 | CALL JMGETMESSAGE(IRC,MESSAGE) |
---|
78 | PRINT *,'Code',IRC,', ',TRIM(MESSAGE) |
---|
79 | CALL HANDLER() |
---|
80 | END IF |
---|
81 | CALL SCFFT2D(1, 128, 256, 1.d0, X, 129, Y, 64, TABLE, WORK, 0) |
---|
82 | ! ... (Impression de Y) |
---|
83 | |
---|
84 | A l'exécution, ce programme écrira le message d'erreur suivant : |
---|
85 | |
---|
86 | Code 16 , ldy doit etre >= n/2+1 |
---|
87 | |
---|
88 | puis entrera dans le sous-programme HANDLER. |
---|
89 | |
---|
90 | <B>VOIR AUSSI</B> |
---|
91 | |
---|
92 | JMGETCODE, JMGETMESSAGE |
---|
93 | </PRE> |
---|
94 | |
---|
95 | <!--#include virtual="/includes/fin.html" --> |
---|
96 | </BODY> |
---|
97 | </HTML> |
---|