カスタム関数を定義するには、New Custom Function()を使います。関数が定義されたら、Add Custom Functions()を用いて、現在実行されているJMPのインスタンスでその関数を追加、または有効化できます。同様に、Remove Custom Functions()を用いて関数を削除したり、無効にすることもできます。
New Custom Function()は3つのパラメータ(namespace、functionName、functionDefinition)を必要とします。その他のメッセージにより、以下のものを定義できます。
funcDef = Function( {x, y = 10}, x + y );
description = ”この関数は2つの値を加算する。引数が1つだけ指定された場合、2番目の引数のデフォルトは10になる。”;
// expr()の中の例には複数のステートメントを指定可能
ex2 = Expr(
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
myNameSpace:Add Ten( :age[4], 20 );
);
parmHint1 = "x value";
parmHint2 = "<y=10>";
// 変数を用いて関数を定義
// コマンドは、新規のカスタム関数の引数として受け入れることも可能
newAdd = New Custom Function( "myNamespace", "Add Ten", funcDef );
newAdd << Description( description );
newAdd << Prototype( "myNameSpace:Add Ten(x,<y=10>)" );
newAdd << Example( "myNameSpace:Add Ten(4)" );
// 例は、NameExpr()で渡す
newAdd << Example( Name Expr( ex2 ) );
newAdd << Parameter( "Number", parmHint1 );
newAdd << Parameter( "Number", parmHint2 );
newAdd << Formula Category( "数値の演算" );
// 「myNamespace:Add Ten」関数をシステムに追加
Add Custom Functions( newAdd );
図9.8 スクリプトの索引のカスタム関数
Formula Categoryメッセージは計算式エディタのカテゴリリストに新しいカテゴリを作成します。カスタム関数は、計算式エディタでは下線付きで表示されます。Parameterメッセージで指定したヒントのテキストも確認できます。
図9.9 計算式エディタのカスタム関数
カスタム関数を削除するには、Remove Custom Functions( {"名前"} )を使用します。
Remove Custom Functions( {"myNamespace:Add Ten"} );