2010-10-13 7 views
2

Je travaille sur MUMPS dans mon récent projet. J'ai une question concernant les indicateurs nus. Je suis confus entre les routines et les références globales nues.Différence entre les routines et les indicateurs globaux nus

Quelqu'un peut-il m'aider à comprendre la différence entre les routines et les indicateurs nus? La syntaxe des routines semble très similaire à la syntaxe des indicateurs nus.

Répondre

7

Je ne suis pas sûr de bien comprendre votre question, mais je suppose que vous faites allusion au fait que les références Routine et Global commencent par un caret (^).

Les routines utilisent le signe d'insertion pour faire la distinction entre la routine et une étiquette dans la routine en cours. Par exemple:

D COMPUTATION   ; executes the COMPUTATION label in the current routine 
D ^COMPUTATION  ; executes the COMPUTATION routine 
D SUBCOMP^COMPUTATION ; executes the SUBCOMP label in the COMPUTATION routine. 

Pour les variables, le signe d'insertion indique qu'il s'agit d'une variable globale et non d'une variable locale. C'est le cas que vous utilisiez ou non des références nues (c'est là que d'autres précisions sur votre question pourraient être en ordre, puisque si je comprends bien, la référence étant nue ne fait aucune différence). La différence étant, bien sûr, avec la référence nue, vous pouvez supprimer le nom de la variable, et tous sauf le dernier indice du global. Par exemple:

S ^MYGLOB(1,1)="one" 
S ^MYGLOB(1,2)="two" 

est équivalent à

S ^MYGLOB(1,1)="one" 
S ^(2)="two" ;naked, ewww 

Tout cela étant dit, je vous conseille vivement de ne pas utiliser des références nues. Ils sont destinés à gagner du temps lors de la saisie de code à partir de l'invite de commande, mais sont très dangereux dans le code qui doit être maintenu. Par exemple, si une référence à^OTHERGLOB était insérée entre les deux lignes de code ci-dessus,^(2) référencerait maintenant^OTHERGLOB (2), et non^MYGLOB (1,2). Sans parler, c'est une douleur à lire.

+0

Merci Rob. Ça m'a beaucoup aidé. – Tina

+0

+1 Bonne réponse Rob! – rkg

Questions connexes