更改列 USL 和 LSL 属性的 JMP 脚本我有一个 JMP 脚本函数,它从存储在“Ntwk Osnr Spec Table Filename”变量中的文本文件中获取一组规范限制。 我正在尝试更改“Ntwk Osnr 数据表”数据表中“PctDiff_ModBer_q_calcBer”列的 USL 和 LSL 列属性。 但是当我运行以下 JMP 脚本命令时,我没有收到脚本错误,但 USL 和 LSL 列属性没有更新。 从规格限制获得的规格限制是 1.7。 当我通过以下几行时,1.7 的值在 Speclimit 变量中更新,但 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 )}
);脚本回复:更改列 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 将一个表达式插入另一个表达式
回复:更改列 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
)
);