You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过字符串名称获取.cmm脚本中全局MACRO的变量值

PC-DMIS .cmm脚本间接引用宏变量报错的解决方法

问题原因

你遇到的"operand expected"错误,是因为PC-DMIS对直接使用&&error_name进行间接变量赋值的语法解析存在限制——即便调试窗口能读取变量值,脚本执行时仍会因语法校验不通过报错。

修复方案

改用ASSIGN命令实现间接引用,这是PC-DMIS官方支持的动态变量引用方式,能避免语法错误。同时修正变量名处理的细节问题:

&error_name = STRING.LoWeR("&error_name") + "_low"
// 用ASSIGN实现间接变量引用
ASSIGN/&modulus = &&error_name
VAR.IF (FS_ErrorIdStatus[&modulus] != 0)
(
  // 移除之前添加的_low后缀,避免错误名称冗余
  &error_name = STRING.REPLACE(&error_name, "_low", "")
  // 直接使用变量值转大写,而非字符串字面量
  &error_name = "ERR_MON_" + STRING.UPpeR(&error_name) + "_VOLTAGE"
  GOSUB TC_DEBUG_MESSAGE " --             FAILED: " + &error_name + " was reported"
  RETURN FALSE()
)

关键细节说明

  • ASSIGN命令的必要性:PC-DMIS的直接赋值语句对间接引用的语法支持不完善,ASSIGN/&var = &&dynamic_name是更可靠的写法,能通过脚本的语法校验。
  • 变量名修正:原代码中STRING.UPpeR("&error_name")会把字符串"&error_name"转大写,而非变量&error_name的实际值,需去掉引号;同时添加的_low后缀会导致最终错误名称冗余,用STRING.REPLACE移除更合理。

内容的提问来源于stack exchange,提问作者Ondina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:15:24