列のUSLおよびLSLプロパティを変更するJMPスクリプト「NtwkOsnrSpecTableFilename」変数内に保存されているテキストファイルから一連の仕様制限を取得するJMPスクリプト関数があります。 「NtwkOsnrデータテーブル」データテーブル内の「PctDiff_ModBer_q_calcBer」列のUSLおよびLSL列のプロパティを変更しようとしています。 しかし、次のJMPスクリプトコマンドを実行すると、スクリプトエラーは発生しませんが、USLおよびLSL列のプロパティは更新されません。 スペックリミットから得られるスペックリミットは1.7です。 次の行をステップスルーすると、Speclimit変数内で1.7の値が更新されますが、USLおよびLSL列のプロパティは更新されません。 Speclimit変数を定数1.7に設定すると、USLとLSLの列のプロパティがそれぞれ1.7と-1.7に設定されます。 したがって、問題はテキストファイルから値を取得することである必要がありますが、問題は理解できます。 テキストファイルから仕様の制限を取得し、列のプロパティを更新することで解決策を教えてもらえますか?
Include( "$CommonScriptPath/Function - Obtain Spec Limit Value.jsl" );
Speclimit = ObtainSpecLimit(
Ntwk Osnr Spec Table Filename, DeviceType, "*", "*", "ber_diffQcalc"
);
dt = Open( Ntwk Osnr Data Table Filename, invisible );
Data Table( dt ):PctDiff_ModBer_q_calcBer << Set Property(
"Spec Limits",
{LSL( (Speclimit * (-1)) ), USL( Speclimit ), Target( 0 ), Show Limits( 1 )}
);スクリプティングRe:列のUSLおよびLSLプロパティを変更するJMPスクリプト値が数値であることを確認し、Eval(EvalExpr())およびExpr()を使用してみてください
Include("$CommonScriptPath/Function - Obtain Spec Limit Value.jsl");
Speclimit = ObtainSpecLimit(Ntwk Osnr Spec Table Filename, DeviceType, "*", "*", "ber_diffQcalc");
dt = Open(Ntwk Osnr Data Table Filename, invisible);
Eval(
Eval Expr(
Data Table(dt):PctDiff_ModBer_q_calcBer << Set Property(
"Spec Limits",
{LSL(Expr(Speclimit * (-1))), USL(Expr(Speclimit)), Target(0), Show Limits(1)}
)
)
);
Eval Insert、Eval Expr、Parse、およびSubstituteを使用して、ある式を別の式に挿入します
Re:列のUSLおよびLSLプロパティを変更するJMPスクリプトJMPリスト内で指定している計算は、実行前に評価されません。したがって、Substitution関数がそれを実行する前に、ステートメントを完全に解析および評価する必要があります。
Include( "$CommonScriptPath/Function - Obtain Spec Limit Value.jsl" );
Speclimit = ObtainSpecLimit(
Ntwk Osnr Spec Table Filename, DeviceType, "*", "*", "ber_diffQcalc"
);
dt = Open( Ntwk Osnr Data Table Filename, invisible );
Eval(
Substitute(
Expr(
Data Table( dt ):PctDiff_ModBer_q_calcBer <<
Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( 0 ), Show Limits( 1 )}
)
),
Expr( __LSL__ ), Speclimit * (-1),
Expr( __USL__ ), Speclimit
)
);