Ich weiß, dass ich in JSL das Flag "Eval unterdrücken" für einzelne Spalten ändern kann, um zu verhindern, dass die Formel dieser Spalte ausgewertet wird.Dies ist nützlich für komplexe Formeln, deren Auswertung eine Weile dauert.Ich kann einmal auswerten und unterdrücken, aber die Formel intakt halten, damit ich später bei Bedarf wieder auswerten kann.
In einigen Situationen, wenn ich Operationen ausführe, die über mehrere Spalten iterieren, möchte ich den aktuellen Status des Flags "Suppress Eval" kennen, ohne ihn tatsächlich zu ändern.Ich konnte keine Möglichkeit finden, diese Informationen zu extrahieren.Ich kann den Wert auf 1 oder 0 setzen, aber ich kann ihn nicht umschalten und ich kann den aktuellen Wert nicht erhalten.Ist das möglich?
Names Default To Here(1);
dt = Current Data Table();
col = Column(dt, "myColumn");
col << Suppress Eval(1); //suppresses formula eval
col << Suppress Eval(0); //un-suppresses formula eval
suppress_state = col << Suppress Eval; //does not work as expected. sets suppress eval to 1.
Show(suppress_state); //prints "suppress_state = Scriptable[]" in the log. current state not returned.
Ich habe auch festgestellt, dass die folgende Warnung angezeigt wird, wenn Supress Eval bereits auf 1 gesetzt ist und die Zeile "col << Supress Eval" ausgeführt wird:
Eine Nachricht mit einem leeren booleschen Argument hat eine Option aktiviert, die bereits aktiviert wurde. Diese Option bleibt aktiviert. In früheren Versionen von JMP hätte dies die Option deaktiviert.
In früheren Versionen von JMP konnte diese Option umgeschaltet werden, diese Funktionalität wurde jedoch entfernt.
Ich habe mir auch die Ausgabe von Show Properties (col) angesehen und nur einen Verweis auf Supress Eval gefunden:
Eval unterdrücken [Boolean] [Nur Scripting]
Dies bedeutet also, dass es sich um eine Funktion handelt, die ein boolesches Argument akzeptiert, keinen Wert zurückgibt und nur über Scripting zugänglich ist.Gibt es eine Möglichkeit, den Wert zu erhalten?
Mir ist kein direkter Weg bekannt, um es zu bekommen, aber dieser dumme Code wird dafür funktionieren;
suppresseval = contains(char(:<YOURCOLUMNNAME> <<GET script=""></GET></YOURCOLUMNNAME>
Das ist eine clevere Art, es zu tun.Vielen Dank!