내 고객에게 더 사용자 친화적인 대화 상자 모델 상자를 만드는 실험을 하고 있습니다. 라디오 상자나 확인란을 사용하는 대신 col 목록 상자를 사용하여 사용자 인터페이스를 맞춤 모델의 대화 상자와 더 비슷하게 만듭니다. 이 스크립트는 주어진 제품의 PQA에 대한 데이터 테이블 JSL 스크립트에서 출력을 생성할 때 사용자 시간을 절약하기 위해 그래프와 출력을 사용자 정의해야 합니다.
기본 열 이름이 있는 장난감 데이터 세트와 이 기사 전체에서 참조하는 첨부된 JSL 스크립트가 포함된 JMP 파일이 첨부되어 있습니다.
사용자가 set_resultcol이라는 열에 입력하는 변수가 있습니다. set_resultcol의 이 값은 모든 데이터 세트 열 헤더와 함께 사용할 수 있습니다(즉, 데이터 세트는 모델이 될 연속 숫자 변수의 헤더로 "결과" 또는 "결과" 또는 "결과(N)" 또는 "값"을 가질 수 있습니다. y축을 종속 변수로 사용합니다.
그러나 사용자 인터페이스를 보다 사용자 친화적으로 만들기 위해 사용했던 col 목록 상자 옵션의 y축 스크립트 이름 바꾸기에서 set_resultcol 값의 표현이 표현되지 않는 몇 가지 문제가 있습니다. 예를 들어 {“결과”}[1]를 사용하여 col 목록 상자 결과 목록에서 값을 가져오려고 했습니다. 나는 여전히 모달 창의 col 목록 상자 개념에 익숙하지 않으므로 수행할 수 있는 작업을 결정하는 데 도움이 되도록 JSL 코드에 대해 좀 더 경험이 풍부한 눈을 얻을 수 있기를 바랍니다.
라디오 상자를 사용할 때 set_resultcol의 결과 값은 문자열이었고, 이는 y축의 이름을 PQA(품질 속성)로 변경하기 위해 아래 JSL에서 참조할 수 있습니다.

Names Default To Here( 1 );
dt = Current Data Table();
//part 1. ask user for column names in a new window nw1
//possible Group column name (should be character)
character_col_names = dt << Get Column names(character, String);
//possible result column name (should be numeric)
numeric_col_names = dt << Get Column names(Numeric, String);
nw1 = New Window("Set group by variable an",
<<MODAL></MODAL>그리고 결과 그래프에는 y축 레이블 "결과"(예:)가 "A"로 이름이 변경됩니다(간단함을 위해 PQA를 "A"라고 함).

모든 열을 한 번에 표시하는 대신 끌어서 놓기 기능을 사용하여 모달 대화 상자를 보다 사용자 친화적이고 미적으로 만들기 위해 col 목록 상자로 만든 다음 모달 대화 상자가 있습니다. 이 창 아래에는 이러한 col 목록 상자와 관련하여 문제가 있는 해당 JSL 코드가 있습니다.

Names Default To Here( 1 );
dt = Current Data Table();
nw1 = New Window("Set variables for stability model",
<<MODAL></MODAL>그러나 결과 그래프는 PQA "A"에 대해 "A"로 표시되어야 할 때 y축 이름이 y축에 있는 이 데이터 테이블 "결과"에서 다음과 같습니다.

나는 JSL 스크립트에 다음과 같은 옵션이 있기 때문에 col 목록 상자가 변수 목록을 생성한다는 것을 알고 있습니다.
//is this set_resultcol a list? if so, show the contents.
Show(is list(set_resultcol)); // which gives 1 or “true” as shown in the log
Show(set_resultcol[1]); //which gives “Result” as shown in the log

데이터세트에서 참조할 수 없는 이 JSL 스크립트의 문제점은 무엇입니까? 이 문제를 해결하려면 어떻게 해야 합니까?
이 문제와 관련하여 내가 찾을 수 있는 유일한 문서는 "JMP 15 스크립팅 가이드" pdf 페이지 524, 527-529에서 col 목록 상자와 해당 매뉴얼의 목록 섹션에 있습니다. 나는 이 예를 시도했지만 그들은 내가 이미 알지 못하는 것을 말하지 않습니다.
나는 그것을 피할 수 있다면 보고서를 수정하기 위해 Dispatch를 사용하지 않을 것입니다. 나는 오히려 참조를 얻은 다음 그것들을 기반으로 보고서를 수정하고 싶습니다. 아래 스크립트에서 몇 가지 아이디어를 얻을 수 있습니다.
Names Default To Here(1);
dt = Open("$DOWNLOADS/Col List Box Y-axis labeling issue 7_11_2022.jmp");
nw1 = New Window("Set variables for stability model",
<<MODAL>
["LSL" => 0.3, "USL" => 0.9],
"B" =>
["LSL" => 0.5, "USL" => 2],
"C" =>
["LSL" => 4, "USL" => 6]
];
//Response Result outline box references
response_ob_refs = fm << XPath("//OutlineBox[contains(text(), 'Response Result PQA')]");
For Each({ror_list}, response_ob_refs,
ror = ror_list[1];
cur_group = Word(2, ror << get title, "=");
cur_lsl = aa_settings[cur_group]["LSL"];
cur_usl = aa_settings[cur_group]["USL"];
rp_ref = (ror << XPath("//OutlineBox[contains(text(), 'Regression Plot')]"))[1];
// Y-axis
y_axis = rp_ref[Axis Box(1)];
Eval(EvalExpr(
y_axis << Add Ref Line(Expr(cur_lsl), "Solid", Dark Red, Expr(EvalInsert("LSL (^cur_lsl^)")), 1);
y_axis << Add Ref Line(Expr(cur_usl), "Solid", Dark Red, Expr(EvalInsert("USL (^cur_usl^)")), 1);
));
y_axis << RemoveAxisLabel("Result");
y_axis << AddAxisLabel(cur_group);
y_axis << Min(cur_lsl);
y_axis << Max(cur_usl);
f_box = rp_ref[FrameBox(1)];
f_box << Frame Size(600, 400);
// Legend
f_box << Row Legend(
Eval(set_groupby),
Color(1),
Color Theme("JMP Default"),
Marker(0),
Marker Theme(""),
Continuous Scale(0),
Reverse Scale(0),
Excluded Rows(0)
);
);
</MODAL>

어떤 이유로 Dispatch를 정말로 사용하고 싶다면 다음을 확인하는 것이 좋습니다. Eval Insert, Eval Expr, Parse 및 Substitute를 사용하여 한 표현식을 다른 표현식에 삽입