JSL では、個々の列の Suppress Eval フラグを変更して、その列の数式が評価されないようにできることがわかっています。これは、評価に時間がかかる複雑な数式の場合に便利です。一度評価して抑制し、数式はそのままにして、必要に応じて後で戻って再度評価することができます。
状況によっては、複数の列を反復する操作を実行しているときに、実際に変更せずに Suppress Eval フラグの現在の状態を知りたい場合があります。この情報を抽出する方法が見つかりません。値を 1 または 0 に設定することはできますが、切り替えることができず、現在の値を取得できません。これは可能ですか?
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.
また、Supress Eval がすでに 1 に設定されていて、「col << Supress Eval」行が実行されると、次の警告が表示されることにも気付きました。
空のブール引数を持つメッセージにより、すでに有効になっているオプションが有効になりました。そのオプションは有効なままです。JMP の以前のバージョンでは、これによりオプションが無効になっていました。
したがって、JMP の以前のバージョンではこのオプションを切り替えることができましたが、この機能は削除されました。
また、Show Properties(col) の出力を確認したところ、Supress Eval への参照が 1 つだけ見つかりました。
評価を抑制 [ブール値] [スクリプトのみ]
つまり、これはブール引数を受け入れ、値を返さず、スクリプトからのみアクセスできる関数ということですか? 値を取得する方法はありますか?
私はそれを取得する直接的な方法を認識していませんが、このばかげたコードはそれで機能します。
suppresseval = contains(char(:<YOURCOLUMNNAME> <<GET script=""></GET></YOURCOLUMNNAME>