在MUMPS语句中查询

时间:2011-03-21 10:20:21

标签: mumps

I $ P(GIH ,, 24)= S $ P(GIH,24)=“C”S
在上面的MUMPS声明中,两个S的含义是什么?

4 个答案:

答案 0 :(得分:2)

首先我要说的是,原始声明不是标准MUMPS或InterSystems Cache或GT.M代码。即使广泛地猜测最初意味着什么,最终的S在线也不是你在MUMPS中会做的事情。单个S可以是SET命令,但您仍然没有任何参数可以告知可以分配哪个变量,或者应该为其分配什么值。

我的其余部分是试图弄清楚它的含义。

某些软件似乎打破了您的问题。无论是在stackoverflow还是剪切和粘贴过程中都将它放在这里:

我看到了:

I $ P(GIH ,, 24)= S $ P(GIH,24)=" C"小号

上述MUMPS声明中两个S的含义是什么?

很难弄清楚你的意思,因为它需要假设引用可能是什么以及哪些可能已被问题的传输删除。

首先,让我们做一些我们认为合理的事情。 $ P通常是内置(内在)函数$ PIECE的缩写。我独自站立可能是一个IF命令 独自站立的S可能是一个SET命令。这会使您的示例出现问题,因为MUMPS代码行的格式为COMMAND COMMAND-ARGUMENT。

除了注意:我还试图将文本COMMAND-ARGUMENT放在"尖括号"即:在单词的开头有一个小于字符,在结尾有一个大于字符。 COMMAND-ARGUMENT文本刚刚消失。这意味着stackoverflow将其视为HTML标记。我注意到此编辑窗口顶部有一个代码标记,可能有帮助,也可能没用。

如果我们对上面的代码进行扩展,我们得到:

IF $ PIECE(GIH ,, 24)= SET $ PIECE(GIH ,, 24)=" C" SET

当我们扩展最终的S时,它看起来像一个SET命令,但是没有任何set-argument。

注意,如果这是在Cache系统中,我们可能有一个Cache允许的额外空格的例子,这在标准MUMPS中是不允许的,即S可能是IF中等式运算符的右侧。命令。只有当Cache还允许SET命令的参数在没有实际SET命令的代码中时,这才有意义。 即:

IF $ PIECE(GIH ,, 24)= S $ PIECE(GIH ,, 24)=" C" SET

我们仍然必须连续处理$ PIECE内部函数的两个逗号。目前,连续使用两个逗号表示缺少参数只能在程序员编写的代码中使用,而不能在使用内置函数时使用。因此,这可能是我们可以猜测您的意思或最初粘贴的地方。

如果我们输入双引号,我们遇到的问题是$ PIECE命令(根据分隔符分隔字符串)会有一个零长度的带引号字符串作为其第二个参数。这和有空参数一样错误。

因此,如果我们假设带有尖括号的带引号的字符串,我们会为您的原始行获取此内容:

IF $PIECE(GIH,"<something>",24)="<something>" SET $PIECE(GIH,"<something>",24)="C" SET

注意:我刚看到Code标记允许使用严重重音来避免假设一行是HTML - 这很好,因为重音不是MUMPS编码中使用的字符。

正如另一个回复中所提到的,SET- $ PIECE-ARGUMENT表单用于更改存储在特定分隔子串位置的数据库中的数据。

所以这段代码可能适合猜测,但它远远超出你可能做或不做的事情。所以我现在停下来,直到得到反馈,这甚至接近你想要的。正如我在第一篇文章中所说,这仍然不是很有效的代码。

答案 1 :(得分:1)

这很奇怪,但我认为正在发生的事情是:

I $P(GIH,<null>,24)=<null>

使用第二个参数null调用$ PIECE将使用您指定的值替换整个字符串,在这种情况下,该值也为null。它看起来像是一种清除GIH值并允许控制流入下面的SET语句的复杂方式。我严重怀疑$ PIECE设置$ T标志,这意味着将此调用为IF运算符的条件可能不是按照您希望的方式工作。

S $P(GIH,,24)="C"

下一个陈述看起来很像第一个 - 用“C”替换整个GIH。

S

我不认为最后一个SET是有效的MUMPS。

为什么这不是如下所示:

s GIH="C"

希望有所帮助!

答案 2 :(得分:1)

也许IntersystemsCaché以不同的方式处理这种语法,但是当我在Caché中尝试时,该代码会导致语法错误。可能有其他版本的MUMPS有效,但我认为不是。

答案 3 :(得分:0)

正如其他人指出的那样,该声明无效,似乎缺少了一些内容

但是S是腮腺炎中的SET命令


以下是这样的语句:

I $ P(GIH, “ ^” ,24)= “ P” S $ P (GIH, “ ^” ,24)=“ C” S UPDATEFLG = 1


在这种情况下,GIH可能类似于:

GIH = 256 ^^^ 42 ^^^^ Mike ^^^^^^^^^^^^^^^^^ P ^^^


这将使此评估为TRUE:

I $ P(GIH, “ ^” ,24)=“ P”


如此之后: S $ P(GIH,“ ^”,24)=“ C”


GIH将是:

GIH = 256 ^^^ 42 ^^^^ Mike ^^^^^^^^^^^^^^^^^ C ^^^


然后它将设置变量UPDATEFLG = 1

希望这会有所帮助:-)