11

我正在开发一个需要 MUMPS 示例代码的分析工具。谁能提供给我 MUMPS 实时代码或示例代码?还建议一些相同的链接。

4

7 回答 7

24

这是我为了好玩而写的一些 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
于 2011-06-15T22:14:42.177 回答
4

GitHub 实际上托管了许多 MUMPS 软件,但不幸的是,它被标记为 Objective-C 或 Matlab,因此在那里搜索 MUMPS 代码并不容易。以下是一些我知道至少部分使用 MUMPS 完成的项目:

  1. OSEHRA
  2. Reynard GT.M 服务器
  3. GT.M 术语大小
  4. GT.M POSIX 扩展
  5. MUMPS 中的俄罗斯方块
  6. 多汁 MUMPS 示例
  7. GT.M PCRE 扩展
  8. GT.M 摘要扩展
  9. 数据芭蕾
  10. 来源 KIDS
  11. MUMPS 的软件开发工具
于 2012-08-30T17:29:20.530 回答
3

VitA 是在 MUMPS 上编写的退伍军人管理局的开源 EMR。您可以在此处从 Vista wiki 下载它:OpenVistA 下载页面

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

于 2010-12-13T16:28:42.633 回答
3

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

于 2010-11-12T00:37:51.053 回答
3

看这里:

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

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

HTH 弥敦道

于 2011-01-19T13:16:12.640 回答
0

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

Thewwrite- 的缩写,可以接受,但缩写更惯用。文字!是换行符。

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

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
于 2017-12-11T06:24:35.390 回答
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

于 2018-04-09T09:01:21.597 回答