想要了解MUMPS语法方面的帮助

时间:2011-03-18 07:43:58

标签: syntax mumps

您能告诉我以下声明的含义吗?

S:%B= %B="@1" S:%E= %E="@999"

3 个答案:

答案 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变量设置为相应的变量。