“Graph Builder”添加了On Colse()函数,加密运行时出现异常JMP社区专家,我来自中国。
以下问题描述来自机器翻译。语法可能有点奇怪,请不要介意。
我遇到了 JMP17 脚本中可能存在的错误问题。如果您能向专家寻求帮助来解决这个问题,我将不胜感激。
我为“Graph Builder”创建了一个脚本。为了在关闭 Graph Builder 时自动关闭引用的数据表,我使用 On Close() 添加了以下脚本:
gb << On Close( Close( gb << Get Data Table, nosave ) );
但由于我有很多数据表,需要通过for()循环同时生成图形,所以我优化了以下脚本:
Eval( Eval Expr( Expr( gb ) << On Close( Close( Expr( gb ) << Get Data Table, nosave ) ) ) );
但是却出现了一个意想不到的问题,原本正常运行脚本没有问题,但是当我加密运行脚本时,关闭graph的时候却报了异常,这让我很纳闷。

以下是完整的测试脚本。如能帮助分析此问题,我们将不胜感激。
Names Default To Here( 1 );
fileList = {"big class.jmp", "Big Class Families.jmp"};
For Each( {file, i}, fileList,
dt = Open( Eval Insert( "$sample_data/^file^" ), "invisible" );
gb = dt << Graph Builder(
Size( 917, 645 ),
Variables( X( :sex ), Y( :height ) ),
Elements(
Points( X, Y, Legend( 5 ) ),
Box Plot( X, Y, Legend( 6 ) ),
Caption Box( X, Y, Legend( 9 ), Summary Statistic( "Mean" ), Location( "Graph per factor" ), X Position( "Left" ) )
),
SendToReport(
Dispatch( {}, "Points", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Box Plot", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Caption Box", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Caption Box", Outline Box( 2 ), {Close( 1 )} )
)
);
Eval( Eval Expr( Expr( gb ) << On Close( Close( Expr( gb ) << Get Data Table, nosave ) ) ) );
);
自动化和脚本视窗回复:“Graph Builder”添加了 On Colse() 函数,加密运行时出现异常我已经使用加密脚本复制了您的 On Close 错误。我相信这是一个 JMP 错误,我建议您将问题提交给 JMP 支持。
support@jmp.com
回复:“Graph Builder”添加了 On Colse() 函数,加密运行时出现异常我不确定脚本加密时哪里出了问题,但这似乎有效(我修改了关闭和表达式评估)
Names Default To Here(1);
fileList = {"big class.jmp", "Big Class Families.jmp"};
For Each( {file, i}, fileList,
dt = Open(Eval Insert("$sample_data/^file^"), "invisible");
gb = dt << Graph Builder(
Size(917, 645),
Variables(X(:sex), Y(:height)),
Elements(
Points(X, Y, Legend(5)),
Box Plot(X, Y, Legend(6)),
Caption Box(
X,
Y,
Legend(9),
Summary Statistic("Mean"),
Location("Graph per factor"),
X Position("Left")
)
),
SendToReport(
Dispatch({}, "Points", OutlineBox, {Close(1)}),
Dispatch({}, "Box Plot", OutlineBox, {Close(1)}),
Dispatch({}, "Caption Box", OutlineBox, {Close(1)}),
Dispatch({}, "Caption Box", Outline Box(2), {Close(1)})
)
);
Eval(EvalExpr(
gb << On Close(
Close(Expr(dt), nosave);
);
));
);
回复:“Graph Builder”添加了 On Colse() 函数,加密运行时出现异常谢谢Jarmo 。这确实是个好方法。
我使用“gb << On Close(Close(gb << Get Data Table, nosave))”来绑定gb和dt,但我似乎忘记了它们原本是绑定的。
虽然从语法上来说应该是正确的,但这确实可能是 JSL 脚本中的内部错误。我会采纳@txnelson的建议,并将此问题提交给 JMP 支持。
回复:“Graph Builder”添加了 On Colse() 函数,加密运行时出现异常谢谢你,吉姆。
这确实可能是 JSL Bug,因为 Jarmo 似乎也无法解释此错误的原因。我会接受您的建议,将其提交给 JMP 支持。
此外,Jarmo 还分享了一个解决这个问题的巧妙方法,我们可以一起学习。