なぜ::labelslistなのか?Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
labelsList = {"F" = "A", "M" = "B"}; //here namespace
::labelsList = {"F" = "①", "M" = "②"}; // global variable
f = function ({},
{default local},
labelsList = {"F" = "X", "M" = "Y"} ; // local variable
dt:sex << Set Property( "Value Labels", labelsList ) // which variable will JMP pick?
);
f
JMP 19.1: ①、②
JMP 18.2.2 & JMP 20EA: X、Y
回避策:
- dt:sex を使用 <
- Eval を使用します (Eval Expr( ... Expr (labelslist) ))
自動化とスクリプト作成
Re: なぜ::labelslistなのか?理解するのがはるかに難しかったのは、最初のエラーメッセージだった。

delete symbols (::labelsList);
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
f = function ({},
{default local},
labelsList = {"F" = "X", "M" = "Y"} ;
dt:sex << Set Property( "Value Labels", labelsList )
);
f
Re: なぜ::labelslistなのか?「不明」とは、JMPが予期せぬエラーを検出したものの、それ以上の説明がないことを意味します。このエラーを報告し、本来どうあるべきかを説明してください。開発者が、適切な動作を実現するか、メッセージを改善するなどして、問題を修正する機会を得られます。
Re: なぜ::labelslistなのか?JMP19はデータテーブル内で評価を行っている可能性があり、そのためグローバル値が使用されているのかもしれません。そもそもその評価を行うべきかどうか疑問に思うかもしれません。
この列は、指定された引数の評価や検証を行わずに、指定された値で列プロパティを格納します。JSLコードを使用して変数を含む列プロパティを追加するには、スクリプトで変数を実際の値に変換する必要があります。 スクリプトガイド > データテーブル > 列の操作 > 列プロパティの設定または取得.
変数を {} で囲むと、JMP19 で JMP がクラッシュすることもあります (JMP18 ではクラッシュせず、代入エラーが発生します)。