Bonjour à tous,
Comme mon titre. T(IM,IN) est une variable globale; par COMMON BLOCK je peux changer IM,IN, mais T(IM,IN) je n'y suis jamais arrivé.
EST-CE QUE VOUS SAVEZ COMMENT FAIRE ?
MERCI BCP!
Bonjour à tous,
Comme mon titre. T(IM,IN) est une variable globale; par COMMON BLOCK je peux changer IM,IN, mais T(IM,IN) je n'y suis jamais arrivé.
EST-CE QUE VOUS SAVEZ COMMENT FAIRE ?
MERCI BCP!
Si je te comprend bien, IM et IN sont les dimensions du tableau T et tu souhaites que ce tableau soit dimensionne par des valeurs fournies par l'utilisateur (si c'est pas ca, explique toi plus clairement, parce que je continue sur cette idee). En Fortran 77 pur, c'est impossible: les dimensions doivent etre connues a la compilation dans un common block. C'est assez logique, en fin de compte. Du coup, tout ce que tu peux faire, c'est donner a T des dimensions 'maximales' et verifier que l'utilisateur fourni toujours des dimensions inferieures a ces limites - au pire, tu n'utilises pas toute la memoire disponible, mais ce n'est pas grave.
En Fortran 77 'etendu' et en Fortran 90, tu peux allouer dynamiquement un tableau avec des dimensions connues seulement a l'execution (utiliser ALLOCATE(), avec DEALLOCATE() pour liberer la memoire allouee). Mais le fait que ton tableau se trouve dans un common block complique les choses: le tableau lui-meme ne peut faire partie du COMMON BLOCK, mais un pointeur vers le tableau peut.
Partager