2010-11-11 12 views
8

Sto lavorando a uno strumento di analisi per il quale ho bisogno del codice di esempio MUMPS. Qualcuno può fornirmi codice live MUMPS o codice di esempio? Suggerire anche alcuni link per lo stesso.Richiesta codice campione MUMPS

risposta

3

Non credo che questo sia sufficiente per scopi di analisi, ma ci sono molti piccoli esempi su M[UMPS] by Example. Ci sono anche alcuni lunghi campioni sulla pagina MUMPS Wikipedia. Non so se sono isolati o no. Non li ho testati da solo.

3

VistA è un EMR open source per l'amministrazione dei veterani scritto su MUMPS. Puoi scaricarlo dal wiki VistA qui: OpenVistA Download Page

Non ho provato a scaricarlo da solo, quindi potrebbe essere necessario installare MUMPS per ottenere l'accesso alla fonte. In bocca al lupo!

12

Si tratta di alcuni MUMPS che ho scritto per il divertimento. Immagino che se riesci ad analizzare questo, il tuo strumento funziona:

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 

look ma, niente di niente!

Questo emette un orologio binario:

:D Q^ROU 


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

00:13:24 
3

GitHub effettivamente ospitare molti software MUMPS, ma purtroppo ottenere contrassegnati come Objective-C o Matlab, quindi non è facile per la ricerca di codice MUMPS laggiù. Qui ci sono alcuni progetti che conosco sono fatte almeno parzialmente utilizzando Parotite:

  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
0

Ecco "Ciao mondo":

w "Hello world!",!

Il w è l'abbreviazione di write - o è accettabile, ma l'abbr l'eviazione è più idiomatica. Il letterale ! è una nuova riga.

Ecco un'implementazione di Fibonacci, prima senza abbreviazioni poi con

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)

Ecco la stessa cosa con le abbreviazioni più idiomatiche:

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)

ora - ricorsione in parotite è una bella cosa pericolosa da fare - quindi questo potrebbe facilmente esplodere per un grande valore.

Ecco un altro esempio di "MUMPS-y", uno che utilizza effettivamente la struttura di dati singoli di MUMPS, che è essenzialmente una matrice ordinata i cui indici possono essere numeri o stringhe. Il prefisso di questi array con ^ salva su disco. Le cose $ sono funzioni integrate nella lingua. Lo q: è una post-condizione sul comando quit, che significa 'esci se la persona è uguale a ""'.

Qui è senza abbreviazioni, poi con:

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

Ora con abbrevs:

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

Problemi correlati