データテーブルを開くには、Open()関数を使用します。
• データテーブルの参照を戻さずに、ただデータテーブルを開くには:
Open( "$SAMPLE_DATA/Big Class.jmp" ); // データテーブルを開くのみ
• データテーブルを開いてその参照を維持するには:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ); // 開いて参照を保存する
データテーブルのパスとしては、引用符で囲んだ文字リテラル(絶対パスまたは相対パス)か、パス名を戻す引用符のない式が使えます。相対パスは、.jslファイルの場所を基準として相対的に解釈されます(保存されたスクリプトの場合)。保存されていないスクリプトの場合、パスは、プライマリパーティション(Windowsの場合)または<ユーザ名>/Documentsフォルダ(macOS)との相対で解釈されます。
Open( "../My Data/Repairs.jmp" ); // WindowsおよびmacOSにおける相対パス
Open( "::My Data:Repairs.jmp" ); // macOSにおける相対パス
Open( "C:/My Data/Repairs.jmp" ); // 絶対パス
JMPには、ディレクトリやファイルにより簡単にアクセスする方法(パス変数)が用意されています。この方法では、ディレクトリやファイルの完全なパスを入力する代わりに、Open()式にパス変数を含めます。たとえば、JMPのサンプルスクリプトで広く使われるパス変数の$SAMPLE_DATAは、Samples/Dataフォルダにあるファイルを開きます。パス変数について詳しくは、パス変数を参照してください。
データテーブルを開くたびに完全パスを入力する手間を省くには、ファイルパスの文字列を定義して、それをファイル名に連結します。
myPath = "C:/My Data/Store25/Maintenance/Expenses/";
Open( myPath || "Repairs.jmp" );
この方法でデータテーブルを開くと、開いたデータテーブルがメモリに格納されます。つまり、スクリプトで開けようとしているデータテーブルがすでに開いている場合は、コンピュータに保存されているデータテーブルが開く代わりに、開いた状態でメモリに格納されたデータテーブルが表示されます。
開いたデータテーブルに依存するスクリプトでは、テーブルが開いているかどうかをIs Empty()またはIs Scriptable()を使ってテストします。次の例では、スクリプトが「Big Class.jmp」で二変量の分析を行った後、データテーブルを閉じます。スクリプトで後述されている一元配置分析に進む前に、If Scriptable()によって、開いたデータテーブルがテストされます。1(真)が戻された場合、テーブルは開いており、スクリプトは続行します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = dt << Bivariate( Y( :"身長(インチ)"n ), X( :年齢 ), Fit Line );
Close( dt );
If( Not( Is Scriptable( dt ) ),
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ),
);
obj = dt << Oneway( Y( :"身長(インチ)"n ), X( :年齢 ), Means( 1 ), Mean Diamonds( 1 ) );
データテーブルに対して別のスクリプトを実行する前に、データテーブルが開いているかどうかをチェックし、開いている場合はいったんデータテーブルを閉じて任意の変更を破棄するとよい場合もあります。「Big Class.jmp」が開いている場合には閉じる、というスクリプトは、次のように記述できます。
Try( Close( Data Table( "Big Class" ) ) );
開いているデータテーブルがないときに、データテーブルを開くようユーザに促すには、If()式を使用します。ユーザがテーブルを開かないときはスクリプトが終了するようにします。次のスクリプトは、その一例です。
dt = Current Data Table();
If( Is Empty( dt ),
Try( dt = Open(), Throw( "開かれているデータテーブルはありません。" ) )
);
ユーザは、データテーブルを開くよう促されます。ユーザがデータテーブルを開かずに[キャンセル]をクリックした場合、ログにエラーが表示されます。
データテーブルを開いて特定の列セットだけを表示するには、Open()式の中でそれらの列を指定します。これは、大規模なデータテーブルのうち、一部の列だけが必要な場合に有効です。
次の例は「Big Class.jmp」を開き、「年齢」、「身長(インチ)」、「体重(ポンド)」の3列のみを含めます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp", Select Columns( "年齢", "身長(インチ)", "体重(ポンド)" ) );
開いているデータテーブルのうち、指定の列だけを除外することもできます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp", Ignore Columns( "名前", "性別" ) );