我正在研究一种分析工具,我需要MUMPS示例代码。任何人都可以提供MUMPS实时代码或示例代码吗?同时建议一些链接。
答案 0 :(得分:18)
这是我为了好玩而写的一些MUMPS。我想如果你能分析一下,你的工具就可以了:
Q N R,Q,C,D,E,W,B,G,H,S,T,U,V,F,L,P,N,J,A S N=$G(N),Q='N,F=Q+Q,P=F+F,W=$L($T(Q))
S W=$E(W,Q),S='N_+N,W=W-F*S,L=$G(L),R=$C(Q_F_P),R(F)=$C(F+Q_F),R(P)=$C(W-F) W #
S T=$E($T(Q+F),F,W\S)_$C(W+S+F) X T S B=$P(T,$C(P_P),F),C=B\(W*W),D=B-(C*W*W)\W
F G=S-Q:F:S+F+Q S E=B-(C*W*W+(D*W)),H=$E($T(Q),G),@H=$S(@H<S:'Q,Q:N)_@H,T=C_D_E
F A=Q:Q:W\S S J=$E(T,A),C(F)=$S(J>(F+Q)&(J<(S-F)):Q,Q:+N),C(P)=$S(J#F:Q,Q:+N) D
.S C(Q)=$S(J<(S-F):+N,Q:Q),C(F+Q)=$S(J>Q&(J<(S-F))&(J'=(P+'L))&(J'=(P)):Q,Q:+N)
.S H('L)=L F S H(N?.E)=$O(C(H('$G(N)))) Q:H('+L)=L S F(A,H('L))=C(H(W[(W\S)))
F U=Q:Q:P W !,R F V=Q:Q:P+F W $S(F(V,U):'Q,Q:$C(P_(W\S))) W:'(V#F) $C('N_F_F+F)
W !!,R(F)_C_R(P)_D_R(P)_E_R(F) X $RE($E($T(Q),Q+F,P+Q))_R(P)_'N W # G:N=L Q+F Q
看看马,没有文字!
输出二进制时钟:
:D Q^ROU
|..|..|..|
|..|..|.0|
|..|.0|0.|
|..|00|..|
00:13:24
答案 1 :(得分:4)
GitHub实际上托管了许多MUMPS软件,但不幸的是它被标记为Objective-C或Matlab,因此在那里搜索MUMPS代码并不容易。以下是我知道至少部分使用MUMPS完成的一些项目:
答案 2 :(得分:3)
我认为这不足以用于分析目的,但M[UMPS] by Example有很多小例子。 MUMPS Wikipedia页面上还有一些冗长的样本。我不知道他们是否独立。没有自己测试过。
答案 3 :(得分:3)
VistA是针对MUMPS撰写的退伍军人管理局的开源EMR。您可以在此处下载VistA wiki:OpenVistA Download Page
我自己没有尝试过下载,因此您可能需要安装MUMPS才能访问源代码。祝你好运!
答案 4 :(得分:3)
答案 5 :(得分:0)
这是“你好世界”:w "Hello world!",!
w
是write
的缩写 - 两者都可以接受,但缩写更为惯用。文字!
是换行符。
这是一个斐波纳契实现,首先没有缩写,然后是
innerFibonacci(value,cache)
if $data(cache(value))=1 quit cache(value)
set cache(value)=$$innerFibonacci(value-1,.cache)+$$innerFibonacci(value-2,.cache)
quit cache(value)
fibonacci(value)
new cache
set cache(0)=1
set cache(1)=1
quit $$innerFibonacci(value,.cache)
以下是更惯用的缩写:
innerFibonacci(value,cache)
i $d(cache(value))=1 q cache(value)
s cache(value)=$$innerFibonacci(value-1,.cache)+$$innerFibonacci(value-2,.cache)
q cache(value)
fibonacci(value)
n cache
s cache(0)=1
s cache(1)=1
q $$innerFibonacci(value,.cache)
现在 - MUMPS中的递归是一件非常危险的事情,因为MUMPS解释器不会自动将尾递归转换为迭代 - 所以这很容易就会导致很大的值。
这里有一个更多的“MUMPS-y”示例,它实际上利用了MUMPS的单一数据结构,它本质上是一个排序数组,其索引可以是数字或字符串。使用^
将这些数组前缀保存到磁盘。 $
事物是语言内置的功能。 q:
是quit
命令的后置条件,意思是“如果人等于”,则退出。
这里没有缩写,然后是:
peopleFoodCombinations(people,food)
new person
for set person=$order(people(person)) quit:person="" do
. set ^PEOPLE(person,"favoriteFood")=$get(food(person))
quit
现在使用缩写:
peopleFoodCombinations(people,food)
n person
f s person=$o(people(person)) q:person="" d
. s ^PEOPLE(person,"favoriteFood")=$g(food(person))
q
答案 6 :(得分:0)
以下是代码示例,循环遍历全局,遍历它 并在终端中打印数据。
TESTLOG
S TC=""
F S TC=$O(^TCLOG(TC)) Q:TC="" D
. S LogDT=""
. F S LogDT=$O(^TCLOG(TC,LogDT)) Q:LogDT="" D
. . S Type=""
. . F S Type=$O(^TCLOG(TC,LogDT,Type)) Q:Type="" D
. . . Q:Type'="UPDATE"
. . . S LogData=$G(^TCLOG(TC,LogDT,"UPDATE"))
. . . W !,LogData
Q
并找到以下链接以获取更多参考资料 http://www.vistapedia.com/index.php/MUMPS_Code_Examples 强>