スクリプトを強制的に連続的に実行するにはどうすればよいですか?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />現在の JSL スクリプトは、ステップ実行すると完全に機能しますが、実行するといくつかのエラーが発生する可能性があります。wait() 関数を入れることでこれにある程度対処できますが、常に機能するとは限りません。スクリプトの先頭で呼び出して、スクリプトを順次実行できる単純な関数はありますか?
Re: スクリプトを強制的に連続して実行するにはどうすればよいですか?どうやら、私が期待していたほどバラ色ではないようです。 一部のコードは、onclose() コマンドで正しく実行されません。'dt << sort(...)' は内部の onclose() で正しく動作しませんでしたが、内部の onclose() をコメントアウトすると正常に動作しました。
Re: スクリプトを強制的に連続して実行するにはどうすればよいですか?返信いただきありがとうございます。 関数として設定しようとしましたが、それでもユーザー入力を待ちませんでした。再コード化と値の順序付けに関する質問については、私はよく知っていますが、それら (または実際にはネイティブ関数) の実行にもっと重点を置くべきでした。モーダルこれは、コードの次の行に進む前に関数を完了するような方法で実行されることを期待していました。
jslを使用してこれを直接再コードすることに関してあなたが言っていることはわかりますが、他のタスクと常に同じ(ハードコードされたスクリプトは問題ありません)多くの一般的なタスクを実行するためにjsl +ネイティブUIの組み合わせを期待していましたその入力/出力は変更されるため、値の順序付けや再コード化などのネイティブ UI に適しています。 見つけましたCraig の 3 月の投稿彼はこれを行うことができるものを投稿しましたが、列名 -> 関数ウィンドウの名前付けのため、少し制限があります。 私の場合、列名を文字列で上部に表示するので、これで問題ありません。 ここでは、2 レベルの対話性を実現するために変更されています。 JMP13規格でテスト済み。
dt = Open( "$sample_data/big class.jmp" );
dt << Go To( :sex ) << Recode; // First interactivity, as a test, change "F" to "Female"
Window( "Recode" ) << onclose(
dt << Go To( :sex );
main menu("column info"); // second interactivity, as a test, change value ordering properties.
Window( "sex" ) << onclose(
dt:Sex[ dt << Get Rows Where( :Sex == "M" )] = "Male";
);
);Re: スクリプトを強制的に連続して実行するにはどうすればよいですか?かなり複雑なスクリプトをコーディングする場合、通常はコードに次の構造を使用します。
Main = Expr(
returna = A(passing variables);
returnb = B(passing variables);
);
A = Function({Passed variables},
processing code
);
B = Function({Passed variables},
processing code
);
// Enter the script by executing the Main section
Main;
Recode 項目と Col Info 項目に関する質問については、答えは「いいえ」または「はい」です。 インタラクティブな JMP から Recode 要素を実行する直接的な関数はありません。 これは、オープン JSL の機能を複製する方が簡単だからです。
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt:Sex[ dt << Get Rows Where( :Sex == "F" )] = "Female";
dt:Sex[ dt << Get Rows Where( :Sex == "M" )] = "Male";
// or
For Each Row(
If( :Sex == "F", :Sex = "Female",
:Sex = "Male"
);
[Col Info] ダイアログ ボックスの項目に関しては、書式設定、値の順序などの列プロパティ、仕様制限などはすべて JSL で必要な内容に変更できます。
これらすべてについては、スクリプト ガイドで説明されています。
ヘルプ==>書籍==>スクリプトガイド
および/またはスクリプトインデックス内
ヘルプ==>スクリプトインデックス
Re: スクリプトを強制的に連続して実行するにはどうすればよいですか?
@txnelson書きました:
私が使用する方法は、スクリプトを機能コンポーネントに分割し、スクリプトの制御セクションにスクリプトをステップ実行させ、必要なときにコンポーネントを呼び出すことです。通常、コードは EXPR(() セクションに配置します。EXPR() に配置されたコードは、制御セクションによって呼び出されるまで実行されません。
必要なときにコンポーネントを呼び出すということは、コントロール セクション内の式を呼び出してそのまま実行することを意味するのでしょうか、それとも前の関数を終了するために手動で個別に呼び出す必要があるのでしょうか? 前者の場合、実際に待機するように制御セクションはどのように構成されているのでしょうか?
recode や列情報 (値の順序を変更する) などのネイティブ関数をモーダル ウィンドウ/関数として呼び出す方法はありますか?
ありがとう、
マイク
Re: スクリプトを強制的に連続して実行するにはどうすればよいですか?どのテーブルが現在アクティブなテーブルであるかを追跡するのではなく、どのプラットフォームを実行するかというメッセージをデータ テーブルに渡すことがベスト プラクティスです。したがって、次のようにするのではなく、
dt = データテーブル( "データテーブル xxx" ) ;
dt << 選択をクリア;
dt<<ウィンドウを最前面に移動;
二変量(X(....
dt = データテーブル( "データテーブル xxx" ) ;
dt << 二変量(X(....
二変量プラットフォームが「dt」によって参照されるデータ テーブル上で実行されることを保証します。
Re: スクリプトを強制的に連続して実行するにはどうすればよいですか?スクリプトを自動的に実行するといくつかのエラーが発生しましたが、手動でテストした場合は問題ありませんでした。
この種のエラーは、間違ったテーブルに基づいてプロットを実行しようとしたときによく発生します。
今、スクリプトでプロット/チャートを実行する前にこれらの行を追加します
dt = データテーブル( "データテーブル xxx" ) ;
dt << 選択をクリア;
dt<<ウィンドウを最前面に移動;
Re: スクリプトを強制的に連続して実行するにはどうすればよいですか?ご迷惑をおかけして申し訳ございません。
私たちの目標は、待って()スクリプトを実行するために。 UI のさまざまな要素 (ウィンドウ、プラットフォームなど) が、JSL の残りの部分に適切に応答する前に、完全にインスタンス化されるまでに時間がかかる場合があることはわかっています。 ただし、JSL で心配する必要がないように、これらの状況には内部的に対処したいと考えています。
したがって、追加することで解決できる状況に遭遇した場合は、待って()コードに追加して送信してください。技術サポートので、それらを追跡して解決できます。
ありがとう!
-ジェフ
Re: スクリプトを強制的に連続して実行するにはどうすればよいですか?置いた待機(0);コードのセクション間のステートメントをシーケンシャルに実行したい。
Re: スクリプトを強制的に連続して実行するにはどうすればよいですか?私が使用する方法は、スクリプトを機能コンポーネントに分割し、スクリプトの制御セクションにスクリプトをステップ実行させ、必要なときにコンポーネントを呼び出すことです。通常、コードは EXPR(() セクションに配置します。EXPR() に配置されたコードは、制御セクションによって呼び出されるまで実行されません。