このバージョンのヘルプはこれ以降更新されません。最新のヘルプは https://www.jmp.com/support/help/ja/15.2   からご覧いただけます。


scope:nameという形式のスコープを使用することにより、名前を解決する場所を指定できます。ここで、scopeは名前の解決方法を示します。たとえば、here:nameは、名前がローカルで解決されるべきであることを意味します。Names Default To Hereモードを使用すると、here:namenameと等価です。スコープは名前の参照方法を指示します。
scope:name
解決ルールを示すもの。たとえば、here:xは、xがスクリプトにローカルな名前として解決されるべきであることを意味します。Global:xは、xがグローバル名として解決されるべきであることを意味します。
名前空間の参照変数。たとえば、 ref:aは、aが、refが参照する名前空間で解決されるべきであることを意味します。
名前を列名として参照するデータテーブル参照。たとえば、dt:heightは、heightが、dtが参照するデータテーブルの列として解決されるべきであることを意味します。
独自に作成した名前空間の名前。たとえば、myNamespace:b。ここで、myNamespaceは作成した名前空間。"myNamespace":bも等価です。詳細については、第 “名前空間”を参照してください。
以下の例は、計算式を含んだ列の適用範囲の指定方法を示しています。スクリプトの中で、xはグローバル変数、ローカル変数、列名として使用されています。
最初のスクリプトでは、列名xは適用範囲が指定されていません。2番目の列内の計算式は、列xの値を100倍するものです。この場合、列の値は100、200、300という結果になります。
::x = 5;
New Table( "テスト",
	New Column( "x", Values( [1, 2, 3] ) ),
	New Column( "y", Formula( 100 * x ) ),
);
次のスクリプトでは、列yの計算式はローカル変数xに500を割り当てた後、xに50を足します。列の各セルの値は550になります。
::x = 5;
New Table( "テスト",
	New Column( "x", Values( [1, 2, 3] ) ),
	New Column( "y", Formula( Local( {x = 500}, x + 50 ) ) ),
);
JMPビルトイン関数。たとえば、Builtin:Sqrt()。名前は、JMP環境全体で共有されます。
ローカルスコープに似たスコープ。Function()Local()Parameter()の関数内で使用できます。
Names Default to Here(1)内に名前空間ブロックを提供する。複数のスクリプトが同じルート名前空間から実行された場合(たとえば、スクリプトが同じ名前の変数を持つ2つのボタンスクリプトを実行する場合など)、名前の競合を防ぐには、Local Here()を使用します。引数には任意の有効なJSL式を使用できます。
ローカルブロックには寿命があるのでLocal( {Default Local}, )は常に機能するとは限りませんが、Local Here()は呼び出し全体にわたって維持されます。
この例は、Windowスコープを使って、実行中に情報を渡します。変数xおよびyの適用範囲をウィンドウに指定することで、xyはデータテーブルなどの他のコンテキストに適用されなくなります。変数xおよびyは、指定のWindow環境内だけで作成および使用されます。Windowスコープは、Local()を使用するのと似ていますが、それより便利です。なぜなら、Local()は使用できる範囲が限られているからです。
New Window( "例",
	window:gx = 20;
	window:gy = 50;
	Graph Box(
		Frame Size( 200, 200 ),
		Handle(
			window:gx,
			window:gy,
			Function( {x, y},
				window:gx = x;
				window:gy = y;
			)
		);
		Circle( {0, 0}, Sqrt( window:gx * window:gx + window:gy * window:gy ) );
	);
);
図8.1 現在のウィンドウ名前空間の例
この例は、Hereスコープを使い、同じスクリプトによって作成されたウィンドウ間で情報を渡します。Here:を使って変数の適用範囲を指定する際、Names Default To Here()がオンである必要はありません。Here:スコープは常に使用できます。
「起動」ウィンドウがユーザに2つの値を入力するよう求めます。その2つの値が「結果」ウィンドウに渡され、それらの値を使って関数がグラフ化されます。「起動」ウィンドウは、aBoxbBoxの適用範囲をそのウィンドウに限定します。基本的に、それらの変数(Number Edit Boxesへの参照)は「起動」ウィンドウ内にのみ存在し、「結果」ウィンドウでは使用できません。その後、2つのボックスの値がHereに範囲指定された変数内にコピーされ、このスクリプトによって作成された両方のウィンドウで使用可能となります。
launchWin = New Window( "起動",
	<<Modal,
	V List Box(
		Lineup Box( N Col( 2 ), Spacing( 10 ),
			Text Box( "a" ),
			window:aBox = Number Edit Box( 50 ),
			Text Box( "b" ),
			window:bBox = Number Edit Box( 20 ),
 
		),
		Lineup Box( N Col( 2 ), Spacing( 20 ),
			Button Box( "OK",
				// ウィンドウを閉じる前に値をコピーする
				here:a = window:aBox << Get;
				here:b = window:bBox << Get;
			),
			Button Box( "キャンセル", Throw( 1 ) )
		),
 
	)
);
 
New Window( "結果",
	Graph Box( Y Function( here:a + here:b * Sin( x / 30 ), x ) )
);
図8.2 起動と結果