您能告诉我以下声明的含义吗?
S:%B= %B="@1" S:%E= %E="@999"
答案 0 :(得分:6)
自行:
S:%B= %B="@1" S:%E= %E="@999"
实际上不是MUMPS代码,我同意其他的回答者说,将代码粘贴到此论坛可能存在问题。
您打算发布的最有可能的MUMPS代码是:
S:%B="" %B="@1" S:%E="" %E="@999"
完整说明,这是同一行上的两个MUMPS命令:
S:%B="" %B="@1"
S:%E="" %E="@999"
使用非Terse MUMPS,将是:
SET:%B="" %B="@1"
SET:%E="" %E="@999"
或者用英语,这些命令检查变量,如果它没有对该程序有意义的值,则为该变量赋值(SET)默认值。
对于名为%B的变量,当满足保护条件(%B =“”)时,将分配默认字符串值“@ 1”。同样,对于名为%E的变量,如果变量%E等于空字符串,则分配默认字符串值“@ 999”。
MUMPS中的“@”字符用于将值后期绑定到变量(在语言中称为间接),但必须后跟变量名称。 纯数字值(如“1”或“999”)不是变量的名称,因此这些默认值极不可能间接引用另一个值。
答案 1 :(得分:3)
假设这些集合解析为S:%B=""
(DTM和Cache在比较值时似乎默认不允许隐式null;有人请评论我是否错误),
set:%B="" %B="@1" set:%E="" %E="@999"
,相当于
if %B="" set %B="@1"
if %E="" set %E="@999"
对于%B和%E变量中的每一个,如果它是空字符串,则分别指定文字字符串值“@ 1”和“@ 999”。在SET,WRITE,DO等命令之后的冒号(:)标记为紧跟在冒号后面的语句。
至于语法,它只是像程序员那样丑陋。
答案 2 :(得分:1)
这称为条件SET
。如果它们为空,则将%B或%E变量设置为相应的变量。