I $P(GIH,,24)= S $P(GIH,,24)="C" S
上面 MUMPS 语句中的两个 S 是什么意思?
4 回答
首先让我说原始语句既不是标准 MUMPS 也不是 InterSystems Cache 或 GT.M 代码。即使大致猜测最初的意思,最后的 S 也不是你在 MUMPS 中会做的事情。单个 S 可以是一个 SET 命令,但是您仍然没有任何参数来告诉您可以分配什么变量,或者应该为其分配什么值。
我的其余回复试图弄清楚它可能意味着什么。
您的问题似乎被某些软件破坏了。无论是在stackoverflow上还是在剪切和粘贴过程中将其放在这里:
我看见:
我 $P(GIH,,24)= S $P(GIH,,24)="C" S
上面 MUMPS 语句中的两个 S 是什么意思?
很难弄清楚您的意思,因为这需要假设引号可能在哪里以及哪些可能已被问题传输删除。
首先,让我们做一些我们可以猜测是合理的事情。$P 通常是内置(内在)函数 $PIECE 的缩写。一个单独站立的 I 可能是一个 IF 命令,一个单独站立的 S 可能是一个 SET 命令。这遇到了您的示例的问题,因为一行 MUMPS 代码的格式是 COMMAND COMMAND-ARGUMENT。
旁注:我也只是尝试将文本 COMMAND-ARGUMENT 放在“尖括号”中,即:单词开头有一个小于字符,结尾有一个大于字符。文本 COMMAND-ARGUMENT 刚刚消失。这意味着 stackoverflow 将其视为 HTML 标记。我注意到此编辑窗口顶部有一个代码标记,它可能有帮助,也可能没有帮助。
如果我们对上面的代码进行扩展,我们会得到:
如果 $PIECE(GIH,,24)= 设置 $PIECE(GIH,,24)="C" 设置
当我们展开最后的 S 但它看起来像一个 SET 命令,但没有任何设置参数。
注意,如果这是在 Cache 系统中,我们可能有一个 Cache 允许的额外空格的示例,而标准 MUMPS 中不允许这些空格,即 S 可能是 IF 命令中相等运算符的右侧。这只有在 Cache 还允许 SET 命令的参数在没有实际 SET 命令的情况下出现在代码中时才有意义。IE:
如果 $PIECE(GIH,,24)=S $PIECE(GIH,,24)="C" 设置
对于 $PIECE 内部函数,我们仍然必须连续处理两个逗号。目前只允许在程序员编写的代码中使用连续两个逗号来表示缺少的参数,而不是在使用内置函数时。所以这可能是一个我们可以猜测你的意思的地方,或者最初粘贴的地方。
如果我们使用双引号,我们会遇到这样的问题:$PIECE 命令(它根据分隔符分隔字符串)将给出一个长度为零的带引号的字符串作为其第二个参数。这与空洞的论点一样错误。
因此,如果我们假设一个带尖括号的带引号的字符串,我们将为您的原始行得到以下内容:
IF $PIECE(GIH,"<something>",24)="<something>" SET $PIECE(GIH,"<something>",24)="C" SET
注意:我刚刚看到代码标记允许使用重音来避免假设一行是 HTML - 这很好,因为重音不是 MUMPS 编码中使用的字符。
正如另一个回复中提到的,SET-$PIECE-ARGUMENT 表单用于更改存储在数据库中特定分隔子字符串位置的数据。
所以这段代码可能很适合猜测,但它已经远远超出了你可能做过或可能没有做过的事情。所以我现在停下来,直到我们得到反馈,这甚至接近你想要的。正如我一开始所说,这仍然不是很有效的代码。
也许 Intersystems Caché 处理这种语法的方式不同,但是当我在 Caché 中尝试时,该代码会导致语法错误。可能还有其他版本的 MUMPS 有效,但我认为不是。
这很奇怪,但我认为正在发生的是:
I $P(GIH,<null>,24)=<null>
使用第二个参数 null 调用 $PIECE 会将整个字符串替换为您分配的值,在这种情况下,它也是 null。它看起来像是一种清除 GIH 值并允许控制流入以下 SET 语句的复杂方式。不过,我严重怀疑 $PIECE 是否设置了 $T 标志,这意味着将其称为 IF 运算符的条件可能无法按您希望的方式工作。
S $P(GIH,,24)="C"
下一个语句看起来很像第一个 - 将整个 GIH 替换为“C”。
S
我不认为最后一组是有效的 MUMPS。
为什么不写如下是我无法理解的:
s GIH="C"
希望有帮助!
正如其他人指出的那样,此声明无效,似乎缺少部分
但是 S 是 Mumps 中的 SET 命令
下面是这样的声明:
I $P(GIH, "^" ,24)= "P" S $P(GIH, "^" ,24)="C" S UPDATEFLG=1
在这种情况下,GIH 可能类似于:
GIH=256^^^42^^^^麦克^^^^^^^^^^^^^^^P^^^
这将使这个评估为 TRUE:
我 $P(GIH, "^" ,24)="P"
所以之后: S $P(GIH,"^",24)="C"
GIH 将是:
GIH=256^^^42^^^^麦克^^^^^^^^^^^^^^^C^^^
然后它将设置变量 UPDATEFLG=1