내가 여기서 뭔가 잘못하고 있습니까 아니면 이것이 버그입니까?JMP 14 또는 15에서 아래 코드를 한 번에 하나의 명령으로 실행하면 끝에 세 개의 테이블이 열립니다.한 번에 모두 실행하면 마지막 줄에 오류가 있는 것처럼 하나의 테이블이 GUI에서 열리지 않거나 자동으로 닫힙니다.
// This script should open 2 tables and create a third based on the first two.
// Run script line by line and all three are open at the end. Run all at once
// and the first table, dtDD, is not open when the script is finished.
names default to here(1);
dtDD = Open("$Sample_Data/Big Class.jmp");
dtDDOld = Open("$Sample_Data/Big Class Families.jmp");
if(left(jmpversion(),2) == "15",
dtDDOld << Delete Row( 1 ); //not sure why this didn't delete a row in JMP 14...
,
dtDDOld << select where( row() == 1 );
dtDDOld << delete rows();
);
//find new tags
dtDDNew = New SQL Query(
Version( 130 ),
Connection( "JMP" ),
QueryName( "New Query" ),
Select(
Column( "name", "t1" ),
Column( "age", "t1" ),
Column( "sex", "t1" ),
Column( "name", "t2", Alias( "name 2" ) )
),
From(
Table( dtDD << Get Name, Alias( "t1" ) ),
Table(
dtDDOld << Get Name,
Alias( "t2" ),
Join(
Type( Left Outer ),
EQ( Column( "name", "t1" ), Column( "name", "t2" ) )
)
)
),
Where(
Custom(
"t2.\!"name\!" is null and (t1.\!"name\!" is not null)",
UI( Custom( Base( "Continuous" ) ) )
)
)
) << Run;
dtDD << bring window to front;
지금까지는 첫 번째 명령문이 완료되기 전에 미래 명령문이 실행될 때만 해당 문제가 발생했습니다.이 경우 첫 번째 명령문은 실제로 전혀 완료되지 않습니다(데이터가 로드되고 해당 변수를 통해 사용할 수 없게 됨). 또는 스크립트의 일부가 아닌 테이블이 이후에 닫힙니다.대기를 추가하면 해결됩니다. JMP 지원팀의 생각을 살펴보겠습니다.
고맙습니다
JMP 인터프리터는 JSL 문을 차례로 처리하며 후속 문이 처리되기 전에 코드의 위 단계가 완료될 때까지 반드시 기다릴 필요는 없습니다. 즉, JSL이 계속 처리함에 따라 일부 명령문이 백그라운드에서 실행됩니다.나는 이것이 일어나고 있다고 믿습니다. 몇 가지 방법으로 JSL을 강제로 대기시킬 수 있습니다.사용
대기(0);
또는
dtDD << 수식을 다시 실행합니다.
처리하기 전에 JSL을 강제로 일시 중지합니다.
Big Class 및 Big Class Families에 대한 Open() 함수 뒤에 Wait(0)을 배치했으며
dtDD << 창을 앞으로 가져오기;
그 결과 JSL이 제대로 실행되었습니다.