我知道在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的引用:
禁止评估[布尔值] [仅脚本]
因此,这意味着它是一个接受布尔参数,不返回值且只能从脚本访问的函数?有没有办法获得价值?
我不知道直接获得它的方法,但是这段愚蠢的代码将适用于此。
suppresseval = contains(char(:<YOURCOLUMNNAME> <<GET script=""></GET></YOURCOLUMNNAME>