
Questa dimostrazione illustra come usare la funzione For per l'iterazione. Finora abbiamo usato lo Script Editor con il log per testare i nostri script e osservare i risultati. Ma ora vogliamo esaminarli usando il debugger. Ho una finestra aperta dello script editor e inizierò digitando "Names Default to Here". E inserirò quel valore booleano (non aggiungo spazi in questo momento). In realtà digiterò tutto su una riga e poi lascerò che la riformattazione automatica sistemi tutto per me. Quindi digiterò un punto e virgola e poi "For", parentesi aperta, a uguale a punto e virgola, b uguale a punto e virgola, i uguale a virgola, quindi inizializzo tre variabili. Poi digiterò il test, che è "i" minore di una virgola, e poi aggiornerò sia b che i. Quindi b verrà aggiornato-- b+ uguale. Questa è la funzione di assegnazione sul posto, la funzione aggiungi a, che sovrascriverà il valore corrente di b e lo aumenterà di un punto e virgola perché sto aggiornando due cose, e poi i++, quel ++, di nuovo, è l'operatore di post-incremento che aggiunge a i sul posto. E poi una virgola, e poi il corpo di questo semplice ciclo sarà la funzione Mostra. E mostrerò semplicemente a, virgola, b, virgola-- e poi invocherò effettivamente la funzione di moltiplicazione usando l'operatore-- quindi a per b. E poi chiuderò tutte le parentesi, aggiungerò quel punto e virgola, e farò clic con il pulsante destro del mouse e Riformatta. Ora una cosa... beh, due cose da notare qui... una è che JMP ha aggiunto dei punti e virgola extra per me. Ha visto che stavo incollando delle funzioni insieme in questo primo argomento. Ha visto che stavo incollando delle funzioni insieme nel terzo argomento. E quindi ha aggiunto questi punti e virgola. Non fanno male. In pratica, probabilmente li rimuoverei dal mio script perché non sono necessari a meno che non intenda aggiungere o incollare altre funzioni. L'altra cosa che potrei fare è riorganizzare il tutto in modo che ogni argomento abbia una propria riga. Ma voglio che corrisponda a quello che ho nel PDF del corso quando andiamo nel debugger. Quindi lo lascerò così come lo ha riformattato JMP, eliminando però quei punti e virgola. Ci sono diversi modi per avviare il debugger. Potete andare al menu Modifica e trovare l'opzione Debug Script. La scorciatoia da tastiera è Ctrl+Maiusc+R. Potete fare clic sul pulsante Debug nella barra degli strumenti, qui nella finestra dell'Editor di script. Oppure potete fare clic con il pulsante destro del mouse e selezionare Debug Script. E poiché è l'ultimo metodo che vi mostro, andrò avanti e userò quel metodo. Quindi questo debugger è una seconda istanza di JMP. E l'istanza originale di JMP è temporaneamente sospesa. Quindi, se c'è un'interazione di qualsiasi tipo, come una finestra di dialogo richiesta dallo script, la finestra del debugger verrà sospesa finché non si esegue tale azione. Quindi, il controllo verrà restituito al debugger una volta completata l'operazione. Una volta terminato il debugger, è sufficiente chiuderlo. È possibile utilizzare la X nell'angolo in alto a destra o il pulsante Stop qui nella barra degli strumenti. Questo vi riporterà all'istanza originale di JMP. Quindi, per iniziare, eseguirò questo ciclo, così com'è, senza inserire punti di interruzione. Ci sono due pulsanti qui. Uno è Esegui e l'altro è Esegui senza punti di interruzione. E poiché al momento non ho punti di interruzione, questi faranno la stessa cosa. Se ho dei punti di interruzione che voglio utilizzare ora, userò questo pulsante all'estrema sinistra. Quindi clicco su di esso. Questo mi informa che l'esecuzione del programma viene terminata a meno che non venga riavviata, cosa che farò a breve. L'unica opzione è chiudere il debugger. Ma prima di riavviare, voglio andare alla scheda Locals qui in basso nel pannello sottostante dove viene visualizzato lo script. E lo spazio dei nomi predefinito è Here, che è quello che ho invocato alla riga. E puoi vedere che alla fine dell'esecuzione dello script, il valore di a è, il valore di b è e il valore di i è. Quindi ora voglio usare il debugger per esaminare i valori di a, b e i a ogni passaggio dell'iterazione. Quindi farò clic sul pulsante Restart. E voglio aggiungere un breakpoint alla riga. E per farlo, faccio clic appena a destra del numero di riga. E puoi avere tutti i breakpoint che vuoi. In questo semplice script, ne abbiamo bisogno solo di uno. Quindi ciò significa che valuteremo la riga e imposteremo lo spazio dei nomi Here. E poi all'interno del ciclo for, valuteremo l'argomento di inizializzazione. Valuteremo il test. Valuteremo il corpo del ciclo for, che è semplicemente la funzione Show. Poi faremo una pausa e vedremo i valori nella scheda Locals. Torno a quella. Poi, quando clicco di nuovo su Run, aggiorneremo, faremo il test, eseguirò il corpo del test, metteremo in pausa e vedremo quei valori. Continueremo a farlo finché il test non fallisce e usciamo dal ciclo. Quindi non voglio che nulla sia selezionato. E userò il pulsante Run a sinistra. Di nuovo, non voglio eseguirlo senza punti di interruzione. Quindi eseguirò questo. E potete vedere che ci siamo fermati alla riga dopo averla valutata. E i valori di a, b e i sono rispettivamente e . Per eseguire il passaggio successivo dell'iterazione, faccio di nuovo clic sul pulsante Run. E ora vedo che i valori di a, b e i sono rispettivamente e . E posso eseguire un'altra volta. E raggiungiamo i valori finali di a, b e i. E ricevo il messaggio che l'esecuzione del programma è terminata. E posso riavviare se voglio fare altro. Posso fare clic sul pulsante Stop. Oppure potrei chiudere usando la X nell'angolo in alto a destra. E andrò avanti e farò clic sul pulsante Stop. In questo modo il controllo verrà restituito alla mia sessione originale di JMP. Ora immaginiamo di aver misurato il tempo di polimerizzazione di un composto in produzione. Ogni ciclo viene campionato cinque volte durante la produzione e determiniamo questo tempo di polimerizzazione per ogni campione. E vogliamo esaminare la distribuzione dei tempi di polimerizzazione per ogni campione. Quindi, nel Diario del Corso, nella sezione "Dati del Tempo di Polimerizzazione", farò clic su "Dati del Tempo di Polimerizzazione". Una delle cose che consigliamo durante la creazione di script è di provare le cose in modo interattivo per iniziare ad assicurarsi che ciò che si sta cercando di fare sia fattibile. Quindi voglio degli istogrammi per il Tempo di Polimerizzazione. E quindi farò un semplice esempio per iniziare. Andrò al menu Analizza, selezionerò Distribuzione. E assegnerò al Tempo di Polimerizzazione il ruolo Y. E ancora una volta, ricordate che il ruolo qui è Y. E farò clic su OK. E quindi, guardando questo, penso, beh, questo è fantastico. Questo è esattamente ciò che desidero per tutte e cinque le mie distribuzioni del tempo di cura. Questa è la piattaforma che voglio usare. Ho creato un piccolo modello di script che ricrea questo report. Torno alla finestra Home e la apro. Questo script con l'avvio della piattaforma di distribuzione, il ruolo Y e la funzione colonna con il tempo di cura come stringa di caratteri ricreerà il report. Quindi scriverò un ciclo basato su questo modello. Chiuderò la finestra del tempo di cura, tornerò al mio editor di script e cancellerò il contenuto, in modo da poter usare la stessa finestra. E di nuovo, inizierò il mio script con "Nomi predefiniti qui". E come prima, lascerò che JMP pulisca lo script per me con la riformattazione automatica. Quindi il mio ciclo for inizierà con l'argomento c. E assegnerò un valore a c. Questa è l'unica variabile che inizializzerò. Digiterò una virgola. Il test sarà c minore del numero di colonne. E solo un promemoria: una buona pratica, se si lavora con una tabella dati di grandi dimensioni, potrebbe essere quella di contare il numero di colonne al di fuori del ciclo, memorizzare il risultato in una variabile e quindi fare in modo che quella variabile sia quella con cui si sta confrontando c. In questo caso, sono cinque colonne perché stiamo iniziando con la seconda. Sono cinque colonne in totale. Quindi non mi preoccupo troppo di rifare questo conteggio ogni volta. Ma una buona pratica sarebbe quella di eliminarlo. Digiterò una virgola dopo. L'argomento di aggiornamento sarà semplicemente c e l'operatore di post-incremento, i due segni più, un'altra virgola, e poi digiterò Distribution tra parentesi, y, aprirò di nuovo le parentesi, digiterò column e poi inserirò semplicemente c, il contatore, tra quelle parentesi. E ora sposto la freccia solo per assicurarmi di aver trovato tutte le parentesi corrispondenti. In realtà, se mancasse una parentesi chiusa qui e provassi a riformattare, riceverei un messaggio che manca qualcosa. Quindi, riformattare è in realtà un modo semplice per fare un po' di debug. Digito il punto e virgola. Poi vado avanti e uso il pulsante "Riformatta script". Poi vado avanti ed eseguo lo script. E quello che ottengo con lo script scritto così com'è è una finestra separata per ogni osservazione dei valori del tempo di cura, perché sto avviando la distribuzione... se torniamo alla finestra dell'Editor script... sto avviando di nuovo la piattaforma di distribuzione a ogni passaggio dell'iterazione. Ma se avete familiarità con la distribuzione... e tornerò al menu Analizza, selezionerò Distribuzione e inserirò tutti e cinque i valori del tempo di cura in quel ruolo Y. Se avete familiarità con la distribuzione, sapete che potete ottenere tutti questi valori nella stessa finestra. Quindi, nel Journal, c'è uno script pre-scritto per eseguire un ciclo per creare quel ruolo Y con tutti i nomi delle colonne e produrre lo stesso report con tutte e cinque le distribuzioni nella stessa finestra. Quindi, prima di iniziare, voglio chiudere tutte queste finestre del report. Vado alla barra dei menu e, sotto "Finestra", seleziono "Chiudi tutti i report". Trovo quindi il "Diario". Voglio fare clic sullo script "Distribuzioni dei tempi di cura". Lo analizzeremo nel Debugger. Parlerò quindi di cosa succede a ogni passaggio nell'ambiente del Debugger, anziché nella finestra dell'Editor di script. Faccio clic con il pulsante destro del mouse e seleziono "Debug script". Ricordate, ci sono diversi modi per avviare il Debugger. Voglio aggiungere un punto di interruzione alla riga per vedere cosa succede a ogni passaggio dell'iterazione, come abbiamo fatto nel semplice esempio precedente. Voglio anche aggiungere un controllo per le variabili c e yCol. Vado alla scheda Controllo. Faccio clic sul segno più verde per aggiungere un controllo. In questo modo posso esaminare variabili specifiche nel mio script. Ora, qui non ho molte variabili. Ma se hai uno script di grandi dimensioni con molte variabili, e ce ne sono solo alcune da tenere d'occhio durante il debug, usare la scheda Watch è un ottimo modo per farlo. Quindi clicco sul segno più verde per aggiungere il watch. Digito la variabile c e clicco su OK. E poi voglio anche aggiungere un watch sulla variabile yCol e clicco su OK. Ora, prima di iniziare a eseguirlo, voglio parlare un po' di cosa succede nello script. E poi lo vedremo mentre eseguiamo il debugger. Quindi la prima riga crea una variabile chiamata yCol. E yCol memorizzerà il ruolo di analisi Y della piattaforma di distribuzione seguito da parentesi vuote perché il mio ciclo costruirà questa espressione aggiungendo i nomi delle colonne nelle parentesi dopo quel ruolo Y. E lo cito con Expr perché se provassi semplicemente a dire yCol e ad assegnare il valore y con parentesi dopo, otterresti un errore perché JMP non lo riconosce come una variabile definita. Non lo riconosce come una funzione. Quindi voglio solo che questo valore letterale venga memorizzato in yCol senza che JMP provi a valutarlo. Ecco cosa farà la riga. Le righe fino a sono il mio ciclo for, dove iniziamo con la colonna. Iteriamo finché non esauriamo le colonne. E ancora, in uno script a livello di produzione, in particolare se potrebbero esserci tabelle di dati più grandi, vogliamo contare il numero di colonne al di fuori del ciclo, inserendolo in una variabile. E poi il corpo del ciclo for aggiunge semplicemente la colonna c, quindi la colonna questo primo round nell'espressione memorizzata in yCol. E Insert Into non tenterà di valutare il suo primo argomento. Quindi non devo fare nulla di speciale con la variabile yCol. Semplicemente lo esamina e poi esegue l'operazione, in questo caso aggiungendo "colonna" tra parentesi dopo la y. La funzione "Show" serve solo a scopo illustrativo per farci vedere cosa succede a ogni passaggio. Se non usassi il Debugger, questo elemento verrebbe visualizzato nel log. Quindi ho impostato l'orologio sui valori, il che equivale a usare la funzione "Show". Aggiorniamo. Eseguiamo il test e, supponendo che "c" sia ancora minore o uguale al numero di colonne, inseriamo la colonna successiva in "yCol". Quindi, una volta completato il ciclo, in altre parole, quando abbiamo esaurito le colonne, abbiamo un'ultima riga di codice, di cui parlerò dall'interno verso l'esterno. Vogliamo usare la funzione "Insert" per modificare l'espressione di distribuzione. Usiamo "Insert" anziché "Insert Into" perché la distribuzione è un'applicazione di avvio integrata in JMP. Un utente non può modificare la distribuzione stessa. Possiamo modificare un'espressione che utilizza la distribuzione. Quindi usiamo "insert". E poi racchiudiamo la distribuzione nella funzione "Expr", in modo che JMP non tenti di valutarla. Se lanciassi... evidenzio solo questo... se eseguissi solo questa parte di questa riga di codice, JMP direbbe: "Ehi, non mi hai fornito l'argomento richiesto nel ruolo Y". Quindi mi darebbe l'avvio della piattaforma di distribuzione. E poi l'utente inserirà le sue colonne, ma in realtà non... vanificherebbe lo scopo del nostro script, giusto? Quindi questo è il primo argomento. Il secondo argomento... se inserissi semplicemente yCol come secondo argomento, JMP cercherebbe di valutarlo. E vedrebbe... vedrete come apparirà dopo aver eseguito il ciclo. Ma vedrebbe solo quella Y maiuscola con parentesi e un mucchio di nomi di colonne. E questo non è qualcosa che JMP sa cosa fare. Non lo riconosce come un nome di variabile o una funzione. Quindi Name Expr mi permette di vedere cosa è memorizzato in yCol senza cercare di valutarlo. E quell'espressione non valutata memorizzata in yCol è ciò che verrà inserito tra parentesi dopo la distribuzione. Quindi, poiché, una volta fatto questo, la distribuzione con il ruolo Y in tutte le colonne è ancora tra virgolette, racchiudiamo il tutto in Eval. E possiamo esaminarla quando torniamo all'istanza normale di JMP e scomporla un po' di più. Quindi ho i miei orologi. E attualmente le variabili non sono definite. Quindi questo è ciò che viene visualizzato come valore. Eseguiamo fino al primo punto di interruzione. E quindi, dopo quella prima esecuzione prima dell'aggiornamento, c memorizza il valore di E ora yCol, invece di una semplice Y con parentesi vuote, ha Tempo di cura della colonna E ricordate dal mio piccolo modello che potete vedere sullo sfondo lì -- non posso accedervi perché il Debugger è attivo -- ma questo è ciò che produrrebbe quella distribuzione per una sola colonna. Quindi eseguirò di nuovo la prossima iterazione. Ora c è uguale a e il ruolo di analisi y sta avviando due colonne del tempo di cura. Eseguirò di nuovo. Ora ne abbiamo tre. E posso continuare a farlo. Potete vedere nel log in background che questi risultati vengono visualizzati grazie alla funzione Show. Continuerò a farlo finché non usciremo dal ciclo. Tutte e cinque le colonne del tempo di polimerizzazione sono memorizzate, e questo è più facile da vedere nel log nella vostra normale sessione di JMP, ma ora sono tutte memorizzate in yCol. Quindi l'esecuzione del programma è terminata. Proseguirò e cliccherò su Stop nel Debugger. Quindi l'ultima riga è stata valutata. E ho le distribuzioni del tempo di polimerizzazione con tutti e cinque gli istogrammi nella stessa finestra. Ora torniamo brevemente alla finestra dell'Editor di script per parlare di questa riga perché penso sia importante riflettere su come costruiamo le espressioni dall'interno verso l'esterno. Quindi eseguirò questo e creerò una serie di errori solo per assicurarmi che sia chiaro perché l'abbiamo scritto in quel modo. Quindi commenterò la riga pre-scritta. Quindi, tornando a come stavo descrivendo questo quando eravamo nell'istanza del debugger, digiterò la parola Insert. E quando si è alle prime armi con gli script, potrebbe essere un po' una questione di tentativi ed errori su quando usare Inserisci e quando usare Inserisci in. Ma, di nuovo, in questo caso, sto cercando di... Devo avviare una piattaforma con ruoli di analisi specifici o colonne specifiche nel ruolo di analisi. Ma non posso modificare una piattaforma. Posso modificare solo le variabili create dall'utente. Queste sono chiamate valori L. Quindi proviamo così. Digiterò Distribuzione per quel lancio, aprirò le parentesi, le chiuderò, digiterò una virgola e proverò a inserire yCol. Di nuovo, parto da una prospettiva ingenua, ovvero voglio sapere cosa è memorizzato in yCol e nelle parentesi dopo la distribuzione. Vediamo cosa succede quando eseguo questa riga. [SUONO DI ERRORE] Ricevo un errore, Nome non risolto. Y nell'accesso o nella valutazione di Y di tutte le colonne. Quindi, se lo ignoro, significa semplicemente che JMP ha provato a valutarlo. Non ci è riuscito. Quindi abbiamo ricevuto un errore. Quindi l'operazione non è stata completata. Quindi, di nuovo, la funzione che usiamo quando dobbiamo recuperare un'espressione memorizzata o un'espressione tra virgolette senza valutarla è Name Expr. Quindi inserirò... oops... aprirò le parentesi. Incarterò yCol in Name Expr. E potresti testarlo. Cosa succede? Se ho appena eseguito yCol, hai visto l'errore che abbiamo appena ricevuto. Se eseguo Name Expr yCol, puoi vedere nel log... oops, sto cercando di ridimensionarlo. Puoi vedere nel log che JMP non mi dà un errore con questo. Restituisce solo quell'espressione tra virgolette. Quindi ora, quando provo a eseguire la riga oh, bene, questa volta, il problema è che... quindi JMP non ha avuto problemi con la variabile yCol questa volta. Ma ora ha visto la distribuzione senza quel valore richiesto. Quindi non voglio che JMP avvii questa piattaforma. Lo annullerò. Voglio racchiudere la distribuzione in Expr, in modo che JMP non tenti di valutarla affatto. E ancora, puoi evidenziarlo ed eseguirlo solo per testarlo, OK, questo non causa problemi. E ora, quando lo eseguo, se guardo nel log, c'è la riga di codice che ho eseguito. Ecco il risultato: distribuzione con ruolo Y e tutte le colonne al suo interno. Quindi l'ultimo passaggio, come hai visto nella riga, consiste nell'inserire l'intera operazione – e questo è solo un modo per farlo – ma nell'inserire l'intera riga nella funzione Eval. E la eseguo. E c'è un'altra finestra di distribuzione con tutti i report di distribuzione. Quindi volevo solo passare in rassegna alcuni errori commessi durante lo sviluppo, solo perché penso che questo aiuti le persone a capire perché scriviamo queste cose in questo modo. Ora, un'altra cosa che menzionerò è che generalmente raccomandiamo – quando ho fatto quella prima distribuzione del tempo di cura, se ricordi, sono andato su Analizza, Distribuzione, ho semplicemente inserito Tempo di cura nel ruolo Y e ho cliccato su OK. Spesso consigliamo di prendere semplicemente lo script che JMP scriverebbe per voi per questo e di usarlo come base, in questo caso, per scrivere questo ciclo. E l'unica ragione per cui non l'ho fatto con le distribuzioni è che la sintassi in cui ho solo quel ruolo di analisi y è una sintassi obsoleta. Se dovessi andare sul triangolo rosso accanto alle distribuzioni e selezionare Salva script nella finestra script, la sintassi più recente specifica se si tratta di una distribuzione continua o nominale individualmente per ogni colonna. Quindi, in quel ciclo, c'è solo un po' più di scripting rispetto alla sintassi precedente. La sintassi precedente funziona bene. Ma probabilmente consiglierei di usare questa sintassi più recente. È solo un ciclo leggermente più complicato. Ma con la maggior parte delle piattaforme, andrà benissimo usare lo script che JMP scrive per noi. Chiuderò questa finestra script. E vedremo un altro esempio di come fare qualcosa in modo interattivo. Questa volta, catturerò quello script. Tuttavia, il mio ciclo è pre-scritto. Supponiamo di voler esaminare le carte di controllo di tutti e cinque i valori del tempo di polimerizzazione. Quindi inizierò interattivamente andando al menu Analizza. In Qualità e Processo, selezionerò Generatore di Carte di Controllo. Voglio inserire Giorno in quel ruolo di sottogruppo e Tempo di polimerizzazione nel ruolo Y. E automaticamente, il Generatore di Carte di Controllo mi fornirà la misurazione individuale e il grafico dell'intervallo mobile del Tempo di polimerizzazione. Questo è il mio punto di partenza. Farò clic su Fine per nascondere il Pannello di Controllo. Poi andrò sul triangolo rosso accanto a Generatore di Carte di Controllo e selezionerò Salva Script in una Finestra Script. Questa finestra dell'Editor Script, questa finestra dell'Editor Script, ora contiene il Generatore di Carte di Controllo che ricreerà quel risultato. Ora, solo per farlo corrispondere al mio script pre-scritto, eliminerò la riga che imposta la dimensione. Non è obbligatorio, ovviamente. Sto solo semplificando a scopo dimostrativo. Quello che vediamo è che il Generatore di Carte di Controllo è l'avvio della piattaforma. E poi abbiamo alcune opzioni. Stiamo nascondendo il Pannello di Controllo usando quel valore booleano. Non stiamo mostrando le funzionalità. E poi c'è questo ruolo delle variabili. E il ruolo delle variabili ha un sottogruppo. Sarà lo stesso per tutti i valori del tempo di polimerizzazione. E poi ha un ruolo Y con il tempo di polimerizzazione, in questo caso, Tempo di polimerizzazione. Quindi, quello che dobbiamo fare in realtà è costruire tre cose. Dobbiamo costruire quel ruolo di analisi y con le colonne del tempo di polimerizzazione, costruire la parte delle variabili aggiungendo, una volta che abbiamo tutte le colonne del tempo di polimerizzazione nel ruolo Y, aggiungendolo qui. E poi inseriamo quella parte delle variabili nel lancio del Generatore di Grafici di Controllo. Torniamo al registro e clicchiamo su Grafici di Controllo del Tempo di Polimerizzazione. Quindi, di nuovo, sono tre parti che costruiscono il ruolo di analisi y. Ed è proprio quello che abbiamo fatto: queste linee sono proprio quello che abbiamo fatto, quello che abbiamo visto nella distribuzione. E sto solo usando una convenzione di denominazione diversa per le variabili. Poi vogliamo costruire la parte delle variabili. E quindi sto usando la funzione Inserisci. Ho delle variabili con il sottogruppo Giorno, che sarà lo stesso per tutti i valori del tempo di polimerizzazione. Ma non voglio che JMP provi a valutare le variabili di parola. Otterrei un errore. Quindi userò Espr. E poi, proprio come nella distribuzione in quello script, recupero l'elenco delle colonne memorizzato in yExpr e lo aggiungo alla parte delle variabili. Quindi, in questo script, sto effettivamente creando il modello di base per il Generatore di Carte di Controllo senza la parte delle variabili e lo memorizzo nella variabile ccExpr. E infine, aggiungerò la riga delle variabili. Quindi, di nuovo, se osserviamo quel codice in background, quella riga delle variabili verrà aggiunta all'avvio del Generatore di Carte di Controllo. E in questo caso, ho usato semplicemente Nome Espr per entrambe perché sono espressioni tra virgolette che ho già definito. Memorizzo quel risultato in una sua variabile anziché racchiudere questa funzione di inserimento in eval. E poi uso cc nel mio script, che valuterà l'espressione creata. Ma andiamo avanti e portiamolo nel Debugger. Faccio clic con il pulsante destro del mouse e seleziono Debug. Vado alla scheda Watch. Voglio eliminare le variabili watch correnti dagli altri script, quindi clicco sul pulsante per eliminare tutte le watch. Poi aggiungerò quattro watch per le quattro variabili in questo script. Faccio clic sul più verde. Per prima cosa, digito yExpr e faccio clic su OK. Faccio clic di nuovo sul più verde e aggiungo varExpr. Non importa che l'abbia scritto in maiuscolo, ma voglio solo essere coerente con il testo qui nello script. Faccio clic su OK. Voglio aggiungere ccExpr. Faccio clic su OK. E infine, voglio aggiungere cc e faccio clic su OK. Metterò tre punti di interruzione perché voglio fermarmi in tre punti diversi qui. Quindi il primo breakpoint sarà sulla riga. Questo mi permetterà di vedere cosa succede a ogni passo dell'iterazione. Il prossimo breakpoint sarà sulla riga. Quindi faremo una pausa per vedere cosa è memorizzato in varExpr. Infine, metteremo un breakpoint sulla riga per vedere cosa è memorizzato in cc. Una volta chiuso, verrà valutato. Userò il pulsante Step Over per eseguire il debugger. Quindi clicco su di esso. La riga viene valutata e arriviamo al ciclo. Se guardiamo nella scheda Watch qui sotto, potete vedere cosa è memorizzato in yExpr in questo momento. E poi, quando clicco di nuovo su Step Over, andiamo al primo breakpoint. Quando clicco su Step Over una terza volta, ora potete vedere che yExpr contiene Column Cure Time. Farò di nuovo clic su Step Over per andare a quel breakpoint. Cliccherò ancora una volta. E ora abbiamo inserito Cure Time in quel ruolo Y. Quindi continuerò a farlo finché non avremo completato il ciclo for. Se lo vedeste, vedreste che tutte e cinque le colonne del tempo di polimerizzazione sono in quel ruolo Y. Ora la riga definirà varExpr. Quindi ora ci sono variabili con il sottogruppo Giorno e poi il ruolo Y con tutte quelle colonne. Faccio di nuovo clic su "Passa oltre", e questo ci porta al punto in cui abbiamo definito ccExpr. E potete vedere anche nella scheda Osservazione che memorizza solo l'avvio del Generatore di Carte di Controllo, ma ne manca una parte essenziale. E poi la riga è dove mettiamo tutto insieme. Quindi faccio un'altra volta un'altra volta un'altra volta. E ora, se voleste esaminare questo, il Generatore di Carte di Controllo, Mostra Pannello di Controllo, eccetera, ha i valori memorizzati in varExpr aggiunti. Faccio di nuovo clic su "Passa oltre". L'esecuzione del programma termina. Faccio clic su Interrompi. E ora torno al mio normale sessione di JMP, puoi vedere che ho i grafici di misurazione e intervallo mobile individuali per il tempo di cura e così via. Quindi, in questi esempi, stiamo esaminando l'utilizzo della funzione For, l'impiego delle funzioni Espr, Name Expr tramite Insert e anche come possiamo usare il debugger in questi semplici contesti. Torno al Journal e faccio clic su Elimina tutto, Salva nessuno senza salvare le modifiche in nessuna delle finestre del mio script. E questo conclude la dimostrazione.