2010-11-11 4 views
8

Je travaille sur un outil d'analyse pour lequel j'ai besoin d'un exemple de code MUMPS. Quelqu'un peut-il me fournir un code live MUMPS ou un exemple de code? Suggérer également quelques liens pour le même.Besoin MUMPS Exemple de code

Répondre

3

Je ne pense pas que cela suffira à des fins d'analyse, mais il y a beaucoup de petits exemples à M[UMPS] by Example. Il y a aussi quelques longs échantillons sur la page MUMPS Wikipedia. Je ne sais pas s'ils sont seuls ou non. Je ne les ai pas testés moi-même.

3

VistA est un DME open source pour l'administration des anciens combattants écrit sur MUMPS. Vous pouvez le télécharger depuis le wiki VistA ici: OpenVistA Download Page

Je n'ai pas essayé de le télécharger moi-même, vous devrez donc installer MUMPS pour avoir accès à la source. Bonne chance!

12

C'est quelques OREILLONS je l'ai écrit pour le plaisir. Je suppose que si vous pouvez analyser cela, votre outil fonctionne:

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)[email protected],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 

regardez ma, pas de littéraux!

Ceci produit une horloge binaire:

:D Q^ROU 


|..|..|..| 
|..|..|.0| 
|..|.0|0.| 
|..|00|..| 

00:13:24 
0

Voici "Bonjour tout le monde":

w "Hello world!",!

Le w est une abréviation de write - soit est acceptable, mais le abbr l'éviction est plus idiomatique. Le littéral ! est un retour à la ligne.

Voici une mise en œuvre de fibonacci, d'abord sans abréviations puis avec

innerFibonacci(value,cache) . if cache(value)'="" 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)

est ici la même chose avec les abréviations plus idiomatiques:

innerFibonacci(value,cache) . i cache(value)'="" 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)

maintenant - récursion dans OREILLONS est une jolie chose dangereuse à faire - donc cela pourrait facilement exploser pour une grande valeur.

Voici un peu plus "MUMPS-y" exemple, qui tire parti de la structure de données unique de MUMPS, qui est essentiellement un tableau trié dont les indices peuvent être des nombres ou des chaînes. Le préfixage de ces tableaux avec ^ est enregistré sur le disque. Les choses $ sont des fonctions intégrées à la langue. Le q: est une postcondition sur la commande quit, signifiant 'quitter si personne est égal à' "'.

Ici, il est sans abréviation, puis avec:

peopleFoodCombinations(people,food) . new person . for set person=$order(people(person)) quit:person="" do . . set ^PEOPLE(person,"favoriteFood")=food(person) . quit

Maintenant, avec abbrevs:

peopleFoodCombinations(people,food) . n person . f s person=$o(people(person)) q:person="" d . . s ^PEOPLE(person,"favoriteFood")=food(person) . q