
Diese Demonstration zeigt, wie man die For-Funktion für Iterationen verwendet. Bisher haben wir den Skript-Editor mit dem Protokoll verwendet, um unsere Skripte zu testen und die Ergebnisse zu beobachten. Jetzt wollen wir uns das mit dem Debugger ansehen. Ich habe ein Skript-Editor-Fenster geöffnet und gebe „Names Default to Here“ ein. Ich setze den Boolean-Wert ein. Ich füge jetzt keine Leerzeichen hinzu. Ich tippe alles in eine Zeile und überlasse die automatische Neuformatierung dem Rest. Ich tippe ein Semikolon und dann „For“, „öffnende Klammern“, „a gleich Semikolon“, „b gleich Semikolon“, „i gleich Komma“ – ich initialisiere also drei Variablen. Dann gebe ich „test“ ein, also „i kleiner als Komma“, und aktualisiere dann sowohl „b“ als auch „i“. Also wird b aktualisiert – b + gleich. Das ist die In-Place-Zuweisungsfunktion, die Additionsfunktion, die den aktuellen Wert von b überschreibt und um ein Semikolon erhöht, da ich zwei Dinge aktualisiere. Dann folgt i++, wobei ++ wiederum der Post-Inkrement-Operator ist, der i direkt addiert. Und dann folgt ein Komma, und der Hauptteil dieser einfachen Schleife ist die Show-Funktion. Ich zeige einfach a, Komma, b, Komma – und dann rufe ich die Multiplikationsfunktion mit dem Operator auf – also a mal b. Dann schließe ich alle Klammern, füge das Semikolon hinzu, klicke mit der rechten Maustaste und wähle „Neu formatieren“. Nun zu einem Punkt – nun ja, zwei Dinge sind hier zu beachten: Erstens hat JMP einige zusätzliche Semikolons für mich hinzugefügt. Es hat erkannt, dass ich im ersten Argument Funktionen zusammenfügte. Es hat erkannt, dass ich im dritten Argument Funktionen zusammenfügte. Und deshalb hat es diese Semikolons hinzugefügt. Sie sind nicht schädlich. In der Praxis würde ich diese wahrscheinlich aus meinem Skript entfernen, da sie nicht notwendig sind, es sei denn, ich füge weitere Funktionen hinzu. Außerdem könnte ich es so umstellen, dass jedes Argument eine eigene Zeile hat. Ich möchte aber, dass es mit dem übereinstimmt, was ich im Kurs-PDF habe, wenn wir den Debugger öffnen. Daher belasse ich es so, wie JMP es neu formatiert hat, nur dass ich die Semikolons entferne. Es gibt mehrere Möglichkeiten, den Debugger zu starten. Im Menü „Bearbeiten“ gibt es die Option „Skript debuggen“. Die Tastenkombination lautet Strg+Umschalt+R. Sie können im Skript-Editor auf die Schaltfläche „Debuggen“ in der Symbolleiste klicken. Oder Sie klicken mit der rechten Maustaste und wählen „Skript debuggen“. Da dies die letzte Instanz ist, die ich Ihnen zeige, verwende ich diese Methode. Dieser Debugger ist also eine zweite Instanz von JMP. Die ursprüngliche Instanz von JMP ist vorübergehend deaktiviert. Wenn also eine Interaktion, beispielsweise ein Dialogfeld, für Ihr Skript erforderlich ist, wird das Debugger-Fenster angehalten, bis Sie diese Aktion ausführen. Sobald dies abgeschlossen ist, wird die Steuerung an den Debugger zurückgegeben. Sobald Sie den Debugger beendet haben, schließen Sie ihn einfach. Klicken Sie dazu auf das X in der oberen rechten Ecke oder auf die Stopp-Schaltfläche hier in der Symbolleiste. Damit kehren Sie zur ursprünglichen JMP-Instanz zurück. Zunächst führe ich diese Schleife einfach so aus, ohne Haltepunkte zu setzen. Es gibt zwei Schaltflächen: „Ausführen“ und „Ohne Haltepunkte ausführen“. Da ich derzeit keine Haltepunkte habe, haben diese die gleiche Funktion. Wenn ich Haltepunkte habe, die ich jetzt verwenden möchte, klicke ich auf die Schaltfläche ganz links. Dadurch wird die Programmausführung beendet, sofern ich nicht neu starte, was ich in Kürze tun werde. Die einzige Möglichkeit ist, den Debugger zu schließen. Bevor ich neu starte, gehe ich zur Registerkarte „Lokal“ hier unten im Panel, wo das Skript angezeigt wird. Der Standard-Namespace ist „Here“, den ich in Zeile 1 aufgerufen habe. Sie sehen, dass am Ende des Skripts der Wert von a ist. Der Wert von b ist. Und der Wert von i ist. Jetzt möchte ich den Debugger verwenden, um die Werte von a, b und i in jedem Schritt der Iteration zu überprüfen. Ich klicke also auf die Schaltfläche „Neu starten“. Und ich möchte einen Haltepunkt in Zeile 1 einfügen. Dazu klicke ich rechts neben die Zeilennummer. Sie können beliebig viele Haltepunkte setzen. In diesem einfachen Skript benötigen wir eigentlich nur einen. Das bedeutet, wir werten Zeile 1 aus und setzen den Namespace „Here“. Anschließend werten wir innerhalb der For-Schleife das Initialisierungsargument aus. Wir werten den Test aus. Wir werten den Hauptteil der For-Schleife aus, der lediglich die Show-Funktion enthält. Dann pausieren wir und sehen die Werte im Tab „Lokale Werte“. Ich wechsle zurück dorthin. Wenn ich dann erneut auf „Ausführen“ klicke, aktualisieren wir, führen den Test aus, führen den Hauptteil aus, pausieren und sehen die Werte. Und so geht es weiter, bis der Test fehlschlägt und wir die Schleife verlassen. Ich möchte also nichts ausgewählt haben. Ich verwende den linken „Ausführen“-Button. Auch hier möchte ich die Ausführung nicht ohne Haltepunkte durchführen. Also führe ich Folgendes aus. Sie sehen, dass wir nach der Auswertung bei Zeile 1 angehalten haben. Die Werte von a, b und i lauten bzw. . Um den nächsten Schritt der Iteration auszuführen, klicke ich erneut auf „Ausführen“. Jetzt sehe ich die Werte von a, b und i lauten bzw. . Ich kann das Programm noch einmal ausführen. Wir erreichen die endgültigen Werte von a, b und i. Ich erhalte die Meldung, dass die Programmausführung beendet wurde. Ich kann das Programm neu starten, wenn ich etwas anderes tun möchte. Ich klicke auf „Stopp“. Oder ich schließe mit dem X oben rechts. Dann klicke ich auf „Stopp“. Damit kehre ich zu meiner ursprünglichen JMP-Sitzung zurück. Stellen wir uns vor, wir haben die Aushärtezeit einer in Produktion befindlichen Verbindung gemessen. Jeder Lauf wird fünfmal während der Produktion beprobt, und wir bestimmen die Aushärtezeit für jede Probe. Wir möchten die Verteilung der Aushärtezeiten für jede Probe betrachten. Im Kursjournal klicke ich im Abschnitt „Aushärtezeitdaten“ auf „Aushärtezeitdaten“. Wir empfehlen beim Skripting, Dinge interaktiv auszuprobieren, um die Machbarkeit des Ziels zu überprüfen. Ich möchte Histogramme für die Aushärtezeit bis . Ich beginne mit einem einfachen Beispiel. Ich gehe zum Menü „Analysieren“, wähle „Verteilung“ und weise „Aushärtezeit“ der Rolle „Y“ zu. Und denken Sie daran, dass die Rolle hier Y ist. Ich klicke auf „OK“. Das sieht man mir an und ich denke: „Das ist großartig.“ Genau das benötige ich für alle fünf meiner Aushärtezeitverteilungen. Das ist also die Plattform, die ich verwenden möchte. Ich habe eine kleine Skriptvorlage erstellt, die diesen Bericht neu erstellt. Ich gehe zurück zum Startfenster und öffne es. Dieses Skript mit dem Start der Verteilungsplattform, der Y-Rolle und der Spaltenfunktion mit der Aushärtezeit als Zeichenfolge erstellt den Bericht neu. Ich schreibe eine Schleife basierend auf dieser Vorlage. Ich schließe das Aushärtezeitfenster, gehe zurück zum Skripteditor und lösche den Inhalt, um dasselbe Fenster verwenden zu können. Ich beginne mein Skript erneut mit „Namen standardmäßig hier“. Wie zuvor überlasse ich JMP die automatische Neuformatierung. Meine For-Schleife beginnt mit dem Argument c. Ich weise c den Wert zu. Das ist die einzige Variable, die ich initialisiere. Ich setze ein Komma. Der Test ist c kleiner gleich der Anzahl der Spalten. Zur Erinnerung: Bei großen Datentabellen empfiehlt es sich, die Spalten außerhalb der Schleife zu zählen, das Ergebnis in einer Variable zu speichern und diese Variable als Vergleichsvariable für c zu verwenden. In diesem Fall sind es fünf Spalten, da wir mit der zweiten beginnen. Insgesamt also fünf Spalten. Ich muss also nicht jedes Mal neu zählen. Es empfiehlt sich jedoch, das Ergebnis herauszuziehen. Ich setze danach ein Komma. Das Aktualisierungsargument ist c, der Post-Inkrement-Operator, die beiden Pluszeichen, ein weiteres Komma. Anschließend tippe ich „Distribution“ in Klammern, y, öffne die Klammern erneut, gebe „column“ ein und setze dann c – den Zähler – in diese Klammern. Mit dem Pfeil stelle ich sicher, dass alle Klammern übereinstimmen. Wenn hier eine schließende Klammer fehlte und ich versuchte, neu zu formatieren, erhielte ich eine Meldung, dass etwas fehlte. Neuformatierung ist also eine einfache Möglichkeit zur Fehlerbehebung. Ich tippe das Semikolon ein und klicke dann auf „Skript neu formatieren“. Anschließend führe ich das Skript aus. So wie das Skript geschrieben ist, erhalte ich ein separates Fenster für jede Beobachtung der Aushärtezeitwerte, da ich die Verteilung starte – wenn wir zum Skript-Editor zurückkehren –, starte ich die Verteilungsplattform bei jedem Schritt der Iteration erneut. Wenn Sie mit der Verteilung vertraut sind – und ich gehe zurück zum Menü „Analysieren“, wähle „Verteilung“ und füge alle fünf Aushärtezeitwerte in die Y-Rolle ein. Wenn Sie mit der Verteilung vertraut sind, wissen Sie, dass Sie alle diese Werte im selben Fenster erhalten. Im Journal befindet sich ein vorgefertigtes Skript, das die Y-Rolle mit allen Spaltennamen in einer Schleife erstellt und denselben Bericht mit allen fünf Verteilungen im selben Fenster erstellt. Bevor ich damit beginne, schließe ich alle Berichtsfenster. Ich gehe in die Menüleiste und wähle unter „Fenster“ die Option „Alle Berichte schließen“. Dort finde ich das Journal. Ich klicke auf das Skript „Cure Time Distributions“. Wir gehen das Ganze im Debugger durch. Was in jedem Schritt passiert, erkläre ich in der Debugger-Umgebung und nicht im Skript-Editor. Ich klicke mit der rechten Maustaste und wähle „Skript debuggen“. Es gibt mehrere Möglichkeiten, den Debugger zu starten. Ich füge einen Haltepunkt an der Zeile ein, um zu sehen, was in jedem Schritt der Iteration passiert, wie im vorherigen einfachen Beispiel. Außerdem füge ich eine Überwachung für die Variablen „c“ und „yCol“ hinzu. Ich gehe also zur Registerkarte „Überwachen“ und klicke auf das grüne Pluszeichen, um eine Überwachung hinzuzufügen. So kann ich mir bestimmte Variablen in meinem Skript ansehen. Ich habe hier nicht viele Variablen. Wenn Sie jedoch ein umfangreiches Skript mit vielen Variablen haben und beim Debuggen nur wenige im Auge behalten müssen, ist die Registerkarte „Überwachen“ eine hervorragende Möglichkeit. Ich klicke auf das grüne Pluszeichen, um die Überwachung hinzuzufügen. Ich gebe die Variable „c“ ein und klicke auf „OK“. Anschließend füge ich auch eine Überwachung für die Variable „yCol“ hinzu und klicke auf „OK“. Bevor ich das Skript ausführe, möchte ich kurz erläutern, was im Skript passiert. Das sehen wir uns später im Debugger-Prozess an. Die allererste Zeile erstellt eine Variable namens „yCol“. Und yCol speichert die Y-Analyserolle der Distributionsplattform, gefolgt von leeren Klammern. Meine Schleife erstellt diesen Ausdruck, indem sie die Spaltennamen in die Klammern nach der Y-Rolle einfügt. Ich setze sie mit dem Ausdruck in Anführungszeichen, denn wenn Sie einfach „yCol“ sagen und den Wert „y“ mit Klammern dahinter zuweisen, erhalten Sie eine Fehlermeldung, da JMP dies nicht als definierte Variable erkennt. Es erkennt es nicht als Funktion. Ich möchte also nur diesen in yCol gespeicherten Literalwert erhalten, ohne dass JMP ihn auswertet. Genau das macht die Zeile. Die Zeilen bis sind meine For-Schleife, in der wir mit der Spalte beginnen. Wir iterieren, bis wir keine Spalten mehr haben. Und auch in einem Produktionsskript, insbesondere bei größeren Datentabellen, wollen wir die Anzahl der Spalten außerhalb der Schleife zählen und in eine Variable schreiben. Der Hauptteil der For-Schleife fügt dann einfach Spalte c, also Spalte c, in den in yCol gespeicherten Ausdruck ein. „Insert Into“ versucht nicht, das erste Argument auszuwerten. Daher muss ich mit der Variable „yCol“ nichts Besonderes tun. Die Variable betrachtet sie einfach und führt dann die Operation aus. In diesem Fall wird „column“ in die Klammern nach „y“ eingefügt. Die Funktion „Show“ dient nur zur Veranschaulichung, damit wir sehen, was in jedem Schritt passiert. Ohne den Debugger würde dieser Schritt im Protokoll angezeigt. Ich beobachte also die Werte, was der Verwendung der Funktion „Show“ entspricht. Wir aktualisieren. Wir testen und fügen, vorausgesetzt, c ist immer noch kleiner oder gleich der Anzahl der Spalten, die nächste Spalte in „yCol“ ein. Sobald die Schleife abgeschlossen ist, also keine Spalten mehr vorhanden sind, erhalten wir eine letzte Codezeile, die ich im Folgenden erläutern werde. Wir möchten die Funktion „Insert“ verwenden, um den Verteilungsausdruck zu ändern. Wir verwenden „Insert“ anstelle von „Insert Into“, da „Distribution“ ein in JMP integrierter Plattformstart ist. Ein Benutzer kann die Verteilung selbst nicht ändern. Wir können einen Ausdruck ändern, der die Verteilung verwendet. Wir verwenden also „insert“. Anschließend binden wir „distribution“ in die Funktion „Expr“, damit JMP die Verteilung nicht auswerten muss. Wenn ich – ich möchte das nur hervorheben – diesen Codeabschnitt ausführen würde, würde JMP sagen: „Hey, Sie haben mir das erforderliche Argument in der Rolle „Y“ nicht gegeben.“ Ich würde also die Verteilungsplattform starten. Der Benutzer würde dann seine Spalten eingeben, aber wir würden das nicht tun – das würde den Zweck unseres Skripts zunichtemachen, nicht wahr? Das ist also das erste Argument. Das zweite Argument – wenn ich einfach „yCol“ als zweites Argument eingebe, würde JMP versuchen, das auszuwerten. Und es würde sehen – Sie sehen, wie es nach der Schleife aussieht. Es würde aber nur das große „Y“ mit Klammern und eine Reihe von Spaltennamen sehen. Und damit kann JMP nichts anfangen. Es erkennt das nicht als Variablennamen oder Funktion. Mit „Name Expr“ kann ich also den gespeicherten Inhalt und „yCol“ einsehen, ohne es auswerten zu müssen. Dieser in yCol gespeicherte, nicht ausgewertete Ausdruck wird nach der Verteilung in Klammern gesetzt. Da die Verteilung mit der Y-Rolle in allen Spalten weiterhin in Anführungszeichen steht, wird das Ganze in Eval eingeschlossen. Wir können es in der regulären JMP-Instanz durchgehen und es etwas genauer analysieren. Ich habe meine Uhren. Die Variablen sind derzeit undefiniert. Das wird als Wert angezeigt. Gehen wir zum ersten Haltepunkt. Nach diesem ersten Durchlauf vor der Aktualisierung speichert c den Wert von. yCol enthält nun nicht nur ein Y mit leeren Klammern, sondern die Spalte „Aushärtezeit“. Erinnern Sie sich an meine kleine Vorlage im Hintergrund – ich kann nicht dorthin navigieren, da der Debugger aktiv ist –, aber das würde diese Verteilung für nur eine Spalte erzeugen. Ich führe also die nächste Iteration erneut aus. Jetzt ist c gleich und die Y-Analyserolle startet zwei Aushärtezeitspalten. Ich führe es erneut aus. Jetzt haben wir drei. Und ich kann damit weitermachen. Sie sehen im Hintergrundprotokoll, dass diese Ergebnisse dank der Show-Funktion angezeigt werden. Ich mache also weiter, bis wir die Schleife verlassen. Alle fünf Aushärtezeitspalten sind gespeichert – was im Protokoll Ihrer regulären JMP-Sitzung leichter zu erkennen ist –, aber sie sind jetzt alle in yCol gespeichert. Die Programmausführung ist damit beendet. Ich klicke im Debugger auf „Stopp“. Die letzte Zeile ist nun ausgewertet. Ich habe die Aushärtezeitverteilungen mit allen fünf Histogrammen im selben Fenster. Kehren wir nun kurz zum Skripteditor zurück, um diese Zeile zu besprechen. Ich halte es für wichtig, darüber nachzudenken, wie wir Ausdrücke von Grund auf neu erstellen. Ich werde das ausführen und eine Reihe von Fehlern erzeugen, um sicherzustellen, dass klar ist, warum wir das so geschrieben haben. Ich werde die vorgefertigte Zeile auskommentieren. Um auf meine Beschreibung zurückzukommen: In der Debugger-Instanz tippe ich „Einfügen“. Wenn Sie neu im Skripting sind, müssen Sie vielleicht etwas herumexperimentieren, wann Sie „Einfügen“ und wann „Einfügen in“ verwenden sollen. In diesem Fall möchte ich eine Plattform mit bestimmten Analyserollen oder bestimmten Spalten in der Analyserolle starten. Ich kann die Plattform jedoch nicht ändern. Ich kann nur benutzerdefinierte Variablen, sogenannte L-Werte, ändern. Versuchen wir Folgendes: Ich tippe „Verteilung“ für den Start, öffne und schließe die Klammern, setze ein Komma und versuche, „yCol“ einzufügen. Auch hier gehe ich von einer naiven Perspektive aus: Ich möchte, was in „yCol“ und den Klammern nach der Verteilung gespeichert ist. Sehen wir uns also an, was passiert, wenn ich diese Zeile ausführe. [FEHLER-TON] Ich erhalte die Fehlermeldung „Name nicht aufgelöst. Y beim Zugriff oder bei der Auswertung von Y aller Spalten.“ Wenn ich das also ablehne, bedeutet das nur, dass JMP versucht hat, dies auszuwerten. Es konnte nicht. Es gab also einen Fehler. Der Vorgang wurde also nicht abgeschlossen. Die Funktion, die wir verwenden, wenn wir einen gespeicherten Ausdruck oder einen Ausdruck in Anführungszeichen abrufen müssen, ohne ihn auszuwerten, ist also „Name Expr“. Ich setze also – ups – öffnende Klammern ein. Ich setze yCol in „Name Expr“. Sie können das testen. Was passiert also? Wenn ich nur „yCol“ ausgeführt habe, haben Sie den Fehler gesehen. Wenn ich „Name Expr yCol“ ausführe, sehen Sie im Protokoll: „Ups, ich versuche, die Größe zu ändern.“ Sie sehen im Protokoll, dass JMP mir keinen Fehler anzeigt. Es gibt nur den Ausdruck in Anführungszeichen zurück. Wenn ich jetzt versuche, die Zeile „Oh, nun ja, dieses Mal“ auszuführen, ist das Problem, dass – JMP hatte diesmal kein Problem mit der Variable „yCol“. Aber jetzt hat es eine Verteilung ohne den erforderlichen Wert gesehen. Ich möchte also nicht, dass JMP diese Plattform startet. Ich breche das ab. Ich möchte die Verteilung in Expr einbetten, damit JMP sie überhaupt nicht auswertet. Sie können das auch markieren und testen. Das verursacht keine Probleme. Wenn ich das jetzt ausführe und ins Protokoll schaue, sehe ich die Codezeile, die ich ausgeführt habe. Hier ist das Ergebnis: die Verteilung mit der Rolle „Y“ und allen darin enthaltenen Spalten. Der letzte Schritt, wie Sie in der Zeile gesehen haben, besteht darin, das Ganze einzubetten – und das ist nur eine Möglichkeit – indem die gesamte Zeile in die Eval-Funktion eingebunden wird. Und die führe ich aus. Es gibt ein weiteres Verteilungsfenster mit allen Verteilungsberichten. Ich möchte nur einige Fehler bei der Entwicklung durchgehen, weil ich denke, dass das den Leuten hilft zu verstehen, warum wir diese Dinge so schreiben, wie wir es tun. Ich möchte noch etwas erwähnen: Wir empfehlen generell, bei der ersten Aushärtezeitverteilung – wie Sie sich erinnern – „Analysieren, Verteilung“ zu verwenden, „Aushärtezeit“ in die Y-Rolle einzufügen und auf „OK“ zu klicken. Wir empfehlen oft, einfach das von JMP erstellte Skript zu verwenden und es als Grundlage für diese Schleife zu verwenden. Der einzige Grund, warum ich das bei den Verteilungen nicht getan habe, ist die ältere Syntax, die die Y-Analyserolle verwendet. Wenn ich auf das rote Dreieck neben den Verteilungen gehe und „Skript im Skriptfenster speichern“ auswähle, gibt die neuere Syntax für jede Spalte einzeln an, ob es sich um eine kontinuierliche oder nominale Verteilung handelt. Daher ist die Schleife etwas aufwendiger als die ältere Syntax. Die ältere Syntax funktioniert einwandfrei. Ich würde aber wahrscheinlich die neuere Syntax empfehlen. Die Schleife ist nur etwas komplizierter. Für die meisten Plattformen reicht es jedoch aus, das von JMP erstellte Skript zu verwenden. Ich schließe dieses Skriptfenster. Wir sehen uns noch ein Beispiel für interaktives Arbeiten an. Dieses Mal werde ich das Skript erfassen. Meine Schleife ist jedoch bereits vorgefertigt. Nehmen wir an, ich möchte mir die Regelkarten aller fünf Aushärtezeitwerte ansehen. Ich beginne interaktiv im Menü „Analysieren“. Unter „Qualität und Prozess“ wähle ich „Regelkarten-Generator“. Ich füge „Tag“ der Untergruppe und „Aushärtezeit“ der Y-Rolle hinzu. Der Regelkarten-Generator erstellt automatisch die einzelnen Messwerte und das gleitende Spannweitendiagramm der Aushärtezeit. Das ist mein Ausgangspunkt. Ich klicke auf „Fertig“, um das Bedienfeld auszublenden. Anschließend klicke ich auf das rote Dreieck neben „Regelkarten-Generator“ und speichere „Skript in Skriptfenster“. Dieses Skript-Editor-Fenster enthält nun den Regelkarten-Generator, der dieses Ergebnis reproduziert. Um es mit meinem vorgefertigten Skript abzugleichen, lösche ich die Zeile, die die Größe festlegt. Das ist natürlich nicht zwingend erforderlich. Ich vereinfache das nur zu Demonstrationszwecken. Wir sehen also den Kontrolldiagramm-Generator, der als Plattformstart dient. Dort haben wir einige Optionen. Wir blenden das Control Panel mithilfe der Booleschen Funktion aus. Wir zeigen keine Funktion an. Dann gibt es die Variablenrolle. Diese Variablenrolle hat eine Untergruppe. Diese ist für alle Aushärtezeitwerte gleich. Und dann gibt es eine Y-Rolle mit der Aushärtezeit, in diesem Fall „Aushärtezeit“. Wir müssen also drei Dinge aufbauen: die Y-Analyserolle mit den Aushärtezeitspalten und den Variablenteil, indem wir – sobald wir alle Aushärtezeitspalten in der Y-Rolle haben – diesen hier hinzufügen. Und dann fügen wir diesen Variablenteil in den Kontrolldiagramm-Generator ein. Gehen wir also zurück zum Journal und klicken auf „Aushärtezeit-Kontrolldiagramme“. Auch hier sind es drei Teile, die die Y-Analyserolle aufbauen. Und genau das haben wir getan – diese Zeilen entsprechen genau dem, was wir in der Verteilung gesehen haben. Ich verwende lediglich eine andere Namenskonvention für die Variablen. Anschließend erstellen wir den Variablenteil. Dazu verwende ich die Einfügefunktion. Ich habe Variablen mit der Untergruppe „Tag“, die für alle Aushärtezeitwerte gleich ist. Ich möchte jedoch nicht, dass JMP versucht, die Wortvariablen auszuwerten. Ich erhalte eine Fehlermeldung. Daher verwende ich „Expr“. Genau wie in der Verteilung in diesem Skript rufe ich die in „yExpr“ gespeicherte Spaltenliste ab und füge sie dem Variablenteil hinzu. Anschließend erstelle ich in diesem Skript die grundlegende Vorlage für den Control Chart Builder ohne den Variablenteil und speichere diese in der Variable „ccExpr“. Schließlich füge ich die Variablenzeile hinzu. Wenn wir uns also den Code im Hintergrund ansehen, wird diese Variablenzeile beim Start des Control Chart Builders hinzugefügt. In diesem Fall habe ich für beide Ausdrücke einfach „Name Expr“ verwendet, da es sich um bereits definierte Ausdrücke in Anführungszeichen handelt. Das Ergebnis speichere ich in einer eigenen Variable, anstatt die Insert-Funktion in „eval“ einzuschließen. Anschließend verwende ich „cc“ in meinem Skript, um den erstellten Ausdruck auszuwerten. Nun führen wir den Debugger durch. Ich klicke mit der rechten Maustaste und wähle „Debuggen“. Ich navigiere zum Reiter „Überwachen“. Ich möchte die aktuellen Überwachungsvariablen aus meinen anderen Skripten entfernen und klicke daher auf „Alle Überwachungen löschen“. Anschließend füge ich vier Überwachungen für die vier Variablen in diesem Skript hinzu. Dazu klicke ich auf das grüne Pluszeichen. Zuerst gebe ich „yExpr“ ein und klicke auf „OK“. Dann klicke ich erneut auf das grüne Pluszeichen und füge „varExpr“ hinzu. Die Großschreibung spielt keine Rolle, ich möchte aber die Konsistenz mit dem Text im Skript wahren. Also klicke ich auf „OK“. Ich möchte ccExpr hinzufügen. Klicken Sie auf „OK“. Abschließend füge ich cc hinzu und klicke auf „OK“. Ich setze drei Haltepunkte, da ich hier an drei verschiedenen Stellen anhalten möchte. Der erste Haltepunkt ist „online“. So kann ich sehen, was in jedem Schritt der Iteration passiert. Der nächste Haltepunkt ist „online“. Wir pausieren, um zu sehen, was in varExpr gespeichert ist. Abschließend setzen wir einen Haltepunkt „online“, um zu sehen, was in cc gespeichert ist. Sobald wir das schließen, wird es ausgewertet. Ich verwende die Schaltfläche „Step Over“, um den Debugger auszuführen. Ich klicke darauf. Die Zeile wird ausgewertet, und wir gelangen zur Schleife. Im Reiter „Beobachten“ unten sehen Sie, was gerade in yExpr gespeichert ist. Wenn ich dann erneut auf „Step Over“ klicke, gelangen wir zum ersten Haltepunkt. Wenn ich ein drittes Mal auf „Step Over“ klicke, sehen Sie, dass yExpr die Spalte „Cure Time“ enthält. Ich klicke erneut auf „Step Over“, um zu diesem Haltepunkt zu gelangen. Klicken Sie erneut. Jetzt haben wir „Cure Time“ in die Y-Rolle eingefügt. Ich mache das so weiter, bis wir mit der For-Schleife fertig sind. Wenn Sie das hier sehen, sehen Sie, dass alle fünf Spalten für die Aushärtezeit in dieser Y-Rolle sind. Die Zeile definiert nun „varExpr“. Das sind nun Variablen mit der Untergruppe „Day“ und dann die Y-Rolle mit all diesen Spalten. Ich klicke erneut auf „Step Over“, um zu der Stelle zu gelangen, an der wir „ccExpr“ definiert haben. Sie sehen auch im Reiter „Watch“, dass dort nur der Start des Control Chart Builders gespeichert ist, aber ein wichtiger Teil fehlt. In der Zeile fügen wir alles zusammen. Ich führe also noch einmal „Step Over“ aus. Und falls Sie das noch genauer betrachten möchten: Der Control Chart Builder, „Show Control Panel“ usw. haben die in „varExpr“ gespeicherten Werte hinzugefügt. Ich klicke erneut auf „Step Over“. Die Programmausführung wird beendet. Ich klicke auf „Stopp“. Und jetzt zurück zu meinem normalen In der JMP-Sitzung sehen Sie die einzelnen Mess- und gleitenden Spannweitendiagramme für Ihre Aushärtezeit usw. In diesen Beispielen betrachten wir die Verwendung der For-Funktion, die Verwendung der Funktionen Expr und Name Expr mit Einfügen und die Verwendung des Debuggers in diesen einfachen Kontexten. Ich gehe zurück zum Journal und klicke auf „Alles löschen, Nichts speichern“, ohne die Änderungen in meinen Skriptfenstern zu speichern. Damit ist diese Demonstration abgeschlossen.