データテーブルに変化があったときにメッセージを受け取るようにするようには、Subscribeメッセージを使います。たとえば、列が追加または削除されたときにログにメッセージを送りたいとしましょう。
dt << Subscribe( "name"(<"client">), On Delete Columns | On Add Columns | On Add Rows | On Delete Rows | On Rename Column | On Close | On Save | On Rename ( function ) );
dt << Unsubscribe("keyname", On Delete Columns | On Add Columns | On Add Rows | On Delete Rows | On Close | On Col Rename | All);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
delRowsFn = Function( {a, b, rows},
dtname = ( a << Get Name());
Print( dtname );
Print( b );
Print Matrix( rows );
);
addRowsFn = Function( {a, b, insert},
dtname = ( a << Get Name() );
Print( dtname );
Print( b );
Print( insert );
);
dt << Subscribe( "Test Delete", onDeleteRows( delRowsFn, 3 ) );
dt << Subscribe( "Test Add", onAddRows( addRowsFn, 3 ) );
Subscribe to Data Table List()は、新しいデータテーブルを追加したとき、または閉じたときに、通知が出されるようにするデータテーブルのリストへの登録を行います。次の例は、登録および登録解除の方法を示しています。
f2 = Function( {x}, Show( x ) );
Show( Subscribe to Data Table List( "My Data", OnClose( f2 ) ) );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Wait( 2 );
Close( dt );
Show( Unsubscribe to Data Table List( "My Data" ) );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
appname1 = dt << Subscribe( "", On Close( Print( "データテーブルを閉じる" ) ) );
appname2 = dt << Subscribe(
""( "client" ),
On Close(
Function( {dtab},
dtname = ( dtab << Get Name() );
Print( dtname );
)
)
);
dt << Unsubscribe( appname1, On Close );
dt << Run Script( "一変量の分布" )