Cette démonstration illustre donc comment utiliser la fonction For pour l'itération. Et jusqu'à présent, nous avons utilisé l'éditeur de scripts avec le journal pour tester nos scripts et observer les résultats. Mais maintenant, nous voulons examiner cela en utilisant le débogueur. J'ai donc une fenêtre d'éditeur de script ouverte et je vais commencer par taper Names Default to Here. Et je vais mettre ce booléen que je n'ajoute pas d'espaces pour le moment. Je vais en fait tout taper sur une seule ligne, puis laisser le reformatage automatique nettoyer les choses pour moi. Je vais donc taper un point-virgule puis For, ouvrir des parenthèses, un point-virgule égal, b un point-virgule égal, i une virgule égale-- donc j'initialise trois variables. Ensuite, je vais taper le test, qui est i inférieur à la virgule, puis je vais mettre à jour à la fois b et i. Donc b mettra à jour-- b+ égal C'est donc la fonction d'affectation sur place, la fonction d'ajout à, qui écrasera la valeur actuelle de b et l'augmentera d'un point-virgule parce que je mets à jour deux choses, puis i++, que ++ , encore une fois, étant l'opérateur post-incrément qui ajoute à i en place. Et puis une virgule, puis le corps de cette simple boucle sera la fonction Afficher. Et je vais juste montrer a, virgule, b, virgule-- et ensuite j'invoquerai la fonction de multiplication en utilisant l'opérateur-- donc a fois b. Et puis je fermerai toutes mes parenthèses, ajouterai ce point-virgule, et je ferai un clic droit et reformaterai. Maintenant, une chose - eh bien, deux choses à noter ici - l'une est que JMP a ajouté quelques points-virgules supplémentaires pour moi. Il a vu que je collais des fonctions ensemble dans ce premier argument. Il a vu que je collais des fonctions ensemble dans le troisième argument. Et donc il a ajouté ces points-virgules. Ils ne font pas mal. En pratique, je les supprimerais probablement de mon script car ils ne sont pas nécessaires à moins que j'allais ajouter - coller plus de fonctions ensemble. Et l'autre chose que je pourrais faire est de réorganiser cela pour que chaque argument ait sa propre ligne. Mais je veux que cela corresponde à ce que j'ai dans le PDF du cours lorsque nous entrons dans le débogueur. Je vais donc le laisser tel que JMP l'a reformaté, sauf pour supprimer ces points-virgules. Il existe donc plusieurs façons de démarrer le débogueur. Vous pouvez aller dans le menu Edition, et il y a une option Debug Script. Vous pouvez voir que le raccourci clavier est Ctrl + Maj + R. Vous pouvez cliquer sur le bouton Déboguer de la barre d'outils, ici dans la fenêtre de l'éditeur de script. Ou vous pouvez cliquer avec le bouton droit de la souris et sélectionner Déboguer le script. Et puisque c'est le dernier que je vous montre, je vais continuer et utiliser cette méthode. Ce débogueur est donc une seconde instance de JMP. Et l'instance d'origine de JMP est temporairement suspendue. Donc, s'il y a un type d'interaction, comme une boîte de dialogue requise par votre script, la fenêtre du débogueur sera suspendue jusqu'à ce que vous effectuiez cette action. Et puis le contrôle est renvoyé au débogueur une fois que c'est terminé. Et puis une fois que vous avez terminé avec le débogueur, vous le fermez simplement. Vous pouvez simplement utiliser le X dans le coin supérieur droit ou le bouton Arrêter ici dans la barre d'outils. Et cela vous ramènera à l'instance d'origine de JMP. Donc, pour commencer, je vais juste parcourir cette boucle, telle quelle, sans mettre de points d'arrêt. Et il y a deux boutons ici. L'un est Exécuter et l'autre est Exécuter sans points d'arrêt. Et comme je n'ai pas de points d'arrêt pour le moment, ceux-ci vont faire la même chose. Si j'ai des points d'arrêt que je veux les utiliser maintenant, j'utiliserai ce bouton à l'extrême gauche. Alors je clique dessus. Et cela me permet de savoir que l'exécution du programme est terminée à moins que je ne redémarre, ce que je ferai sous peu. La seule option est de fermer le débogueur. Mais avant de redémarrer, je souhaite accéder à l'onglet Locals ici dans le panneau ci-dessous où le script est affiché. Et l'espace de noms par défaut est Here, ce que j'ai invoqué en ligne Et vous pouvez voir qu'à la fin de l'exécution du script, la valeur de a est La valeur de b est Et la valeur de i est Alors maintenant je veux utiliser le débogueur pour regarder les valeurs de a, et b, et i à chaque étape de l'itération. Je vais donc cliquer sur ce bouton Redémarrer. Et je veux ajouter un point d'arrêt à la ligne Et pour ce faire, je clique juste à droite du numéro de ligne. Et vous pouvez avoir autant de points d'arrêt que vous le souhaitez. Dans ce script simple, nous n'avons vraiment besoin que de celui-là. Cela signifie donc que nous allons évaluer la ligne et définir cet espace de noms Here. Et puis dans la boucle for, nous évaluerons l'argument d'initialisation. Nous évaluerons le test. Nous allons évaluer le corps de la boucle for, qui n'est que la fonction Show. Et puis nous ferons une pause, et nous verrons les valeurs dans l'onglet Locals. Permettez-moi de revenir à cela. Et puis, quand je clique à nouveau sur Exécuter, nous mettrons à jour, ferons le test, exécuterons le corps, et mettrons en pause, et verrons ces valeurs. Et nous continuerons à le faire jusqu'à ce que le test échoue et que nous quittions la boucle. Je veux donc ne rien sélectionner. Et je vais utiliser le bouton Exécuter de gauche. Encore une fois, je ne veux pas l'exécuter sans points d'arrêt. Je vais donc lancer ça. Et vous pouvez voir que nous nous sommes arrêtés à la ligne après avoir évalué cela. Et les valeurs de a, b et i sont et respectivement. Pour passer à l'étape suivante de l'itération, je clique à nouveau sur le bouton Exécuter. Et maintenant, je vois que les valeurs de a, b et i sont et respectivement. Et je peux courir une fois de plus. Et nous atteignons les valeurs finales de a, b et i. Et je reçois le message que l'exécution du programme est terminée. Et je peux soit redémarrer si je voulais faire autre chose. Je peux cliquer sur le bouton Arrêter. Ou je pourrais fermer en utilisant le X dans le coin supérieur droit. Et je vais continuer et cliquer sur le bouton Arrêter. Cela rend donc le contrôle à ma session d'origine de JMP. Imaginons maintenant que nous ayons mesuré le temps de durcissement d'un composé en cours de production. Et chaque cycle est échantillonné cinq fois pendant la production, et nous déterminons ce temps de durcissement pour chaque échantillon. Et nous voulons examiner la distribution des temps de durcissement pour chaque échantillon. Donc, dans le journal du cours, dans la section, je vais cliquer sur Cure Time Data. Et l'une des choses que nous recommandons lors de la création de scripts est d'essayer des choses de manière interactive pour commencer à vous assurer que ce que vous essayez de faire est réalisable. Je veux donc des histogrammes pour Cure Time through Et donc je vais juste faire un exemple simple pour commencer. Je vais dans le menu Analyser, sélectionnez Distribution. Et je mettrai Cure Time dans ce rôle Y. Et encore une fois, rappelez-vous que le rôle ici est Y. Et je clique sur OK. Et donc en regardant ça, je pense, eh bien, c'est génial. C'est exactement ce que je veux pour mes cinq distributions de temps de cure. C'est donc la plate-forme que je veux utiliser. Et j'ai créé un petit modèle de script qui recréerait ce rapport. Permettez-moi de revenir à la fenêtre d'accueil et de l'ouvrir. Donc, ce script avec le lancement de la plate-forme de distribution, ce rôle Y, puis la fonction de colonne avec Cure Time comme chaîne de caractères recréera ce rapport. Et donc je vais écrire une boucle basée sur ce modèle. Je vais donc continuer et fermer cette fenêtre Cure Time et revenir à mon éditeur de script et effacer le contenu, afin que je puisse simplement utiliser la même fenêtre. Et encore une fois, je vais commencer mon script avec Names Default to Here. Et comme avant, je laisserai JMP nettoyer le script pour moi avec le reformatage automatique. Donc ma boucle for commencera par l'argument c. Et je vais attribuer une valeur de à c. C'est la seule variable que je vais initialiser. Je vais taper une virgule. Le test sera c inférieur à égal au nombre de colonnes. Et juste un rappel qu'une bonne pratique, si vous travaillez avec une grande table de données, serait potentiellement de compter le nombre de colonnes en dehors de la boucle, de stocker ce résultat dans une variable, puis de faire en sorte que cette variable soit ce que vous 're comparant c à. Dans ce cas, il s'agit de cinq colonnes car nous commençons par la seconde. C'est cinq colonnes au total. Je ne m'inquiète donc pas trop de refaire ce décompte à chaque fois. Mais une meilleure pratique serait de retirer cela. Je vais taper une virgule après ça. L'argument de mise à jour sera juste c et l'opérateur de post-incrémentation, les deux signes plus, une autre virgule, puis je vais taper Distribution entre parenthèses, y, ouvrir à nouveau les parenthèses, taper colonne, puis mettre c-- le compteur-- entre ces parenthèses. Et je vais maintenant flécher juste pour m'assurer que toutes mes parenthèses correspondent. En fait, s'il me manquait une parenthèse fermante ici et que j'essayais de reformater, je recevrais un message indiquant qu'il manquait quelque chose. Donc, le reformatage est en fait un moyen simple de faire du débogage. Je vais taper le point-virgule. Et puis je vais continuer et utiliser le bouton Reformater le script. Et puis je vais continuer et exécuter le script. Et ce que j'obtiens avec le script écrit tel quel, c'est une fenêtre séparée pour chaque observation des valeurs de temps de durcissement car je lance la distribution -- si nous revenons à la fenêtre de l'éditeur de script -- je relance la plateforme de distribution à chaque étape de l'itération. Mais si vous êtes familier avec la distribution - et je vais revenir au menu Analyser, sélectionnez Distribution et placez les cinq valeurs de temps de durcissement dans ce rôle Y. Si vous êtes familier avec la distribution, vous savez que vous pouvez tous les obtenir dans la même fenêtre. Donc, dans le Journal, il y a un script qui a été pré-écrit pour boucler pour construire ce rôle Y avec tous les noms de colonnes et produire le même rapport avec les cinq distributions dans la même fenêtre. Donc, avant de commencer, je veux continuer et fermer toutes ces fenêtres de rapport. Je vais accéder à la barre de menus et sous Fenêtre, sélectionnez Fermer tous les rapports. Et puis je trouverai le Journal. Et je veux cliquer sur le script, Cure Time Distributions. Et nous allons passer par là dans le débogueur. Je vais donc parler de ce qui se passe à chaque étape dans cet environnement de débogage plutôt que dans la fenêtre de l'éditeur de script ici. Je vais donc cliquer avec le bouton droit de la souris et sélectionner Déboguer le script. Encore une fois, rappelez-vous qu'il existe plusieurs façons de lancer le débogueur. Et je veux ajouter un point d'arrêt à la ligne pour voir ce qui se passe à chaque étape de l'itération comme nous l'avons fait dans l'exemple simple précédemment. Et je veux aussi ajouter une montre sur la variable c et la variable yCol. Je vais donc aller dans l'onglet Watch. Et je vais cliquer sur le signe plus vert pour ajouter une montre. C'est donc une façon pour moi de regarder des variables spécifiques dans mon script. Maintenant ici, je n'ai pas beaucoup de variables. Mais si vous aviez un gros script avec beaucoup de variables et qu'il n'y en avait que quelques-unes sur lesquelles vous deviez garder un œil pendant le débogage, l'utilisation de l'onglet Watch est un excellent moyen de le faire. Je clique donc sur ce signe plus vert pour ajouter la montre. Je vais taper la variable c et cliquer sur OK. Et puis je veux aussi ajouter une montre sur la variable yCol Et je clique sur OK. Maintenant, avant de commencer à exécuter ceci, je veux parler un peu de ce qui se passe tout au long du script. Et puis nous verrons cela au fur et à mesure que nous avancerons dans le processus d'exécution du débogueur. Ainsi, la toute première ligne crée une variable appelée yCol. Et yCol va stocker le rôle d'analyse Y de la plate-forme de distribution suivi de parenthèses vides car ma boucle va construire cette expression en ajoutant les noms de colonne entre parenthèses après ce rôle Y. Et je le cite avec l'Expr parce que si vous essayez juste de dire yCol et d'attribuer la valeur y avec des parenthèses après, vous obtiendrez une erreur car JMP ne reconnaît pas cela comme une variable qui a été définie. Il ne le reconnaît pas comme une fonction. Donc, je veux juste que cette valeur littérale soit stockée dans yCol sans que JMP essaie de l'évaluer. C'est donc ce que la ligne fera. Les lignes à travers sont ma boucle for, où nous commençons par la colonne Nous itérons jusqu'à ce que nous manquions de colonnes. Et encore une fois, dans un script de niveau de production, en particulier s'il peut y avoir des tables de données plus grandes, nous voulons compter le nombre de colonnes en dehors de la boucle, mettre cela dans une variable. Et puis le corps de la boucle for ajoute simplement la colonne c, donc colonne ce premier tour dans l'expression stockée dans yCol. Et Insert Into n'essaiera pas d'évaluer son premier argument. Je n'ai donc rien à faire de spécial avec la variable yCol. Il le regarde simplement et effectue ensuite l'opération, dans ce cas, en ajoutant une colonne entre les parenthèses après le y. La fonction Afficher est juste à des fins d'illustration pour nous de voir ce qui se passe à chaque étape. Cette pièce, si je n'utilisais pas le débogueur, cela apparaîtrait dans le journal. J'ai donc la montre sur les valeurs, ce qui équivaut à utiliser la fonction Afficher. Nous mettons à jour. On teste, et on suppose que c est toujours inférieur ou égal au nombre de colonnes, on insère la colonne suivante dans yCol. Ensuite, une fois la boucle terminée, en d'autres termes, nous manquons de colonnes, nous avons une dernière ligne de code, dont je vais parler de cela de l'intérieur. Nous voulons utiliser la fonction d'insertion pour modifier l'expression de distribution. Nous utilisons Insérer plutôt que Insérer dans car la distribution est un lancement de plate-forme intégré à JMP. Un utilisateur ne peut pas réellement modifier la distribution lui-même. Nous pouvons modifier une expression qui utilise la distribution. Nous utilisons donc insert. Ensuite, nous encapsulons la distribution dans la fonction Expr, afin que JMP n'essaie pas d'évaluer la distribution. Si je lançais-- je vais juste souligner ceci-- Si j'exécutais juste ce morceau de cette ligne de code, JMP dirait, hé, vous ne m'avez pas donné l'argument requis dans le rôle Y. Cela me donnerait donc le lancement de la plate-forme de distribution. Et puis l'utilisateur mettrait ses colonnes, mais nous ne le ferions pas en fait - cela irait à l'encontre de l'objectif de notre script, n'est-ce pas ? C'est donc le premier argument. Le deuxième argument - si je mets juste yCol comme deuxième argument, JMP essaierait de l'évaluer. Et ça verrait-- vous verrez à quoi ça va ressembler après que nous aurons fait la boucle. Mais il ne verrait que ce Y majuscule avec des parenthèses et un tas de noms de colonnes. Et ce n'est pas quelque chose dont JMP sait quoi faire. Il ne reconnaît pas cela comme un nom de variable ou une fonction. Ainsi, Name Expr me permet de regarder ce qui est stocké et yCol sans essayer de l'évaluer. Et cette expression non évaluée stockée dans yCol est ce qui sera mis entre parenthèses après la distribution. Ensuite, parce qu'une fois que j'ai fait cela, la distribution avec le rôle Y dans toutes les colonnes est toujours citée, nous encapsulons le tout dans Eval. Et nous pouvons passer en revue lorsque nous revenons à l'instance normale de JMP et décomposer cela un peu plus. J'ai donc mes montres. Et actuellement, les variables ne sont pas définies. C'est donc ce qui apparaît comme la valeur. Courons jusqu'au premier point de rupture. Et donc après ce premier passage avant la mise à jour, c stocke la valeur de Et maintenant yCol, au lieu d'un Y avec des parenthèses vides, il a un temps de traitement de colonne Et rappelez-vous de mon petit modèle que vous pouvez voir en arrière-plan là-- Je ne peux pas y accéder car le débogueur est actif - mais c'est ce qui produirait cette distribution pour une seule colonne. Je vais donc recommencer la prochaine itération. Maintenant, c est égal à et le rôle d'analyse y démarre deux colonnes de temps de durcissement. Je vais courir à nouveau. Maintenant, nous en avons trois. Et je peux continuer à le faire. Vous pouvez voir dans le journal en arrière-plan que ces résultats s'affichent grâce à la fonction Afficher. Je continuerai donc jusqu'à ce que nous quittions la boucle. Et les cinq colonnes de temps de durcissement sont stockées - et cela est plus facile à voir dans le journal de votre session régulière de JMP - mais elles sont toutes stockées dans yCol maintenant. L'exécution du programme est donc terminée. Je vais continuer et cliquer sur Arrêter dans le débogueur. Et donc cette dernière ligne a maintenant été évaluée. Et j'ai les distributions de temps de durcissement avec les cinq histogrammes dans la même fenêtre. Revenons maintenant brièvement à la fenêtre de l'éditeur de script pour parler de cette ligne car je pense qu'il est important de réfléchir à la manière dont nous construisons les expressions de l'intérieur. Je vais donc exécuter ceci et créer un tas d'erreurs juste pour m'assurer que c'est clair pourquoi nous avons écrit cela comme nous l'avons fait. Je vais donc commenter la ligne pré-écrite. Donc, pour revenir à la façon dont je décrivais cela lorsque nous étions dans l'instance du débogueur, je vais taper le mot Insert. Et lorsque vous débutez dans les scripts, il peut s'agir d'un petit essai et d'une erreur pour savoir quand utiliser Insert, quand utiliser Insert Into. Mais encore une fois, dans ce cas, j'essaie de... J'ai besoin de lancer une plate-forme avec des rôles d'analyse spécifiques ou des colonnes spécifiques dans le rôle d'analyse. Mais je ne peux pas modifier une plate-forme. Je ne peux modifier que les variables créées par l'utilisateur. Celles-ci sont appelées valeurs L. Alors essayons ceci. Je vais taper Distribution pour ce lancement, ouvrir les parenthèses, fermer les parenthèses, taper une virgule et essayer d'insérer yCol. Encore une fois, j'en viens à cela d'un point de vue naïf que je veux ce qui est stocké dans yCol et les parenthèses après la distribution. Voyons donc ce qui se passe lorsque j'exécute cette ligne. [ERREUR CARILLON] J'obtiens une erreur, Nom non résolu. Y en accès ou évaluation de Y de toutes les colonnes. Donc, si je rejette cela, cela signifie simplement que JMP a essayé d'évaluer cela. Cela ne pouvait pas. Nous avons donc une erreur. Cela ne s'est donc pas terminé. Encore une fois, la fonction que nous utilisons lorsque nous devons récupérer une expression stockée ou une expression entre guillemets sans l'évaluer est Name Expr. Donc je vais conclure-- oups-- ouvrir des parenthèses. Je vais envelopper yCol dans Name Expr. Et vous pourriez tester cela. Alors que se passe-t-il. Si je viens d'exécuter yCol, vous avez vu l'erreur que nous venons d'obtenir. Si je lance Name Expr yCol, alors vous pouvez voir dans le journal - oups, j'essaie de redimensionner cela. Vous pouvez voir dans le journal que JMP ne me donne pas d'erreur avec cela. Il renvoie simplement cette expression entre guillemets. Alors maintenant, quand j'essaie d'exécuter la ligne oh, eh bien, cette fois, le problème est que - donc JMP n'a pas eu de problème avec la variable yCol cette fois. Mais maintenant, il a vu la distribution sans cette valeur requise. Je ne veux donc pas que JMP lance cette plateforme. Je vais annuler ça. Je veux envelopper la distribution dans Expr, donc JMP n'essaiera pas du tout d'évaluer cela. Et encore une fois, vous pouvez le mettre en surbrillance et l'exécuter juste pour le tester, OK, cela ne pose aucun problème. Et maintenant, quand je lance ceci, si je regarde dans le journal, il y a la ligne de code que j'ai exécutée. Voici le résultat, la distribution avec un rôle Y et toutes les colonnes qu'il contient. Alors la dernière pièce, comme vous l'avez vu en ligne, est d'envelopper tout cela - et ce n'est qu'une façon de le faire - mais d'envelopper toute la ligne dans la fonction Eval. Et je dirige ça. Et il y a une autre fenêtre de distribution avec tous les rapports de distribution. Je voulais donc juste faire quelques erreurs en développant cela simplement parce que je pense que cela aide les gens à comprendre pourquoi nous écrivons ces choses comme nous le faisons. Maintenant, une autre chose que je mentionnerai est que nous recommandons généralement - lorsque j'ai fait cette première distribution de temps de durcissement, si vous vous souvenez, je suis allé à Analyser, Distribution, j'ai simplement mis Cure Time dans le rôle Y, et j'ai cliqué sur OK. Nous vous recommandons souvent de simplement saisir le script que JMP écrirait pour vous et de l'utiliser comme base, dans ce cas, pour écrire cette boucle. Et la seule raison pour laquelle je ne l'ai pas fait avec les distributions est que la syntaxe où j'ai juste ce rôle d'analyse y est une syntaxe plus ancienne. Si je devais aller dans le triangle rouge à côté des distributions et sélectionner Enregistrer le script dans la fenêtre de script, la nouvelle syntaxe spécifie s'il s'agit d'une distribution continue ou nominale individuellement pour chaque colonne. Et donc c'est juste un peu plus de scripts dans cette boucle qu'avec l'ancienne syntaxe. L'ancienne syntaxe fonctionne bien. Mais je recommanderais probablement d'utiliser cette nouvelle syntaxe. C'est juste une boucle un peu plus compliquée. Mais avec la plupart des plates-formes, il suffira de prendre le script que JMP écrit pour nous. Je vais fermer cette fenêtre de script. Et nous allons examiner un autre exemple de faire quelque chose de manière interactive. Cette fois, je vais capturer ce script. Bien que ma boucle soit pré-écrite. Supposons que je veuille regarder les graphiques de contrôle des cinq valeurs de temps de durcissement. Et donc je vais commencer de manière interactive en allant dans mon menu Analyze. Sous Qualité et processus, je sélectionnerai Control Chart Builder. Je veux mettre Day dans ce rôle de sous-groupe et Cure Time dans le rôle Y. Et cela automatiquement, le générateur de carte de contrôle me donne la mesure individuelle et le graphique de plage mobile du temps de durcissement. C'est donc mon point de départ. Je vais cliquer sur Terminé pour masquer le Panneau de configuration. Et puis je vais aller au triangle rouge à côté de Control Chart Builder et Save Script to a Script Window. Donc, cette fenêtre de l'éditeur de script -- cette fenêtre de l'éditeur de script. contient maintenant le Control Chart Builder qui recréera ce résultat. Maintenant, juste pour le faire correspondre à mon script pré-écrit, je vais supprimer la ligne qui définit la taille. Vous n'êtes pas obligé de le faire, bien sûr. Je simplifie simplement cela à des fins de démonstration. Donc, ce que nous voyons, c'est que le constructeur de cartes de contrôle est le lancement de la plate-forme. Et puis nous avons quelques options. Nous cachons le panneau de configuration en utilisant ce booléen Nous ne montrons pas la capacité. Et puis il y a ce rôle de variables. Et le rôle des variables a un sous-groupe. Ce sera la même chose pour toutes les valeurs de temps de durcissement. Et puis il a un rôle Y avec le temps de durcissement, dans ce cas, le temps de durcissement. Donc, ce que nous devons réellement faire, c'est construire trois choses. Nous devons construire ce rôle d'analyse y avec les colonnes de temps de durcissement, construire la partie variable de ceci en ajoutant - une fois que nous avons toutes les colonnes de temps de durcissement dans le rôle Y - en ajoutant cela ici. Et puis intégrez cet élément de variables au lancement du Control Chart Builder. Revenons donc au journal et cliquez sur Cure Time Control Charts. Encore une fois, ce sont trois éléments qui construisent le rôle d'analyse y. Et c'est exactement ce que nous avons fait - ces lignes sont exactement comme ce que nous avons fait, ce que nous avons vu dans la distribution. Et j'utilise simplement une convention de dénomination différente sur les variables. Ensuite, nous voulons construire la pièce des variables. Et donc j'utilise juste la fonction d'insertion. J'ai des variables avec le sous-groupe Day, qui sera le même pour toutes les valeurs de temps de durcissement. Mais je ne veux pas que JMP essaie d'évaluer les variables de mots. J'obtiendrai une erreur. Je vais donc utiliser Expr. Et puis, tout comme dans la distribution dans ce script, je récupère la liste des colonnes qui est stockée dans yExpr et l'ajoute dans la partie variables. Ensuite, dans ce script, je construis en fait le modèle de base pour le générateur de cartes de contrôle sans les variables et je les stocke dans la variable ccExpr. Et enfin, je vais ajouter la ligne des variables. Donc, encore une fois, si nous regardons ce code en arrière-plan, cette ligne de variables va être ajoutée au lancement du Control Chart Builder. Et dans ce cas, j'ai juste utilisé Name Expr pour les deux car ce sont des expressions entre guillemets que j'ai déjà définies. Je stocke ce résultat dans sa propre variable plutôt que d'envelopper cette fonction d'insertion dans eval. Et puis j'utilise cc dans mon script, et cela évaluera cette expression construite. Allons-y, cependant, et prenons cela dans le débogueur. Je vais donc cliquer avec le bouton droit de la souris et sélectionner Déboguer. Je vais accéder à l'onglet Watch. Et je veux me débarrasser des variables de surveillance actuelles de mes autres scripts, donc je vais simplement cliquer sur le bouton pour supprimer toutes les surveillances. Et puis je vais ajouter quatre montres pour les quatre variables de ce script. Je clique donc sur le plus vert. Et d'abord, je tape yExpr, et je clique sur OK. Et je clique à nouveau sur le vert plus, et j'ajoute varExpr. Et peu importe que j'ai mis une majuscule, mais je veux juste être cohérent avec ce qui est dans le texte ici dans le script. Je clique donc sur OK. Je veux ajouter ccExpr. Cliquez sur OK. Et enfin, je veux ajouter cc, et cliquez sur OK. Je vais mettre trois points d'arrêt parce que je veux m'arrêter à trois endroits différents ici. Donc le premier point d'arrêt sera en ligne Et ça va me permettre de voir ce qui se passe à chaque étape de l'itération. Le prochain point d'arrêt sera en ligne Nous allons donc faire une pause pour pouvoir voir ce qui est stocké dans varExpr. Et puis enfin, on mettra un point d'arrêt en ligne pour voir ce qui est stocké en cc. Et puis une fois que nous aurons rejeté cela, cela sera évalué. Je vais utiliser le bouton Step Over pour exécuter le débogueur. Alors je clique dessus. Et la ligne est évaluée, et nous arrivons à la boucle. Et si nous regardons dans l'onglet Watch ci-dessous, vous pouvez voir ce qui est stocké et yExpr en ce moment. Et puis quand je clique à nouveau sur Step Over, nous passons au premier point d'arrêt. Lorsque je clique sur Step Over une troisième fois, vous pouvez maintenant voir que yExpr contient Column Cure Time. Je clique à nouveau sur Step Over pour accéder à ce point d'arrêt. Cliquez une fois de plus. Et maintenant, nous avons inséré Cure Time dans ce rôle Y. Je vais donc continuer jusqu'à ce que nous en ayons fini avec la boucle for. Et si vous visualisez ceci, vous verriez que les cinq colonnes de temps de durcissement sont dans ce rôle Y. Maintenant, la ligne définira varExpr. Alors maintenant, ce sont des variables avec le sous-groupe Day, puis le rôle Y avec toutes ces colonnes. Je clique à nouveau sur Step Over, et cela nous amène à l'endroit où nous avons défini ccExpr. Et vous pouvez également voir cela dans l'onglet Watch, qu'il ne s'agit que de stocker le lancement du Control Chart Builder mais qu'il en manque un élément essentiel. Et puis la ligne est l'endroit où nous assemblons tout. Donc, je vais franchir le pas une fois de plus. Et maintenant, si vous vouliez examiner cela, le Control Chart Builder, Show Control Panel, etc., a les valeurs stockées dans varExpr qui lui sont ajoutées. Je clique encore une fois sur Step Over. L'exécution du programme se termine. Je clique sur Arrêter. Et maintenant, de retour dans ma session régulière de JMP, vous pouvez voir que j'ai les graphiques de mesure et de plage mobile individuels pour votre temps de durcissement, etc. Donc, ces exemples, nous envisageons d'utiliser la fonction For, d'utiliser les fonctions Expr, Name Expr en utilisant Insert, et aussi de voir comment nous pouvons utiliser le débogueur dans ces contextes simples. Je vais revenir au Journal et cliquer sur Supprimer tout Enregistrer aucun sans enregistrer les modifications apportées à aucune de mes fenêtres de script. Et cela clôturera cette démonstration.