
Diese Demonstration zeigt, wie Datenspalten und -zeilen verwaltet werden. Ich verwende ein Skript, um zunächst eine neue Datentabelle mit einer Spalte zu erstellen. Im Kursjournal klicke ich im Abschnitt „Neue Datentabelle und Spalte erstellen“. Sie sehen, dass wir die Funktion „Neue Tabelle“ verwenden. Die erstellte Objektreferenz der Datentabelle speichern wir in der Variable „dt“. Die Tabelle heißt „Testdaten“. Ich verwende eine einzelne Spalte namens „pH“. Der Datentyp ist „numerisch“ und der Modellierungstyp „kontinuierlich“. Anschließend verwende ich das Argument „Werte“, das ich auch als „Werte festlegen“ bezeichnen könnte – beides ist synonym –, um die Werte mit dem Indexoperator, einem Infixoperator, zu füllen. Wir zählen also in Einerschritten von eins bis sieben. Da ich diese Werte liefere, ist dies die Zeilenanzahl dieser Datentabelle. Es gibt ein optionales Argument, um eine bestimmte Zeilenanzahl hinzuzufügen, das ich verwenden könnte, wenn ich nicht bereits Werte eingegeben hätte. Sie werden außerdem sehen, ob JMP ein Skript für eine Datentabelle mit der GET-Skriptnachricht schreiben lässt, das das Argument zum Hinzufügen der Zeilen enthält. Wir legen außerdem ein Format mit dem Argument „feste Dezimalstellen“ für ein Feld mit drei Dezimalstellen fest. Wir aktivieren die Sperroption für die Spalte, damit sie nicht geändert werden kann, ohne sie zu entsperren. Mit dem Argument „Bereichsprüfung“ weisen wir diese Spalteneigenschaft zu. Die Syntax LELE ( ) besagt lediglich, dass „kleiner oder gleich dem Wert in der Spalte ist“ kleiner oder gleich ist. Schließlich haben wir ein Beispiel für das Argument „Eigenschaft festlegen“, mit dem wir die Eigenschaft der Spezifikationsgrenzen festlegen. Da es mehrere Optionen zur Angabe der Spezifikationsgrenzen gibt, haben wir eine Liste der drei Grenzen: die untere Spezifikationsgrenze, die obere Spezifikationsgrenze und das Ziel. Beachten Sie auch, dass alle optionalen Argumente für „neue Spalte“ als Nachrichten an die Spalte gesendet werden können, nachdem sie erstellt wurde, oder, wie hier gezeigt, als Argumente für „neue Spalte“. Ich führe das Skript aus. Im Protokoll unten sehen Sie, dass wir eine Instanz eines Datentabellenobjekts namens „Testdaten“ erstellt haben. Das würde ich sehen, wenn ich in meinem Skript mit der Maus über die Variable „dt“ fahre. Die Datentabelle besteht aus einer Spalte und sieben Zeilen. Alle Elemente des Skripts sind in der Tabelle selbst angegeben. Ich weiß, dass der Datentyp numerisch ist, da das Symbol für den Modellierungstyp „kontinuierlich“ anzeigt. Der kontinuierliche Modellierungstyp verarbeitet ausschließlich numerische Daten. Die numerischen Werte sind rechtsbündig ausgerichtet. Würden Zahlen als Zeichen behandelt, wären sie linksbündig ausgerichtet. Im Spaltenbereich sehen wir das Schlosssymbol, das anzeigt, dass die Spalte gesperrt ist. Das kleine Häkchen zeigt die Bereichsprüfung an. Das Sternchen zeigt zusätzliche Eigenschaften an, die keine eigenen Symbole haben. Es gibt verschiedene Möglichkeiten, in den Spalteninfo-Dialog zu gelangen. Wir können eine Abkürzung nehmen, indem wir auf dieses Sternchen klicken. Wir sehen, dass die Eigenschaft „spez. Grenzen“ lautet. Es können mehrere Eigenschaften in diesem Dropdown-Menü aufgeführt sein. Ich kann diese auswählen und so zu den Spalteninformationen gelangen. Wir können die Spalte auch auswählen und das Spaltenmenü verwenden oder mit der rechten Maustaste darauf klicken und „Spalteninformationen“ auswählen. Dort werden die spez. Grenzen mit den im Argument „Eigenschaft festlegen“ angegebenen Werten angezeigt. Außerdem gibt es die Bereichsprüfung. Auch hier gilt: „kleiner als oder gleich“ – LELE wird in der allgemeinen Syntax angegeben – und dann haben wir die tatsächlichen Werte. Hier sehen wir, dass die Spalte gesperrt ist. Der Datentyp ist numerisch. Der Modellierungstyp ist kontinuierlich. Das Format ist „feste Dezimalzahl“ mit der Feldbreite, die der maximalen Anzahl an Zeichen entspricht, die in der Spalte angezeigt werden können, und drei Dezimalstellen. Ich breche also den Dialog „Spalteninformationen“ ab und deaktiviere die pH-Spalte. Im Dropdown-Menü „Spalteneigenschaften“ gibt es eine Option, mit der Sie Ihre eigene benutzerdefinierte Spalteneigenschaft festlegen können. Interaktiv heißt die Menüoption „Sonstige“. Sie benennen die Eigenschaft und den gewünschten Wert. Ich habe ein Skript im Journal mit dem Namen „Benutzerdefinierte Spalteneigenschaft hinzufügen“. Wir senden es an die Spalte „pH“. Diese Spalte heißt korrekterweise „Messgerätkalibrierung“. Ich möchte das heutige Datum als Zeichenfolge mit Monat, Tag und Jahr formatieren. Der Text hier, das zweite Argument für die Eigenschaft „Set Property“, ist in diesem Fall die Funktion „Heute“, um die Anzahl der Sekunden seit Mitternacht im Januar zum Zeitpunkt der Ausführung dieser Codezeile abzurufen. Ich schließe dies in die Funktion „Format“ ein und gebe das gewünschte Zeichenfolgenformat an. Auch hier kann es beim Schreiben eines Skripts zu Versuch und Irrtum kommen. Wenn ich nur das eingegeben hätte, was ich markiert habe – und ich glaube, das habe ich –, wäre … ja. Ich wollte sicherstellen, dass ich die richtige Anzahl an Klammern angegeben habe. Ich führe das aus, was ich gerade markiert habe. Ich wähle es aus und drücke Strg+R. Die Zeichenfolge erscheint genau so im Protokoll, wie ich sie haben möchte. Ich könnte diese Eigenschaftsnachricht, diesen Code mit der Eigenschaftsnachricht, zunächst ohne die Eval-Funktion ausführen. Wenn ich das täte, würde ich in der Spalte „Informationen“ für die Eigenschaft „Messgerätkalibrierung“ den Code sehen. Er würde nicht ausgewertet. Die Eigenschaftsnachricht „Set Property“ wertet ihr zweites Argument möglicherweise nicht aus, sodass wir sie in die Eval-Funktion einbinden müssten. Wenn ich sie nun außerhalb der Eigenschaftsnachricht „Set Property“ ausführe, wird genau dasselbe zurückgegeben. Das könnte beispielsweise der Fall sein, wenn Sie zunächst nur das Format der Funktion „Heute“ verwenden und dann feststellen, dass es nicht das gewünschte Ergebnis in Ihren Spalteneigenschaften liefert. Dann würden Sie feststellen, dass Sie die Eval-Funktion hinzufügen müssen. Ich lasse also nichts davon auswählen und führe dieses Skript aus. Die Meldung im Protokoll ist einfach skriptfähig. Das bedeutet, dass ich etwas skriptfähiges getan habe. Manchmal passiert es also, dass beim Ausführen von Code nicht das erwartete Ergebnis eintritt. Möglicherweise wird nur diese skriptfähige Meldung angezeigt. Dann müssen Sie versuchen, herauszufinden, was in diesem Fall schiefgelaufen ist, da das Wort „skriptfähig“ keine wirklichen Informationen liefert. In unserem Fall sehen wir uns die Tabelle an. Wir gelangen einfach zu den Spalteninformationen, indem wir auf dieses Sternchen klicken. Ich mache das so, um zu zeigen, dass wir jetzt ein weiteres Element in diesem Menü haben. Alle Spalteneigenschaften ohne eigene Symbole werden in diesem Sternchenmenü angezeigt. Ich klicke auf „Messgerätkalibrierung“, damit diese Eigenschaft im Dialogfeld „Spalteninformationen“ ausgewählt ist. Dort sehen Sie das ausgewertete Ergebnis der Verwendung der Funktion „Heute“ und der Formatierung als Zeichenfolge. Ich breche das ab. Und ich verwende das Skript-Editor-Fenster „Benutzerspalteneigenschaft hinzufügen“, um noch ein wenig mit dieser Tabelle herumzuspielen. Es muss jetzt nicht mehr ganz so breit sein. Ich möchte jetzt eine neue Spalte als Nachricht an die Datentabelle senden. Ich nenne diese neue Spalte „Hydronium“. Nach der Erstellung füge ich eine Formel hinzu. Natürlich könnte ich die Formel auch direkt bei der Spaltenerstellung hinzufügen. Außerdem speichere ich die aus dem Code resultierende Spaltenobjektreferenz in einer Variable. Ich nenne sie einfach HYD, hyd für Hydronium. Dem weise ich das Ergebnis der Nachricht an dt zu, da wir die Testdatenobjektreferenz dort gespeichert haben. Ich sende also die Nachricht an dt „neue Spalte“ und setze dann öffnende Klammern und eine Zeichenfolge. Das einzige erforderliche Argument für die neue Spalte ist der Spaltenname „Hydronium“. Ich führe das aus. Da ich das Ergebnis in dieser Variable speichere, muss ich den vollständigen Namen „Hydronium“ nicht erneut eingeben. Ich musste die Objektreferenz also nicht speichern. Ich kann weiterhin mit der Spalte kommunizieren. Der verkürzte Name spart mir etwas Tipparbeit. Nehmen wir nun an, wie bereits erwähnt, ich möchte dieser Spalte eine Formel hinzufügen. Ich gehe also einfach in eine neue Zeile. Um nicht versehentlich das gesamte Skript erneut auszuführen und eine zweite Hydronium-Spalte zu erstellen, kommentiere ich diese erste Zeile aus. Ich sende eine Nachricht an die Variable „hyd“. Die Nachricht lautet: „Formel festlegen“. Die Formel potenziere ich mit dem negativen pH-Wert, also „erhöhe auf“ – und dann setze ich die Klammern – „minus“ – und verwende den Doppelpunkt-Bereichsoperator, da ich mich auf die pH-Spalte beziehe, nur zur Sicherheit, falls in meinem globalen Namespace noch andere Variablen mit dem Namen „ph“ existieren. Ich verwende „Names Default to Here“ nicht, obwohl wir das in der Praxis als bewährte Methode empfehlen würden. Ich tippe also das Semikolon und führe diese Skriptzeile aus. Wir sehen die skriptfähige Meldung erneut im Protokoll. Wir können die Tabelle untersuchen und sehen, dass die Werte eingetragen wurden. Es gibt noch ein paar weitere Möglichkeiten, mit unseren Spalten und Zeilen zu experimentieren. Nehmen wir an, ich möchte Zellen in einer Datentabelle einfärben, um Werte zu kennzeichnen, die einen bestimmten Wert überschreiten. Ich öffne also eine neue Zeile im Skript-Editor. Ich erstelle die Variable „callout“ und weise ihr das Ergebnis der in dt gespeicherten Datentabelle zu, die die Meldung „get rows where“ empfängt. Mein Boolescher Vergleich ergibt dann, dass die Werte in der Spalte „pH“ größer sind als. Ich führe also einfach diese Zeile aus. Wie Sie sehen, gibt „rows“ und „get rows where“ einen Spaltenvektor mit Zeilennummern zurück. Anschließend sende ich eine Meldung an „pH“. Da die Objektreferenz der Spalte nicht in einer Variable gespeichert ist, referenziere ich sie einfach mit ihrem Namen. „pH“ empfängt also die Meldung „color cells“. Dies ist also eine weitere Meldung, die wir an eine Spalte senden können. Ich verwende den Namen der Farbe als erstes Argument. Es gibt auch Indexwerte, und Sie können die RGB-Werte verwenden. Ich verwende den Namen als Zeichenfolge. Daher färbe ich diese Zellen rot. Das zweite Argument ist, welche Zellen Sie einfärben möchten. Sie können die gesamte Spalte oder die Zeilennummern angeben. Ich verwende die Variable „Callout“, die die Zeilen speichert, in denen der pH-Wert größer als drei ist. Und ich führe nur diese Zeile aus. Beachten Sie übrigens, dass ich vergessen habe, ein Semikolon einzufügen. Das zeigt, dass das abschließende Semikolon nicht erforderlich ist. Es wird nur benötigt, wenn weitere Argumente hinzukommen. Wenn wir uns jetzt die Datentabelle ansehen, sehen Sie, dass diese vier Zellen rot eingefärbt sind. Das könnte eine praktische Lösung sein, wenn Sie eine große Datentabelle haben und einige Spalten Spezifikationsgrenzen haben. Sie könnten Zellen basierend auf diesen Spezifikationsgrenzen einfärben, um beispielsweise Abweichungen außerhalb der Spezifikation in der Datentabelle optisch hervorzuheben, bevor Sie sich die Diagramme ansehen. Sie müssen Zellen nicht unbedingt einfärben, aber es ist eine Option, die Sie nutzen können. In dieser Demonstration haben wir ein Beispiel für das Erstellen einer neuen Datentabelle mit einer Spalte, das Hinzufügen einer Spalte zu dieser Datentabelle und das Experimentieren mit den Möglichkeiten, die wir mit unseren Spalten und Zeilen haben können, gesehen.
Ich habe versucht, die Set-Eigenschaft ohne „Eval“ auszuführen. Es funktioniert immer noch. (Derzeit wird JMP 16.2 verwendet)
:pH << Set Property( "Meter Calibration2", Format( Today(), "m/d/y" ) );
