Utilizzo di JSL in JMP ver. 15.2.0. Il codice JSL è incorporato nella tabella allegata con il nome dello script = 'Control Charts'.
Sto lottando con il comportamento nei loop nidificati quando tento di aggiungere limiti di specifica (LSL, Target, USL) tramite script grafici personalizzati per un numero variabile di raggruppamenti di fase e condizioni "dove".I miei cicli nidificati attualmente comportano l'applicazione di limiti di specifica per l'ultimo grafico a tutti i grafici di controllo creati, invece che a ciascun grafico/fase/dove condizione riceve i rispettivi limiti.
Molte grazie in anticipo per una spinta nella giusta direzione!
Todd
Todd, JMP / JSL è un po' strano rispetto ai linguaggi di programmazione più tipici, in particolare, devi praticamente controllare tu stesso tutto l'ambito.
Ho un esempio qui che illustra ciò con cui hai a che fare: si potrebbe pensare che lo script seguente creerà un "Rosso" poi "Blu" triangolo nello script grafico, ma vengono creati solo due triangoli blu.
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate( Y( :weight ), X( :height ), FitLine );
rbiv = biv << report;
framebox = rbiv[frame box( 1 )];
/**** Make a red triangle??? ****/
color = "Red";
framebox << Add Graphics Script(
Transparency( 0.5 );
Fill Color( color );
Polygon( [60, 72, 57], [75, 120, 120] );
);
/**** Make a blue triangle??? ****/
color = "Blue";
framebox << Add Graphics Script(
Transparency( 0.5 );
Fill Color( color );
Polygon( [60, 72, 57], [85, 130, 130] );
);
Ciò accade a causa del modo in cui JSL gestisce l'ambito, quando si utilizza il file <<AGGIUNGI script="" grafico=""> funzione quindi viene aggiunto come un insieme di istruzioni non valutate (in realtà è un non valutato<CODE class=" language-jsl"> Colla() funzione). Qualsiasi variabile esistente all'interno di <<AGGIUNGI script="" grafico=""> lo script verrà valutato<EM> solo durante l'esecuzione</EM> della sceneggiatura.Quando lo script grafico è in esecuzione (ricorda, è allegato al file<CODE class=" language-jsl"> Scatola con cornice che è incorporato nell'albero di visualizzazione della finestra) dovrà risolvere ogni variabile.Le regole di risoluzione dell'ambito impongono che esaminerà il Locale ambito (se esiste), il Qui ambito (se esiste), quindi il Globale scope -- se non riesce a trovarli in nessuno di questi ambiti, verrà sostituito da un Vuoto() valore.
Quindi gli script vengono aggiunti al file Scatola con cornice all'interno dello script principale, ma eseguito solo in seguito.A questo punto successivo, la variabile color è "Blu" , quindi entrambi i triangoli sono blu.
Il modo per risolvere questo problema è far sì che tutte le variabili di interesse vengano risolte quando si aggiunge lo script grafico, non durante l'esecuzione.Per fare questo utilizzare il Eval( Eval Espr() ) metodologia, come mostrato qui.
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate( Y( :weight ), X( :height ), FitLine );
rbiv = biv << report;
framebox = rbiv[frame box( 1 )];
/**** Make a red triangle!!! ****/
color = "Red";
Eval( Eval Expr(
framebox << Add Graphics Script(
Transparency( 0.5 );
Fill Color( Expr( color ) );
Polygon( [60, 72, 57], [75, 120, 120] );
);
) );
/**** Make a blue triangle!!! ****/
color = "Blue";
Eval( Eval Expr(
framebox << Add Graphics Script(
Transparency( 0.5 );
Fill Color( Expr( color ) );
Polygon( [60, 72, 57], [85, 130, 130] );
);
) );
Devi usare questo metodo per tutte le tue variabili all'interno di <<AGGIUNGI script="" grafico=""> funzione in modo che mantenga il valore al momento<CODE class=" language-jsl"> <<AGGIUNGI script="" grafico=""> è stato chiamato.</AGGIUNGI>