
Cette démonstration illustre l'utilisation de la fonction For pour l'itération. Jusqu'à présent, nous avons utilisé l'éditeur de scripts avec le journal pour tester nos scripts et observer les résultats. Nous allons maintenant examiner cela avec le débogueur. J'ai une fenêtre d'éditeur de scripts ouverte et je commence par saisir « Noms par défaut : ici ». Je mets ce booléen (sans espace pour le moment). Je vais tout saisir sur une seule ligne, puis laisser le reformatage automatique faire le ménage. Je tape un point-virgule, puis « For », parenthèses ouvrantes, « a égal point-virgule », « b égal point-virgule », « i égal virgule »… J'initialise donc trois variables. Ensuite, je saisis le test, qui est « i inférieur à virgule », puis je mets à jour « b » et « i ». Donc b va mettre à jour-- b+ égal Donc c'est une fonction d'affectation en place, la fonction ajouter à, qui va écraser la valeur actuelle de b et l'augmenter d'un point-virgule parce que je mets à jour deux choses, et puis i++, ce ++, encore une fois, étant l'opérateur post-incrémentation qui ajoute à i en place. Et puis une virgule, et puis le corps de cette boucle simple sera la fonction Afficher. Et je vais juste afficher a, virgule, b, virgule-- et ensuite j'invoquerai la fonction multiplier 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 - la première est que JMP a ajouté des 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 de mal. En pratique, je les supprimerais probablement de mon script, car ils ne sont pas nécessaires, sauf si je prévoyais d'ajouter des fonctions ensemble. Je pourrais également réorganiser le tout pour que chaque argument ait sa propre ligne. Je souhaite que cela corresponde à ce que j'ai dans le PDF du cours lorsque nous utiliserons le débogueur. Je vais donc le laisser tel que JMP l'a reformaté, sauf pour supprimer les points-virgules. Il existe plusieurs façons de démarrer le débogueur. Vous pouvez accéder au menu Édition et à l'option « Déboguer le script ». 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 « Éditeur de script ». Vous pouvez également faire un clic droit et sélectionner « Déboguer le script ». Comme c'est la dernière méthode que je vous présente, je vais utiliser cette méthode. Ce débogueur est donc une seconde instance de JMP. L'instance d'origine est temporairement suspendue. Ainsi, si votre script requiert une interaction, comme une boîte de dialogue, la fenêtre du débogueur sera suspendue jusqu'à ce que vous exécutiez cette action. Le contrôle revient ensuite au débogueur. Une fois l'opération terminée, fermez-le simplement. Utilisez simplement la croix en haut à droite ou le bouton Arrêter de la barre d'outils pour revenir à l'instance d'origine de JMP. Pour commencer, je vais exécuter cette boucle telle quelle, sans point d'arrêt. Il y a deux boutons : « Exécuter » et « Exécuter sans point d'arrêt ». Comme je n'ai aucun point d'arrêt pour le moment, ils auront la même fonction. Si j'ai des points d'arrêt que je souhaite utiliser maintenant, j'utiliserai ce bouton tout à gauche. Je clique dessus. Cela me prévient que l'exécution du programme est terminée, sauf si je redémarre, ce que je ferai bientôt. La seule option est de fermer le débogueur. Mais avant de redémarrer, je veux aller dans l'onglet Locals, ici, dans le panneau ci-dessous où le script est affiché. L'espace de noms par défaut est Here, que j'ai invoqué à la ligne. 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 . Maintenant, je veux utiliser le débogueur pour examiner les valeurs de a, b et i à chaque étape de l'itération. Je vais donc cliquer sur le bouton Redémarrer. Et je veux ajouter un point d'arrêt à la ligne. Pour ce faire, je clique juste à droite du numéro de ligne. Et vous pouvez avoir autant de points d'arrêt que vous voulez. Dans ce script simple, nous n'en avons besoin que d'un seul. Donc, ce qui signifie que nous allons évaluer line et définir cet espace de noms Here. Ensuite, dans la boucle for, nous allons évaluer l'argument d'initialisation. Nous allons évaluer le test. Nous allons évaluer le corps de la boucle for, qui est simplement la fonction Show. Ensuite, nous ferons une pause, et nous verrons les valeurs dans l'onglet Locals. Revenons à cela. En cliquant à nouveau sur « Exécuter », nous mettrons à jour, effectuerons le test, exécuterons le corps du programme, mettrons en pause et verrons ces valeurs. Nous continuerons ainsi jusqu'à ce que le test échoue et que nous quittions la boucle. Je ne veux donc rien sélectionner. J'utiliserai le bouton « Exécuter » à gauche. Je ne souhaite pas exécuter le programme sans points d'arrêt. Je vais donc exécuter ceci. Vous pouvez voir que nous nous sommes arrêtés à la ligne après l'évaluation. Les valeurs de a, b et i sont respectivement « et ». Pour exécuter l'étape suivante de l'itération, je clique à nouveau sur le bouton « Exécuter ». Les valeurs de a, b et i sont respectivement « et ». Je peux exécuter une nouvelle fois. Nous atteignons les valeurs finales de a, b et i. Le message « Exécution terminée » s'affiche. Je peux redémarrer si je veux faire autre chose. Je peux cliquer sur le bouton « Arrêter ». Ou fermer avec le X en haut à droite. Je clique ensuite sur le bouton « Arrêter ». Cela me ramène à ma session JMP d'origine. Imaginons maintenant que nous ayons mesuré le temps de durcissement d'un composé en production. Chaque exécution est échantillonnée cinq fois pendant la production, et nous déterminons ce temps de durcissement pour chaque échantillon. Nous souhaitons examiner la distribution des temps de durcissement pour chaque échantillon. Dans le Journal du cours, dans la section « Données sur le temps de durcissement », je clique sur « Données sur le temps de durcissement ». Nous recommandons notamment, lors de la création de scripts, d'effectuer des tests interactifs afin de vérifier la faisabilité de ce que vous essayez de faire. Je souhaite donc obtenir des histogrammes pour le temps de durcissement. Je vais donc commencer par un exemple simple. Je clique sur « Analyser », puis sur « Distribution ». Je place le temps de durcissement dans le rôle « Y ». N'oubliez pas que le rôle ici est « Y ». Je clique sur « OK ». En regardant cela, je me dis : « C'est parfait. C'est exactement ce que je souhaite pour mes cinq distributions de temps de durcissement. » C'est donc la plateforme que je souhaite utiliser. J'ai créé un petit modèle de script pour recréer ce rapport. Je retourne à la fenêtre d'accueil et je l'ouvre. Ce script, avec le lancement de la plateforme de distribution, le rôle Y, puis la fonction de colonne avec la chaîne de caractères « Cure Time », recréera ce rapport. Je vais donc écrire une boucle basée sur ce modèle. Je vais fermer cette fenêtre « Cure Time », revenir à l'éditeur de scripts et effacer le contenu afin de pouvoir utiliser la même fenêtre. Je commencerai mon script avec « Names Default to Here ». Comme précédemment, je laisserai JMP nettoyer le script pour moi grâce au reformatage automatique. Ma boucle for commencera donc par l'argument c. J'attribuerai la valeur « c ». C'est la seule variable que je vais initialiser. Je saisirai une virgule. Le test sera « c » inférieur ou égal au nombre de colonnes. Pour rappel, si vous travaillez avec une table de données volumineuse, une bonne pratique consisterait à compter le nombre de colonnes en dehors de la boucle, à stocker le résultat dans une variable, puis à comparer c à cette variable. Dans ce cas, il s'agit de cinq colonnes, car nous commençons par la deuxième. Cela fait cinq colonnes au total. Je n'ai donc pas trop peur de refaire ce comptage à chaque fois. Mais une bonne pratique consisterait à extraire ce nombre. Je saisis une virgule après cela. L'argument de mise à jour sera simplement c, suivi de l'opérateur de post-incrémentation, des deux signes plus, d'une autre virgule, puis je saisis « Distribution » entre parenthèses, « y », j'ouvre à nouveau les parenthèses, je saisis « column », puis je mets simplement c (le compteur) entre ces parenthèses. Je pointe maintenant avec la flèche pour vérifier que toutes les parenthèses correspondent. En fait, s'il manquait une parenthèse fermante et que j'essayais de reformater, un message m'indiquait qu'il manquait quelque chose. Le reformatage est donc un moyen simple de déboguer. Je saisis le point-virgule, puis j'utilise le bouton « Reformater le script ». J'exécute ensuite le script. Avec le script tel quel, j'obtiens une fenêtre distincte pour chaque observation des valeurs de temps de traitement, car je lance la distribution (si l'on revient à la fenêtre de l'éditeur de scripts), je relance la plateforme de distribution à chaque étape de l'itération. Mais si vous connaissez la distribution (et je retourne au menu Analyser, je sélectionne « Distribution » et je place les cinq valeurs de temps de traitement dans le rôle Y), vous savez que vous pouvez les obtenir toutes dans la même fenêtre. Dans le Journal, un script pré-écrit boucle la construction du rôle Y avec tous les noms de colonnes et génère le même rapport avec les cinq distributions dans la même fenêtre. Avant de commencer, je souhaite fermer toutes les fenêtres de rapport. Dans la barre de menus, sous « Fenêtre », je sélectionne « Fermer tous les rapports ». Je recherche ensuite le Journal. Je clique sur le script « Distributions de temps de traitement ». Nous allons parcourir tout cela dans le débogueur. Je vais donc décrire le déroulement de chaque étape dans cet environnement de débogage plutôt que dans la fenêtre de l'éditeur de script. Je fais un clic droit et je sélectionne « Déboguer le script ». Rappelons qu'il existe plusieurs façons de lancer le débogueur. Je souhaite ajouter un point d'arrêt à la ligne pour observer le déroulement de chaque étape de l'itération, comme dans l'exemple simple précédent. Je souhaite également surveiller les variables c et yCol. Je vais donc accéder à l'onglet « Surveillance ». Je clique sur le signe plus vert pour ajouter une surveillance. Cela me permet d'observer des variables spécifiques dans mon script. Ici, je n'ai pas beaucoup de variables. Mais si vous avez un gros script avec beaucoup de variables, et que vous n'en avez que quelques-unes à surveiller pendant le débogage, l'onglet Surveillance est idéal. Je clique sur ce signe plus vert pour ajouter la surveillance. Je saisis la variable c et clique sur OK. Je souhaite également ajouter une surveillance sur la variable yCol. Je clique sur OK. Avant de commencer l'exécution, je souhaite expliquer brièvement le déroulement du script. Nous verrons cela lors de l'exécution du débogueur. La toute première ligne crée une variable appelée yCol. YCol va stocker le rôle d'analyse Y de la plateforme de distribution, suivi de parenthèses vides, car ma boucle va construire cette expression en ajoutant les noms de colonnes entre parenthèses après ce rôle Y. Je le mets entre guillemets avec l'expression « Expr », car si vous essayez simplement de saisir « yCol » et d'assigner la valeur « y » entre parenthèses, vous obtiendrez une erreur, car JMP ne reconnaît pas cette variable comme définie. Il ne la reconnaît pas comme une fonction. Je souhaite donc simplement récupérer cette valeur littérale stockée dans « yCol » sans que JMP essaie de l'évaluer. C'est ce que fait « line ». Les lignes suivantes constituent ma boucle for, où nous commençons par « column ». Nous itérons jusqu'à épuisement des colonnes. Dans un script de production, en particulier pour les tables de données volumineuses, nous comptons le nombre de colonnes en dehors de la boucle et le plaçons dans une variable. Le corps de la boucle for consiste simplement à ajouter la colonne « c », donc « column », à l'expression stockée dans « yCol ». « Insert Into » n'essaiera pas d'évaluer son premier argument. Je n'ai donc rien à faire de particulier avec la variable « yCol ». Elle l'examine simplement et exécute l'opération, dans ce cas, en ajoutant « column » entre parenthèses après « y ». La fonction Show sert uniquement d'illustration pour visualiser le déroulement de chaque étape. Sans le débogueur, cet élément apparaîtrait dans le journal. Je surveille donc les valeurs, ce qui équivaut à utiliser la fonction Show. Nous effectuons une mise à jour. Nous testons et, en supposant que c est toujours inférieur ou égal au nombre de colonnes, nous insérons la colonne suivante dans yCol. Une fois la boucle terminée, c'est-à-dire lorsqu'il n'y a plus de colonnes, nous obtenons une dernière ligne de code, que je vais aborder en détail. Nous souhaitons utiliser la fonction Insert pour modifier l'expression de distribution. Nous utilisons Insert plutôt qu'Insert Into, car distribution est un lancement de plateforme intégré à JMP. Un utilisateur ne peut pas modifier la distribution elle-même. Nous pouvons modifier une expression qui utilise distribution. Nous utilisons donc insert. Nous encapsulons ensuite distribution dans la fonction Expr, afin que JMP n'essaie pas d'évaluer distribution. Si je lançais – je souligne simplement ceci – si j'exécutais simplement cette partie de cette ligne de code, JMP dirait : « Hé, vous ne m'avez pas fourni l'argument requis dans le rôle Y. » Cela me donnerait donc le lancement de la plateforme de distribution. Ensuite, l'utilisateur ajouterait ses colonnes, mais nous ne… cela irait à l'encontre de l'objectif de notre script, n'est-ce pas ? Voilà donc le premier argument. Le deuxième argument – si je mets simplement yCol comme deuxième argument – JMP essaierait de l'évaluer. Et il verrait… vous verrez à quoi cela ressemblera après la boucle. Mais il ne verrait que ce Y majuscule avec des parenthèses et une série de noms de colonnes. Et JMP ne sait pas quoi en faire. Il ne reconnaît pas cela comme un nom de variable ou une fonction. Donc, Name Expr me permet de voir ce qui est stocké dans yCol sans essayer de l'évaluer. Et cette expression non évaluée stockée dans yCol est ce qui sera placé entre parenthèses après la distribution. Ensuite, comme, une fois cela fait, la distribution avec le rôle Y dans toutes les colonnes est toujours entre guillemets, nous encapsulons le tout dans Eval. Nous pourrons la parcourir en revenant à l'instance standard de JMP et la décomposer un peu plus. J'ai donc mes watchs. Actuellement, les variables sont indéfinies. C'est donc ce qui apparaît comme valeur. Passons au premier point d'arrêt. Après cette première exécution, avant la mise à jour, c stocke la valeur de. Et maintenant, yCol, au lieu d'un simple Y avec des parenthèses vides, contient Column Cure Time. Souvenez-vous de mon petit modèle que vous pouvez voir en arrière-plan – 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 réexécuter l'itération suivante. Maintenant, c est égal à et le rôle d'analyse y démarre deux colonnes de temps de traitement. Je vais réexécuter. Nous en avons maintenant trois. Et je peux continuer. Vous pouvez voir dans le journal en arrière-plan que ces résultats s'affichent grâce à la fonction Show. Je vais donc continuer ainsi jusqu'à la sortie de la boucle. Les cinq colonnes de temps de traitement sont stockées – et c'est plus facile à voir dans le journal de votre session JMP habituelle – mais elles sont désormais toutes stockées dans yCol. L'exécution du programme est terminée. Je clique sur « Arrêter » dans le débogueur. La dernière ligne a donc été évaluée. J'ai les distributions de temps de traitement avec les cinq histogrammes dans la même fenêtre. Revenons maintenant brièvement à l'éditeur de script pour aborder 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 vers l'extérieur. Je vais donc exécuter cette commande et créer plusieurs erreurs pour bien comprendre la raison de notre écriture. Je vais donc commenter la ligne pré-écrite. Pour revenir à la description que j'ai faite dans le débogueur, je vais saisir le mot « Insert ». Et si vous débutez en scripting, il peut être difficile de déterminer quand utiliser « Insérer » et quand utiliser « Insérer dans ». Mais là encore, dans ce cas, j'essaie de… je dois lancer une plateforme avec des rôles d'analyse spécifiques ou des colonnes spécifiques dans le rôle d'analyse. Or, je ne peux pas modifier une plateforme. Je ne peux modifier que les variables créées par l'utilisateur. On les appelle des valeurs L. Essayons donc ceci. Je vais saisir « Distribution » pour ce lancement, ouvrir les parenthèses, les fermer, saisir une virgule et essayer d'insérer « yCol ». Encore une fois, je suis naïf : je veux ce qui est stocké dans « yCol » et les parenthèses après « distribution ». Voyons ce qui se passe lorsque j'exécute cette ligne. [ERROR CHIME] J'obtiens une erreur : « Nom non résolu. Y lors de l'accès ou de l'évaluation de Y de toutes les colonnes. » Si je l'ignore, cela signifie simplement que JMP a essayé d'évaluer cela. Il n'a pas pu. Nous avons donc obtenu une erreur. L'opération n'a donc pas abouti. Encore une fois, la fonction que nous utilisons pour récupérer une expression stockée ou une expression entre guillemets sans l'évaluer est Name Expr. Je vais donc encapsuler… oups… ouvrir des parenthèses. Je vais encapsuler yCol dans Name Expr. Vous pouvez tester cela. Que se passe-t-il ? Si j'exécute simplement yCol, vous voyez l'erreur que nous venons d'obtenir. Si j'exécute Name Expr yCol, vous pouvez voir dans le journal… oups, j'essaie de redimensionner ceci. Vous pouvez voir dans le journal que JMP ne me renvoie pas d'erreur avec cela. Il renvoie simplement l'expression entre guillemets. Donc, lorsque j'essaie d'exécuter la ligne oh, eh bien, cette fois, le problème est que… JMP n'a pas rencontré de problème avec la variable yCol cette fois-ci. Mais maintenant, il a vu distribution sans la valeur requise. Je ne veux donc pas que JMP lance cette plateforme. Je vais annuler cela. Je veux encapsuler distribution dans Expr, donc JMP n'essaiera pas du tout de l'évaluer. Vous pouvez le mettre en surbrillance et l'exécuter pour le tester. OK, ça ne pose aucun problème. Lorsque j'exécute ceci, si je consulte le journal, je vois la ligne de code que j'ai exécutée. Voici le résultat : une distribution avec un rôle Y et toutes les colonnes qu'elle contient. La dernière étape, comme vous l'avez vu, consiste à encapsuler tout cela – et ce n'est qu'une façon de procéder – en encapsulant toute la ligne dans la fonction Eval. Je l'exécute. Il y a une autre fenêtre de distribution avec tous les rapports de distribution. Je voulais juste passer en revue quelques erreurs commises lors du développement, car je pense que cela aide les gens à comprendre pourquoi nous écrivons ces choses comme nous le faisons. Autre point : nous recommandons généralement… lors de ma première distribution du temps de traitement, si vous vous souvenez, je suis allé dans Analyser, Distribution, j'ai simplement placé le temps de traitement dans le rôle Y et j'ai cliqué sur OK. Nous recommandons souvent de récupérer le script que JMP écrivait pour vous et de l'utiliser comme base, dans ce cas précis, pour écrire cette boucle. La seule raison pour laquelle je ne l'ai pas fait avec les distributions est que la syntaxe, où je n'ai que le rôle d'analyse y, est une syntaxe plus ancienne. Si je clique sur le triangle rouge à côté de « distributions » et que je sélectionne « 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. Il y a donc 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 légèrement plus compliquée. Cependant, avec la plupart des plateformes, il est tout à fait possible d'utiliser le script écrit par JMP. Je vais fermer cette fenêtre de script. Nous allons voir un autre exemple d'interaction. Cette fois, je vais capturer ce script. Cependant, ma boucle est pré-écrite. Supposons que je souhaite examiner les cartes de contrôle des cinq valeurs de temps de durcissement. Je commence donc de manière interactive en accédant au menu Analyse. Sous Qualité et Processus, je sélectionne le Générateur de cartes de contrôle. Je souhaite placer le Jour dans ce sous-groupe et le Temps de durcissement dans le rôle Y. Le Générateur de cartes de contrôle affiche alors automatiquement les mesures individuelles et la plage mobile du Temps de durcissement. Voilà mon point de départ. Je clique sur Terminé pour masquer le Panneau de configuration. Ensuite, je clique sur le triangle rouge à côté du Générateur de cartes de contrôle et j'enregistre le script dans une fenêtre de script. Cette fenêtre de l'Éditeur de script contient désormais le Générateur de cartes de contrôle qui recréera ce résultat. Pour qu'il corresponde à mon script pré-écrit, je supprime la ligne qui définit la taille. Ce n'est pas obligatoire, bien sûr. Je simplifie simplement pour la démonstration. Ce que nous voyons, c'est que le Générateur de cartes de contrôle est le lancement de la plateforme. Ensuite, nous avons quelques options. Nous masquons le Panneau de configuration en utilisant ce booléen. Nous n'affichons pas les capacités. Il y a aussi ce rôle de variables. Ce rôle de variables possède un sous-groupe. Il sera le même pour toutes les valeurs de temps de traitement. Il a également un rôle Y avec le temps de traitement, dans ce cas, Temps de traitement. Nous devons donc créer trois éléments : le rôle d'analyse Y avec les colonnes de temps de traitement, puis la partie Variables en ajoutant – une fois toutes les colonnes de temps de traitement dans le rôle Y – ici. Ensuite, nous intégrons cette partie Variables dans le Générateur de cartes de contrôle. Revenons au journal et cliquons sur « Cartes de contrôle du temps de traitement ». Là encore, trois éléments composent le rôle d'analyse Y. Et c'est exactement ce que nous avons fait – ces lignes sont identiques à ce que nous avons vu dans la distribution. J'utilise simplement une convention de nommage différente pour les variables. Ensuite, nous voulons créer la partie Variables. J'utilise donc simplement la fonction Insertion. J'ai des variables avec le sous-groupe Jour, qui sera le même pour toutes les valeurs de temps de traitement. Mais je ne veux pas que JMP essaie d'évaluer les variables de type mot. J'obtiendrais une erreur. J'utilise donc Expr. Ensuite, comme dans la distribution de ce script, je récupère la liste des colonnes stockées dans yExpr et je l'ajoute à la variable. Ensuite, dans ce script, je crée le modèle de base pour le Générateur de cartes de contrôle sans la variable et je le stocke dans la variable ccExpr. Enfin, j'ajoute la ligne des variables. Si l'on observe ce code en arrière-plan, cette ligne des variables sera ajoutée au lancement du Générateur de cartes de contrôle. Dans ce cas, j'ai simplement utilisé Nom Expr pour ces deux variables, 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'encapsuler cette fonction Insertion dans eval. J'utilise ensuite cc dans mon script, ce qui évaluera l'expression générée. Passons maintenant au débogueur. Je fais un clic droit et sélectionne « Déboguer ». Je vais accéder à l'onglet « Observation ». Je souhaite supprimer les variables d'observation actuelles de mes autres scripts. Je clique donc sur le bouton pour supprimer toutes les observations. J'ajoute ensuite quatre observations pour les quatre variables de ce script. Je clique sur le signe plus vert. Je saisis d'abord « yExpr » et je clique sur OK. Je clique à nouveau sur le signe plus vert et j'ajoute « varExpr ». Peu importe que j'aie mis une majuscule, mais je souhaite simplement être cohérent avec le texte du script. Je clique sur OK. Je souhaite ajouter « ccExpr ». Je clique sur OK. Enfin, j'ajoute « cc » et je clique sur OK. Je vais placer trois points d'arrêt pour m'arrêter à trois endroits différents. Le premier point d'arrêt sera sur la ligne. Cela me permettra de voir ce qui se passe à chaque étape de l'itération. Le point d'arrêt suivant sera sur la ligne. Nous marquerons une pause pour voir ce qui est stocké dans varExpr. Enfin, nous placerons un point d'arrêt sur la ligne pour voir ce qui est stocké dans cc. Une fois ce point fermé, il sera évalué. J'utiliserai le bouton « Pas à pas » pour exécuter le débogueur. Je clique dessus. La ligne est évaluée et nous accédons à la boucle. Dans l'onglet « Surveiller » ci-dessous, vous pouvez voir ce qui est stocké et yExpr. En cliquant à nouveau sur « Pas à pas », nous accédons au premier point d'arrêt. En cliquant à nouveau sur « Pas à pas », vous verrez que yExpr contient « Temps de traitement de colonne ». Je clique à nouveau sur « Pas à pas » pour accéder à ce point d'arrêt. Cliquez à nouveau. Nous avons maintenant inséré « Temps de traitement » dans ce rôle Y. Je continue ainsi jusqu'à ce que nous ayons terminé avec la boucle for. Si vous visualisez ceci, vous constaterez que les cinq colonnes de temps de traitement sont dans ce rôle Y. La ligne définit varExpr. Il s'agit donc des variables avec le sous-groupe Jour, puis du rôle Y pour toutes ces colonnes. Je clique à nouveau sur « Pas à pas », ce qui nous amène à l'emplacement où nous avons défini ccExpr. Vous pouvez également constater, dans l'onglet Surveillance, que le lancement du Générateur de cartes de contrôle est enregistré, mais qu'il manque un élément essentiel. La ligne est l'endroit où nous assemblons tout cela. Je clique à nouveau sur « Pas à pas ». Si vous souhaitez examiner cela, les valeurs stockées dans varExpr sont ajoutées au Générateur de cartes de contrôle, à l'Affichage du Panneau de configuration, etc. Je clique à nouveau sur « Pas à pas ». L'exécution du programme s'arrête. Je clique sur « Arrêter ». Retour à mon mode normal. Dans une session JMP, vous pouvez voir que j'ai les graphiques de mesure individuelle et de plage mobile pour votre temps de durcissement, etc. Ces exemples illustrent l'utilisation de la fonction For, des fonctions Expr et Name Expr avec Insert, et l'utilisation du débogueur dans ces contextes simples. Je vais revenir au Journal et cliquer sur « Supprimer tout » et « Ne rien enregistrer » sans enregistrer les modifications dans mes fenêtres de script. Ceci conclut cette démonstration.