Exécution d'un script plusieurs fois avec différentes entrées.Salut
J'ai écrit un script qui obtient des données, fait quelques manipulations (comme le tri, l'ordre, le sous-ensemble, etc.) et enfin trace les données.
Besoin d'exécuter ce script plusieurs fois avec différentes entrées. Comment puis-je faire cela ?
C'est ce que j'ai essayé -
in_list = {};
in_list = Associative array(dtin:input) << get keys //this is to get all inputs into a list
for(i=1,i<NITEMS></NITEMS>
Mais le script ne s'exécute que pour la première entrée.
J'enregistre également chaque sortie avec un nom de fichier différent.
Re : Exécuter un script plusieurs fois avec différentes entrées.Ne codez pas en dur le nom de la table dans la jointure.Utilisez plutôt un nom de variable.Par exemple, n'utilisez pas Data Table("Table Namen1") << Join("Table Name2",...), utilisez plutôt dt << Join(dt2,...).Si vous faites cela, vous pouvez faire en sorte que vos variables de table de données pointent toujours vers la table de données correcte pour l'itération de boucle en cours.
Vous devez également vous assurer de fermer toutes les tables de données intermédiaires une fois que vous n'en avez plus besoin, comme vous l'avez décrit en essayant de résoudre votre problème.Gardez JMP aussi épuré que possible.
Re : Exécuter un script plusieurs fois avec différentes entrées.Merci pour la réponse. Après un débogage supplémentaire, j'ai trouvé la cause première de mon problème.
Énoncé du problème : Lors de l'exécution dans la boucle, le choix d'entrée est mis à jour mais le graphique est le même pour tous les choix d'entrée.
Cause première: J'ai des jointures dans le script.Ainsi, chaque fois que le script s'exécute, les tables sont enregistrées avec le suffixe 1,2, etc.
Mais comme la logique de jointure porte le nom de la table d'origine, les tables ne sont pas mises à jour. Chaque fois que les tables sont jointes aux tables d'origine (tables créées lors de la première exécution) et que le graphique de sortie est le même.
La solution: J'ai essayé Try(close(out_table,no save)) mais sans succès.
Toute aide à cet égard est appréciée.
Re : Exécuter un script plusieurs fois avec différentes entrées.Vous ne devriez vraiment pas avoir besoin d'une telle chose.Si vous souhaitez publier un script plus complet, je peux vous aider à déterminer où se situe votre problème.Stop() termine complètement l'exécution de tout le script.Break() termine l'exécution d'une boucle. Continue() est à peu près exactement ce que vous avez décrit ; il rompt l'itération en cours et revient au début de la boucle.
Re : Exécuter un script plusieurs fois avec différentes entrées.Merci pour la réponse.
J'ai pensé que j'avais un stop() dans une instruction if à l'intérieur de la boucle for qui causait des problèmes.
Remplacé par continue(), mais cela ne résout pas le problème.
Existe-t-il une fonction qui peut arrêter uniquement l'itération en cours et continuer avec la suivante ?
Merci
Re : Exécuter un script plusieurs fois avec différentes entrées.Il vous manque un point-virgule sur la deuxième ligne, mais je suppose que vous en avez un dans votre script actuel.Le problème réside probablement dans votre boucle (d'ailleurs, le deuxième argument de votre boucle for devrait probablement être "<=" plutôt que "<" ou vous manquerez le dernier élément de votre liste).Voici un exemple très simple d'un script de travail utilisant votre approche :
Tout d'abord, j'ai créé un tableau pour obtenir des entrées :
Ensuite je lance ce script :
dt = Current Data Table();
in_list = Associative Array(dt:input) << get keys;
for(i=1, i<=N Items(in_list), i++,
Print(in_list[i]);
);
Voici la sortie du journal :
Cela peut vous aider à écrire une fonction que vous pouvez évaluer à l'intérieur de la boucle avec des valeurs différentes pour les arguments à chaque fois.Cela vous permettra de développer et de tester la fonction en dehors de la boucle afin de faciliter le dépannage.