スクリプトエディタウィンドウも表示ツリーの1つなので、JSLスクリプトを記述して、スクリプトエディタウィンドウの内容を変更したり保存したりできます。
New Scriptというコマンド関数はありません。代わりに、新しいスクリプトウィンドウを開く場合は、New Window()関数を使い、それがスクリプトウィンドウであることを知らせるメッセージを送ります。
ww = New Window( "Window Title", <<Script, "Initial Contents" );
最後の引数はオプションです。文字列を指定した場合は、新しいスクリプトウィンドウにその文字列が含まれます。
このNew Windowの例では、wwは、ウィンドウ全体であるディスプレイボックスへの参照です。スクリプトウィンドウに書き込みを行うには、書き込み先であるディスプレイボックス部分への参照を取得する必要があります。このディスプレイボックスはscript boxという名称です。
ed = ww[Script Box(1)];
このように取得した参照(この例では、ed)を使えば、テキストの追加・削除・取得ができます。
ed << Get Text();
"Initial Contents"
スクリプトウィンドウ内のすべてのテキストを設定するには、Set Textを使用します。次のコマンドは、スクリプトウィンドウ内のすべてのテキストをクリアした後、「aaa=3;」というテキストを追加し、最後に改行を入力します。
ed << Set Text( "aaa=3;\!N" );
スクリプトウィンドウの最後にテキストを追加するには、Appendを使用します。
ed << Append Text( "bbb=1/10;" );
ed << Append Text( "\!Nccc=4/100;" );
特定の行番号におけるテキストを取得するには、Get Line Textコマンドを使用します。指定の行番号のテキストを新しいテキストに置き換えるには、Set Line Textコマンドを使用します。
ed << Get Line Text( 2 );
ed << Set Line Text( 2, "bbb = 0.1;" );
スクリプト内の総行数を取得するには、Get Line Countメッセージを使用します。Get Linesメッセージは、各行のテキストを要素としたリストを戻します。
ed << Get Line Count();
ed << Get Lines();
スクリプトの体裁を読みやすく整えるには、Refromatメッセージを使用します。
ed << Reformat();
スクリプトウィンドウ内のスクリプト全体を実行するには、Runメッセージを用います。
ed << Run();
スクリプトを保存せずにスクリプトウィンドウを閉じるには、他のJMPウィンドウの場合と同じく、ウィンドウにClose Windowメッセージを送ります。
ww << Close Window( nosave );
スクリプトを保存するには Save Textメッセージを、表示するには Load Text Fileメッセージを用います:
ww = New Window( "Test", <<Script, "Open(\!"$SAMPLE_DATA/Big Class.jmp\!");");
ww << Save Text( "$TEMP/Test.jsl" );
Write( Load Text File( "$TEMP/Test.jsl" ) );
メモ: スクリプトがスクリプトウィンドウに読み込まれると、そのウィンドウは「dirty」(変更後保存されていないことを表す)であるとみなされます。このプロパティを削除するには <<Set Dirty(0)を使用します。このメッセージを送らない場合、ウィンドウを閉じるときに、スクリプトを保存するかどうかを確認するメッセージが表示されます。
次の例では、スクリプトを保存してウィンドウを閉じています。
ww = New Window( "Test", <<Script, "Open(\!"$SAMPLE_DATA/Big Class.jmp\!");");
ww << Save Text( "$TEMP/Test.jsl" );
ww << Close Window();