JSL : Aide concernant un comportement étrange de la commande Nouveau scriptBonjour Scripteurs,
(W11, 64 bits, JMP Pro 18.1.1)
J'observe un comportement étrange avec un script que j'exécute. Ce script effectue plusieurs actions, notamment la création de nouveaux scripts à ajouter à la table de données. Je dois transmettre des variables au nouveau script et l'exécuter dans la table de données, en dehors du JSL d'origine. J'ajoute deux nouveaux scripts à la table de données : l'un pour visualiser les données avec Graph Builder (cela fonctionne parfaitement), l'autre pour visualiser les données avec la plateforme de distribution.
Voici le JSL qui ajoute le script Graph Builder (il fonctionne très bien, fait exactement ce que je veux) :
Eval(
Eval Expr(
DOETable << New Script(
"Visualize Graphic Results",
Current Data Table()<
<GRAPH builder=""></GRAPH>
<P>De même, voici le script pour la visualisation de la distribution, qui ne fonctionne pas comme prévu :</P> <CODE class=" language-jsl">Eval(
Eval Expr(
DOETable << New Script(
"Visualize Distribution Results",
Current Data Table()<
<DISTRIBUTION></DISTRIBUTION> <P>Lorsque j'exécute le script parent, les deux nouveaux scripts de table sont ajoutés (encore une fois, le script GB fonctionne très bien), mais lorsque j'essaie d'exécuter le script de distribution à partir de la table de données (triangle vert), au lieu d'afficher les résultats, il ouvre la fenêtre de la plate-forme de distribution.</P> <P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SDF1_0-1749735408022.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_0-1749735408022.png" style="width: 200px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_0-1749735408022.png" style="width: 200px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_0-1749735408022.png" style="width: 200px;"><span class="lia-inline-image-display-wrapper" image-alt="SDF1_0-1749735408022.png" style="width: 200px;"><img src="https://us.v-cdn.net/6038925/uploads/images/76843i57FDB333BC7A2A58/SDF1_0-1749735408022.png" role="button" title="SDF1_0-1749735408022.png" alt="SDF1_0-1749735408022.png" /></span></SPAN></SPAN></SPAN></SPAN></P> <P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SDF1_2-1749735475257.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_2-1749735475257.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_2-1749735475257.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_2-1749735475257.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="SDF1_2-1749735475257.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/76845i1E9571AFD2ACBFEF/SDF1_2-1749735475257.png" role="button" title="SDF1_2-1749735475257.png" alt="SDF1_2-1749735475257.png" /></span></SPAN></SPAN></SPAN></SPAN></P> <P>REMARQUE : les noms ont été supprimés pour protéger les innocents ;-).</P> <BR /> <P>Tout d'abord, cela ne devrait pas se produire, cela devrait en fait afficher toutes les distributions telles que définies dans le nouveau script (lorsque j'exécute le script étape par étape dans le JSL parent, cela fonctionne).</P> <BR /> <P>Voici la partie la plus étrange : si j'ouvre le nouveau script dans la table de données (Modifier le script) et que je clique sur « Exécuter », il fonctionne exactement comme prévu.</P> <P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SDF1_3-1749735688131.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_3-1749735688131.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_3-1749735688131.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_3-1749735688131.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="SDF1_3-1749735688131.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/76846iA545DE7F81730152/SDF1_3-1749735688131.png" role="button" title="SDF1_3-1749735688131.png" alt="SDF1_3-1749735688131.png" /></span></SPAN></SPAN></SPAN></SPAN><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SDF1_4-1749736010450.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_4-1749736010450.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_4-1749736010450.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="SDF1_4-1749736010450.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="SDF1_4-1749736010450.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/76847i5746AC9063CF5B38/SDF1_4-1749736010450.png" role="button" title="SDF1_4-1749736010450.png" alt="SDF1_4-1749736010450.png" /></span></SPAN></SPAN></SPAN></SPAN></P> <BR /> <P>Je n'arrive pas à comprendre ce que je fais mal : le JSL fonctionne, mais pour une raison ou une autre, lorsque j'essaie de l'exécuter depuis le triangle vert, cela ne fonctionne pas, ce qui me paraît incompréhensible. Ai-je raté quelque chose ou ai-je un appel/une commande erroné(e) quelque part ? D'autres personnes ont-elles rencontré ce comportement étrange ? Si oui, comment l'avez-vous contourné ?</P> <BR /> <P>Toute aide est grandement appréciée, merci !</P> <BR /> <P>DS</P> <BR /> <BR /> <BR />
<CODE class=" language-jsl">
<LINGO-LABS id="lingo-labs-879578" slang="en-US" mode="CREATE">
<LINGO-LABEL>Automatisation et scripts</LINGO-LABEL>
<LINGO-LABEL>Exploration et visualisation des données</LINGO-LABEL>
</LINGO-LABS>
Re : JSL : Aide concernant un comportement étrange de la commande Nouveau scriptMa première supposition est l'utilisation de Column().
La plateforme de distribution a un argument nommé « Colonne » de manière catastrophique. Remarquez comment les colonnes sont saisies ici.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
obj = dt << Distribution(Column(:Age, :Weight));
comparé au générateur de graphiques
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = Graph Builder(
Variables(X(:height), Y(:weight)),
Elements(Points(X, Y), Smoother(X, Y))
);
Voir plus...
Column() n'est pas utilisé avec Graph Builder, il utilise X(), Y(), etc.
Re : JSL : Aide concernant un comportement étrange de la commande Nouveau scriptJe pense que vous avez probablement raison. evalexpr va essayer de convertir la syntaxe de colonne de la plateforme en colonne. Voici comment cela pourrait fonctionner :
Expr( Column( DOETable, N Items( ListNames ) ) )
//becomes (untested...)
Column( Expr(DOETable), expr( N Items (ListNames ) ) )
La syntaxe de chaque plateforme utilise souvent cette structure de type fonction pour le regroupement, et lorsque le nom utilisé par la plateforme est identique à celui d'une fonction, cela peut prêter à confusion. Il faudrait tout de même réorganiser les expressions, car l'expression doit être évaluée comme une constante pouvant être insérée dans l'expression.
Re : JSL : Aide concernant un comportement étrange de la commande Nouveau scriptSalut @Craige_Hales et @jthi ,
En fait, le problème était un mélange des deux. D'une part, l'appel à Column() n'aurait pas dû figurer dans l'appel à Expr(). D'autre part, la référence correcte à la colonne pour la plateforme de distribution devait être utilisée, mais comme j'enregistre ce script comme une table de données dans le JSL parent, je ne peux pas simplement référencer la colonne comme :"name"n. Je dois la construire dans une fonction Eval Insert(), puis l'analyser dans un appel à Expr().
Ce qui a finalement fonctionné pour la plateforme de distribution était le suivant :
Eval(
Eval Expr(
Distribution(
Continuous Distribution( Column( Expr( Parse( Eval Insert( ":\!"^ListNames[Nitems(YCols)+1]^\!"" || "n" ) ) ) ) ),
Process Capability( 0 )
)
)
);
Cela a créé la référence de nom de colonne appropriée pour la plateforme de distribution et a permis d'enregistrer un script exécutable dans la table de données. Un peu fastidieux à mon avis, mais cela fonctionne, et c'est l'essentiel.
Merci pour vos suggestions !
DS