需要MUMPS样本代码

时间:2010-11-11 05:16:44

标签: mumps

我正在研究一种分析工具,我需要MUMPS示例代码。任何人都可以提供MUMPS实时代码或示例代码吗?同时建议一些链接。

7 个答案:

答案 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完成的一些项目:

  1. OSEHRA
  2. Reynard GT.M Server
  3. GT.M Term Size
  4. GT.M POSIX Extension
  5. Tetris in MUMPS
  6. Juicy MUMPS Example
  7. GT.M PCRE Extension
  8. GT.M Digest Extension
  9. DataBallet
  10. Source KIDS
  11. Software development tools for MUMPS

答案 2 :(得分:3)

我认为这不足以用于分析目的,但M[UMPS] by Example有很多小例子。 MUMPS Wikipedia页面上还有一些冗长的样本。我不知道他们是否独立。没有自己测试过。

答案 3 :(得分:3)

VistA是针对MUMPS撰写的退伍军人管理局的开源EMR。您可以在此处下载VistA wiki:OpenVistA Download Page

我自己没有尝试过下载,因此您可能需要安装MUMPS才能访问源代码。祝你好运!

答案 4 :(得分:3)

看这里:

http://www.faqs.org/faqs/m-technology-faq/part2/

向下滚动(或搜索)标题为“附录6”的部分(不带双引号)。

HTH 森

答案 5 :(得分:0)

这是“你好世界”:w "Hello world!",!

wwrite的缩写 - 两者都可以接受,但缩写更为惯用。文字!是换行符。

这是一个斐波纳契实现,首先没有缩写,然后是

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