Bonjour,

Alors voici mon problème. Je définis une interface pour une fonction à l'intérieur d'un module ainsi:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
 
module utils
 
  use blablabla1
  use blablabla2
 
  implicit none
 
  contains
 
  [plusieurs fonctions et sous-routines]
 
interface
 
   function convert2matrX(tab)
     real,dimension(:,:,:,:,16):: tab
     real,dimension(:,:,:,:,4,4):: conv_scat
 
     [... instruction 1 ...]
 
   end function convert2matrX
 
   function convert2matrX(tab)
     real,dimension(:,:,7):: tab
     real,dimension(:,:,4,4):: conv_ext
 
     [...instructions 2...]
 
   end function convert2matrX
 
end interface
Cette fonction transforme une liste de 7 ou ben 16 nombre en une matrice 4x4. Bien sur les instructions ne sont pas les même selon la taille de la liste, j'ai donc opté pour cette solution d'une interface avec 2 fonctions à l'intérieur.

Cependant, il semblerait que g95 n'aime pas beaucoup car j'ai le droit à:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
In file utils.f90:573
 
interface
         1
Error: Unexpected INTERFACE statement in CONTAINS section at (1)
In file utils.f90:579
 
     real,dimension(:,:,:,:,16):: tab
                              1
Error: Bad specification for deferred shape array at (1)
In file utils.f90:580
 
     real,dimension(:,:,:,:,4,4):: conv_scat
                               1
Pourquoi ce problème? L,interface est-elle mal déclarée? Me conseillez-vous une autre solution (par exemple un case dans la fonction) qui serait plus rapide à l'exécution (car cette fonction risque d'être utilisée de nombreuses fois) ?

merci beaucoup pour votre précieuse aide