Bonjour à tous,

Voila mon problème,
J'ai pour global un tableau "tres" grand, permetant de gerer toute les données de mon application:
Dans mon main, j'apelle une fonction foo:
Dans ma fonction FOO, ce paramètre corespond a un tableau a 5 dimensions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
SUBROUTINE FOO(FIELDS)
   /*input/output*/
    REAL FIELDS(MXLON,NLAT,NVER,NF,NLAYERS)
La shape de FIELDS corespond a une signification logique au niveau des données.
...La tout va bien dans le meilleur des mondes

Maintenant je veut appeller une autre fonction a partir de mon main,
le meme tableau en fait, mais pas toutes les données,
du point de vu logique je veut passer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
FIELDS(1:NLON,NLAT,NVER,NF,NLAYERS)
avec NLON<MXLON

Ce qui corespont pour mon tableaux WS, (de rang 1) a une sous section non contigus.
Je peut, par l'intermediaire d'un vecteur d'indice, faire une indexation directe
(i.e. je fait un vecteur avec tous les indices que je veux voir dans ma sous section)
Le probleme, c'est qu'un tel sous-tableau ne peut pas figurer à gauche d’un signe d’affectation, donc le passage en parametre ne marche pas non plus.


De plus j'ai lu dans un tutorial:
Sections non régulières en argument de procédures
Si on passe une section non régulière en argument d’appel d’une
procédure, il faut savoir que :
• c’est une copie contiguë en mémoire qui est passée par le
compilateur,
• l’argument muet correspondant de la procédure ne doit pas avoir la
vocation INTENT(inout) ou INTENT(out) ; autrement dit, en
retour de la procédure, il n’y a pas mise-à-jour du tableau “père” de la
section irrégulière.
Toutes les remarques seront les bienvenues