JSL: Aiuto con il comportamento anomalo del comando Nuovo scriptCiao Scripters,
(W11, 64 bit, JMP Pro 18.1.1)
Sto riscontrando un comportamento anomalo con uno script che sto eseguendo. Lo script esegue diverse operazioni, ma una di queste è la creazione di nuovi script da aggiungere alla tabella dati. Devo passare alcune variabili al nuovo script e farlo eseguire nella tabella dati al di fuori del JSL originale. Sto aggiungendo due nuovi script alla tabella dati. Uno serve per visualizzare i dati con Graph Builder (funziona perfettamente), l'altro per visualizzare i dati con la piattaforma Distribution.
Ecco il JSL che aggiunge lo script Graph Builder (funziona benissimo, fa esattamente quello che voglio):
Eval(
Eval Expr(
DOETable << New Script(
"Visualize Graphic Results",
Current Data Table()<
<GRAPH builder=""></GRAPH>
<P>Allo stesso modo, ecco lo script per la visualizzazione della Distribuzione, che non funziona come previsto:</P> <CODE class=" language-jsl">Eval(
Eval Expr(
DOETable << New Script(
"Visualize Distribution Results",
Current Data Table()<
<DISTRIBUTION></DISTRIBUTION> <P>Quando eseguo lo script padre, vengono aggiunti i due nuovi script della tabella (anche in questo caso lo script GB funziona correttamente), ma quando provo a eseguire lo script di distribuzione dalla tabella dati (triangolo verde), invece di mostrare i risultati, si apre la finestra della piattaforma di distribuzione.</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;"><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></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;"><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></SPAN></P> <P>NOTA: i nomi sono stati rimossi per proteggere gli innocenti ;-).</P> <BR /> <P>Innanzitutto, non dovrebbe fare questo, dovrebbe in realtà visualizzare tutte le distribuzioni così come sono disposte nel nuovo script (quando eseguo lo script passo dopo passo nel JSL padre, funziona).</P> <BR /> <P>Ecco la parte davvero strana. Se apro il nuovo script nella tabella dati (Modifica script) e clicco su Esegui, funziona esattamente come previsto.</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;"><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><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;"><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></SPAN></P> <BR /> <P>Non riesco a capire cosa sto sbagliando: il JSL funziona, ma per qualche motivo, quando provo a eseguirlo dal triangolo verde, non funziona, il che non ha senso per me. Mi è sfuggito qualcosa o ho una chiamata/comando sbagliato da qualche parte? Altri hanno riscontrato questo strano comportamento e, in tal caso, come avete risolto il problema?</P> <BR /> <P>Ogni aiuto è molto apprezzato, grazie!</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>Automazione e scripting</LINGO-LABEL>
<LINGO-LABEL>Esplorazione e visualizzazione dei dati</LINGO-LABEL>
</LINGO-LABS>
Re: JSL: Aiuto con il comportamento strano del comando Nuovo scriptLa mia prima ipotesi è l'utilizzo di Column().
La piattaforma di distribuzione ha un argomento chiamato "Colonna" in modo orribile. Nota come vengono inserite le colonne qui.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
obj = dt << Distribution(Column(:Age, :Weight));
rispetto al generatore di grafici
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))
);
Scopri di più...
Column() non viene utilizzato con Graph Builder, utilizza X(), Y() e così via
Re: JSL: Aiuto con il comportamento strano del comando Nuovo scriptPenso che tu abbia ragione. L'evalexpr proverà a trasformare la sintassi delle colonne della piattaforma in una colonna. Potrebbe funzionare in questo modo:
Expr( Column( DOETable, N Items( ListNames ) ) )
//becomes (untested...)
Column( Expr(DOETable), expr( N Items (ListNames ) ) )
La sintassi di ogni piattaforma utilizza spesso questa struttura simile a quella di una funzione per il raggruppamento, e quando il nome della piattaforma è lo stesso di quello di una funzione, la cosa può generare confusione. Bisognerebbe comunque riorganizzare i dati perché l'espressione deve essere qualcosa che restituisca una costante che possa essere inserita nell'espressione.
Re: JSL: Aiuto con il comportamento strano del comando Nuovo scriptCiao @Craige_Hales e @jthi ,
In realtà, il problema era un po' un mix di entrambi. Innanzitutto, la chiamata a Column() non avrebbe dovuto essere inclusa nella chiamata a Expr(). In secondo luogo, era necessario utilizzare il riferimento corretto alla colonna per la piattaforma di distribuzione, ma poiché sto salvando questo come script di una tabella dati all'interno del JSL padre, non posso semplicemente riassegnare la colonna a :"name"n, devo compilarla all'interno di Eval Insert() e anche Parse() all'interno di una chiamata a Expr().
Ciò che alla fine ha funzionato per la piattaforma di distribuzione è stato quanto segue:
Eval(
Eval Expr(
Distribution(
Continuous Distribution( Column( Expr( Parse( Eval Insert( ":\!"^ListNames[Nitems(YCols)+1]^\!"" || "n" ) ) ) ) ),
Process Capability( 0 )
)
)
);
Questo ha creato il riferimento corretto al nome della colonna per la piattaforma di distribuzione e ha permesso di creare uno script eseguibile che poteva essere salvato nella tabella dati. Un po' macchinoso a mio parere, ma funziona, ed è questo che conta.
Grazie per i tuoi suggerimenti!
DS