問題
私は、一般および特定の聴衆向けに、多くの JMP トピックについて多くのプレゼンテーションを行っています。 聴衆が異なるだけでなく、同じラップトップで Mac と PC の仮想マシンを使用しています。
私の大きな問題は、JMP Journals のファイルへのリンクにあります。ジャーナルが PC 用の場合、パスは「y:\Byron\Example\..」のようになりますが、Mac の場合は「/Users/Byron/Examples/..」のようになります。 これは、各ファイル リンクをオペレーティング システム固有にコーディングするか、PC と Mac 用の 2 つのバージョンのジャーナルを作成することを意味します。
解決
私は何年も JSL を書いてきましたが、Joseph Morgan と Jeff Polzin とのランチの会話まで、これはうまくいきませんでした。 (実際、それは彼らの会話でした。私はちょうど聞いていました。天気の良い日に、JMP は私のリーグから少し外れています。)
JSL では、パス変数を設定できます。 私はずっと「$Sample_Data\Big Class.jmp」を使用してきました。その「$Sample_Data」の部分は、サンプル データ ディレクトリからファイルを取得するように JMP に指示するパス変数です。 パス変数の設定は非常に簡単です。次のように名前とパスを指定するだけです。
Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" )
これで、「$Examples\eraseme.jmp」などのファイル名を使用できます。
open("$Examples\eraseme.jmp")
このファイルを取得します。
これは、一般的なジャーナルを顧客固有のフォルダーに移動するときに非常に便利です。 ジャーナルと顧客固有のデータ ファイルは同じディレクトリにあるため、それらを取得するためにパスを使用する必要はありません。「$Examples\...」を使用して一般的なファイルにリンクすると、リンクが機能します。 しかし、これは小さな解決策にすぎません。 より大きな問題は、PC と Mac の切り替えです。
さまざまなオペレーティング システムに対処するために、JSL を使用して、オペレーティング システムに応じて次のように例のパスを定義します (これは非常に重要な部分です!)
If( Host is( Mac ), Set Path Variable( "Examples", "/Users/bywing/Byron Wingerd/Examples" ));
If( Host is( Windows ), Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" ));
JMP セッションの開始時に (またはジャーナルのボタンから) JSL を少し実行すると、ホスト オペレーティング システムで "$Example" が正しく評価されます。 これは、ファイル リンク「$Examples\eraseme.jmp」は、ジャーナルが開かれているオペレーティング システムに関係なく、「eraseme.jmp」を開くことを意味します。
討論
既存のスクリプトの迅速かつ簡単な方法は、この JSL をスクリプト ボタンに追加して整理することです。
Names Default To Here( 1 );
If( Host is( Mac ), Set Path Variable( "Examples", "/Users/bywing/Byron Wingerd/Examples" ));
If( Host is( Windows ), Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" ));
pvex = Get Path Variable( "Examples" );
Dialog(
Title( "PATH VARIABLE SET!" ),
vlist(pvextb1 = Text Box( "Path variable $Examples set to:" ),
pvextb2 = Text Box( pvex ),
Button( "OK" ))
);
これにより、パスが設定されたことを知らせる簡単なテキスト ボックス メッセージが表示されます。
この問題に対処するには、少なくとも十数の方法があると確信しています。このアプローチは、さまざまな人々の間でリンクが共有される既存のジャーナルで簡単に使用できます。 同様の方法またはより良い方法がある場合は、投稿してください。他の人がこの問題をどのように解決しているかを知りたいです。