RDforum.free.fr/Cast3M   Index du Forum
Site Web Cast3M
RDforum.free.fr/Cast3M
Forum d'entraide des utilisateurs de Cast3M
Répondre au sujet
procédure perso1
martine


Inscrit le: 30 Juin 2009
Messages: 2
Répondre en citant
Bonjour,

J'ai un souci avec la procédure PERSO1 dans pasapas. Les variables utilisées dans la procédure ne sont pas mises à jour dans le calcul pasapas. Par exemple,

i = 0 ;
tab1.'PROCEDURE_PERSO1' = vrai ;
debproc perso1 ;
i = i+1 ;
mess 'i = ' i ;
finproc ;
pasapas tab1 ;

i vaut 1 à chaque pas de calcul (il repart toujours de sa valeur initiale de 0 au début de la procédure).

De plus, quelle est l'utilité de mettre, par exemple, "tab1*table" après "debproc perso1"?

Merci par avance,
Voir le profil de l'utilisateurEnvoyer un message privé
lguenhael
Administrateur

Inscrit le: 25 Nov 2006
Messages: 146
Localisation: Laboratoire Roberval - UTC
Répondre en citant
Bonjour,

Pour que ça fonctionne, il vous faut remplacer « i » par « tab1.i » et mettre en entrée "tab1*table" après "debproc perso1" car, bien que ça puisse fonctionner sans, il est préférable de donner un nom à la table d’entrée envoyée par la procédure PASAPAS lors de l’appel à la procédure PERSO1.

Cela devient presque incontournable lorsque par exemple, vous avez plusieurs procédures PASAPAS consécutives qui utilisent des noms de tables différents et pour autant font appel à la même procédure PERSO1.

Exemple :
Code:
...
debproc perso1 tab1*table ;
tab1.i = dime tab1.temps ;
mess 'i = ' tab1.i ;
...
finproc tab1 ;
...
tab2.i=0
pasapas tab2 ;
...
tab3.i=0
pasapas tab3 ;


Cordialement.
Voir le profil de l'utilisateurEnvoyer un message privéEnvoyer un e-mail
martine


Inscrit le: 30 Juin 2009
Messages: 2
Répondre en citant
Merci,
En fait, en utilisant i = dime tab1.temps, on voit bien que i est incrémenté à chaque pas dans la procédure. Par contre, lorsque la procédure est finie et qu'on retourne dans la suite du calcul pasapas, la valeur de i incrémentée est "oubliée". Si bien que lorsque tout le calcul pasapas est terminé, i vaut encore 0. Ma question est plutôt de savoir comment faire pour que les variables que je mets à jour dans la procédure soient bien prises en compte dans la suite du calcul pasapas.

Quelqu'un m'a dit que ça avait à voir avec Castem 2008. Il faudrait utilisé wtab = tab1.'WTABLE' mais ça ne marche toujours pas... Et j'ai bien utilisé tab1*table après debproc...

Merci quand même,
Voir le profil de l'utilisateurEnvoyer un message privé
lguenhael
Administrateur

Inscrit le: 25 Nov 2006
Messages: 146
Localisation: Laboratoire Roberval - UTC
Répondre en citant
Bonjour,

Certes « i » est incrémenté mais cependant, « i » n'est pas sensé l’être car il n’est pas sensé être connu dans votre procédure ne faisant pas parti des entrées.

Il faut bien regarder le fonctionnement des procédures (voir l'aide sur l'opérateur DEBPROC) et se dire que pour qu’une variable externe à la procédure (par exemple « i ») puisse être utilisée dans cette procédure, il faudrait qu’elle soit indiquée en entrée. Mais Cast3m ne demande pas tant de rigueur et connait « i » malgré que cette variable ne soit pas indiquée en entrée.

En revanche, pour que « i » soit modifié en sortie et bien il faut qu’il soit indiqué en sortie justement. Et là Castem vous oblige à le faire puisque comme vous pouvez le constater, « i » reste à 0 sinon.

Pour donner « i » en entrée et le récupérer en sortie il faudrait donc modifier les entrées/sorties de PERSO1 et adapter en conséquence l’appel à PERSO1 dans PASAPAS.

Cependant il y a plus simple car PASAPAS fait appel à PERSO1 avec en entrée et sortie une table. Il suffit alors de placer i dans cette table et aucune modification de PASAPAS n’est nécessaire.

Ce n’est pas forcément très simple à expliqué. J’espère que cela vous aura aidé.

Pour wtab, je vous déconseille de l'utiliser.

Cordialement.
Voir le profil de l'utilisateurEnvoyer un message privéEnvoyer un e-mail
procédure perso1
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum
Vous pouvez joindre des fichiers
Vous pouvez télécharger des fichiers
Toutes les heures sont au format GMT + 2 Heures  
Page 1 sur 1  

  
  
 Répondre au sujet