"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 ) ) ) );
그런데 예상치 못한 문제가 발생했다. 스크립트를 정상적으로 실행하는데 문제가 없었는데, 암호화해서 실행해보니 그래프를 닫을 때 예외가 보고되어 상당히 당황스러웠습니다.

다음은 전체 테스트 스크립트입니다. 이 문제를 분석하는 데 도움을 주시면 감사하겠습니다.
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 ) ) ) );
);
자동화 및 스크립팅윈도우Re: "Graph Builder"가 On Colse() 함수를 추가합니다. 암호화 실행 시 예외가 발생합니다.암호화된 스크립트를 사용하여 On Close 오류를 복제했습니다. 저는 이것이 JMP 버그라고 생각하며 JMP 지원팀에 문제를 제출할 것을 제안합니다.
support@jmp.com
Re: "Graph Builder"가 On Colse() 함수를 추가합니다. 암호화 실행 시 예외가 발생합니다.스크립트가 암호화되면 어디에서 문제가 발생하는지 잘 모르겠지만 이것이 작동하는 것 같습니다(on close 및 표현식 평가를 수정했습니다).
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);
);
));
);
Re: "Graph Builder"에 On Colse() 함수가 추가되었습니다. 암호화 실행 시 예외가 발생합니다.고마워요, 자르모 . 이것은 참으로 좋은 방법입니다.
"gb << On Close(Close(gb << Get Data Table, nosave))"를 사용합니다. gb와 dt를 바인딩하는 것인데 원래 바인딩되어 있다는 사실을 잊어버린 것 같습니다.
구문적으로는 정확해야 하지만 이는 실제로 JSL 스크립트의 내부 오류일 수 있습니다. @txnelson 의 조언을 받아들여 이 문제를 JMP 지원팀에 문의하겠습니다.
Re: "Graph Builder"가 On Colse() 함수를 추가합니다. 암호화 실행 시 예외가 발생합니다.고마워요, 짐.
Jarmo도 이 오류의 원인을 설명할 수 없는 것 같으므로 이는 실제로 JSL 버그일 수 있습니다. JMP 지원팀에 제출해 달라는 귀하의 제안을 받아들이겠습니다.
게다가 Jarmo는 우리가 함께 배울 수 있는 이 문제를 해결하는 기발한 방법을 공유합니다.