名前付き変数参照の解決方法を左右する要因は数多くあります。表8.6に、名前付き変数参照が特定の状況でどのように解決されるかを示します。
メモ:
• a、:a、::aは、Names Default To Hereモードをオフにした場合、JMP 9以降でも同義です。
• 現在の実行ポイントがユーザ定義の関数内、またはLocal 関数やParameter関数のモデル定義部分にある場合、Default Localを使用すると、Local名前空間が作成に使用されます。ただし、参照の規則は変わりません。
形式 |
参照タイプ |
参照ルール |
作成ルール |
---|---|---|---|
a |
非修飾 |
Names Default To Hereモードがオンの場合、次の場所で変数を探します。 • Local名前空間 • Here名前空間 • 現在のデータテーブル Names Default To Hereモードがオフの場合、次の場所で変数を探します。 • Local名前空間 • Here名前空間 • Global名前空間 • 現在のデータテーブル |
• Names Default To Hereモードがオンの場合、Local名前空間内またはHere名前空間内に変数を作成する。 • Names Default To Hereモードがオフの場合、Local名前空間内またはGlobal名前空間内に変数を作成する。 |
:a |
現在のデータテーブル |
現在のデータテーブル内で変数を探す。 |
(該当なし) |
::a Global:a |
Global |
Global名前空間内で変数を探す。 |
Global名前空間内に変数を作成する。 |
ns:a dt:a Here:a "name":a expr:a |
修飾 |
指定された名前空間内で変数を探す。変数が見つからない場合、エラーが戻されます。 |
指定された名前空間内に変数を作成する。ぞれ以前の値は上書きされます。 |
ns["a"] ns[expr] |
添え字 |
指定された名前空間内で変数を探す。変数が見つからない場合、エラーが戻されます。 |
指定された名前空間内に変数を作成する。ぞれ以前の値は上書きされます。 |
Platform:a |
修飾 |
プラットフォームに含まれている変数を探す。 |
プラットフォーム内に変数を作成する。 |
Local:a |
修飾 |
ローカル関数内において、該当する変数を探す。なお、他の関数を呼び出している場合、呼び出しに使われている引数も、範囲に含みます。詳細については、Local:aの例を参照してください。 |
変数が指定されたローカル関数内に、変数を作成する。なお、他の関数を呼び出している場合、呼び出しに使われている引数も、範囲に含みます。 |
Window:a |
修飾 |
New Windowのwindow名前空間内で、変数を探す。 |
New Windowのwindow名前空間内に変数を作成する。 |
Box:a |
修飾 |
New Window内に指定されたContext Boxの中で、変数を探す。 |
New Window内に指定されたContext Boxの中に変数を作成する。 |
サンプルスクリプト |
ログ出力 |
---|---|
Delete Symbols(); Local( {d1l1 = 12}, local:f1f1 = Function( {fa1, fa2}, {fl1 = 99}, local:fa12 = fa1 + fa2; Local( {d2l1 = 56}, local:l2l2 = 78; Show( fa12 ); Show( fl1 ); Try( Show( d1l1 ), Write( "\!n\!n***Error=" || Char( exception_msg ) || "\!n" ) ); Show Symbols(); ); local:fa12; ); f1f1( 2, 3 ); );
|
fa12 = 5; fl1 = 99; dil1 = 12;
// Local
d2l1 = 56; l2l2 = 78;
// 2 Local
// Local
fa1 = 2; fa12 = 5; fa2 = 3; fl1 = 99;
// 4 Local
// Local
d1l1 = 12;
// 1 Local
5 |