A MUMPS nyelvben minden adat logikailag egy változó hosszúságú ASCII karakterlánc. Ha az adat felhasználás alatt van, akkor abban a formátumban értelmeződik a karakterlánc, ahogy azt a környezet igényli. Ha aritmetikai műveletet végzünk, akkor számként (egész, vagy lebegőpontos számként), ha logikai műveletet végzünk, akkor igaz, vagy hamis értékként (valójában ebben az esetben is számként lesz értelmezve: igaz-1, hamis-0), és ha karakteres műveletet végzünk, akkor ASCII karakterláncként lesz értelmezve a változó.
A számokat egészként, vagy lebegőpontos számként lehet reprezentálni. Az egész számok numerikus karakterekből állnak, amelyeket megelőzhet egy mínusz (-) karakter. Legalább egy numerikus karakternek kell szerepelnie a változóban. A lebegőpontos számok hasonlóak az egész számokhoz, azzal a különbséggel, hogy van törtrészük, amit egy pont (.) karakter választ el. A lebegőpontos számoknál meg lehet adni egy exponenciális részt is egy 'E' karakter után.
A karakterláncokat idézőjelek (") közé kell tenni. Ha a karakterláncba szeretnénk egy idézőjelet elhelyezni, akkor azt két idézőjellel tehetjük meg.
Konstansok olyan numerikus értékek, melyek értékei nem változtathatók meg. Az értékük lehet egész, vagy valós szám is. A konstansokat általában kifejezésekben, vagy feltételeknél használjuk.
A változók szimbolikus nevek adatokhoz. Két fajta változó létezik: lokális és globális.
A lokális változók csak egy terminálás erejéig élnek. Értéket a SET, vagy a READ parancsokkal, vagy paraméterátadáskor kaphatnak. Élettartamukat megrövidíteni a KILL paranccsal, vagy egy új változó létrehozásánál, a NEW paranccsal lehet. Miután egy lokális változó létrejött, csak az a felhasználó használhatja, aki létrehozta. A lokális változók neveinek egy százalék (%) karakterrel, vagy egy alfa karakterrel kell, hogy kezdődjenek. Utána alfanumerikus karakterek szerepelhetnek. A változók neveinek hossza tetszőleges lehet, de a fordító csak az első 8 karaktert figyeli.
Globális változók (vagy globálok) olyan változók, amik létrejötte után bármelyik felhasználó számára elérhetők. Létrehozása és nevének lehetőségei teljesen megegyeznek a lokális változóknál leírtakkal, azzal a különbséggel, hogy a nevének mindenképpen a kalap (^) karakterrel kell kezdődnie. A globális változók létrehozásuk után bekerülnek a nyelvet implementáló rendszer adatbázis-rendszerébe.
A speciális változók feladata információk szolgáltatása a rendszer állapotáról. A speciális változók mindig $ jellel kezdődnek. Az ANSI alap MUMPS speciális változóit az egyes implementációk saját speciális változókkal egészítik ki. Ezek általában Z betűvel kezdődnek.
Minden változót úgy kell elképzelni, mint egy fát. Így ha létre akarunk hozni egy tömböt, akkor nincs semmi teendők, csak a változót (legyen az lokális vagy globális) indexelnünk kell egy változóval. Az indexelés úgy történik, hogy a változó neve után egy zárójelben felsoroljuk az indexelő változókat. Egy egyszerű tömbre történő hivatkozások az alábbiaknak megfelelően nézhetnek ki:
De ennél sokkal bonyolultabb fa-struktúrák is kialakíthatók, ha több indexet használunk, melyek akár karakterláncok, vagy más változók is lehetnek.
A bonyolult indexelés megkönnyítésére alkották meg a csupasz hivatkozásokat, amiket a globálok indexelésénél lehet alkalmazni. A hivatkozás lényege, hogy az utolsó hivatkozott globálra lehet hivatkozni úgy, hogy nem írunk le semmit, csak a globál utolsó indexét a megfelelő állapotában.
Például a következő két parancssor ekvivalens:
Minden kifejezést a fordító balról jobbra értékel ki. Numerikus kifejezéseknél először minden változó numerikus értékké konvertálódik, csak ezután kezdődik meg a kifejezés kiértékelése. A boolean típusú kifejezéseknél a kifejezés értéke 0, illetve 1 lesz, a kifejezés hamis, illetve igaz mivoltától függően.
Az alábbi táblázatban megtalálható a nyelv összes operátora és annak leírása.
Operátor | Név | Típus | Leírás |
+ | összeadás | bináris | Hagyományos összeadás két számon. |
& | és | bináris | Logikai és műveletet végez a két operanduson, miután számmá konvertálta őket. |
_ | összefűzés | bináris | Két karakterlánc összefűzése. |
/ | osztás | bináris | Hagyományos osztás két számon. |
= | egyenlőség | bináris | Egyenlőségvizsgálat a két operanduson. |
** | hatványozás | bináris | Az első operandust a második operandus hatványára emeli. |
> | nagyobb | bináris | Nagyobb vizsgálat a két számon. |
# | hexadecimális | unáris | Hexadecimális számként értelmezi az operandust. |
@ | indirekció | unáris | Indirekten értelmezi az operandust. |
\ | egész osztás | bináris | Egész osztást végez a két operanduson. |
< | kevesebb | bináris | Kevesebb összehasonlítás a két operanduson. |
- | mínusz | unáris | Ellenkező előjelűvé konvertálja az operandust. |
# | maradék | bináris | Maradékos osztás a két számon. |
* | szorzás | bináris | Szorzás a két számon. |
' | negáció | unáris | Negáció az operanduson, ami akár operátor is lehet. Ebben az esetben a művelet eredményének inverzét kapjuk. |
! | vagy | bináris | Logikai vagy művelet a két operanduson, miután számmá konvertálta őket. |
? | mintaillesztés | bináris | A második operandust mintaként illeszti az első operandusra. Mintaillesztésre a következőkben részletesebben kitérünk. |
+ | plusz | unáris | Az operandust számként értelmezi. |
[ | karakterlánc tartalmaz | bináris | Leteszteli, hogy az első operandus tartalmazza-e a második operandust. |
] | karakterlánc követi | bináris | Leteszteli, hogy az első operandus követi-e a második operandust az ASCII kódsorrendben. |
- | kivonás | bináris | Hagyományos kivonás két számon. |
Karakter | Jelentés |
A vagy a | Az 52 alfabetikus karakter. |
C vagy c | A 33 ASCII vezérlő karakter (a 0-31-es és a 127-es ASCII kódú karakterek). |
E vagy e | Mind a 128 ASCII karakter, plusz a 128 kiterjesztett ASCII karakter. |
L vagy l | A 26 kisbetűs karakter. |
N vagy n | A 10 numerikus karakter 0-tól 9-ig. |
P vagy p | A 32 írásjel karakter és a szóköz karakter. |
U vagy u | A 26 nagybetűs karakter. |
( | Logikai vagy csoportosítás kezdete. |
) | Logikai vagy csoportosítás vége. |
, | Logikai vagy csoportban az egyes elemek elválasztása. |
A minta felépítése Min.Max Kód alakú részekből álló sorozat. A kód egy a megfelelő speciális mintaillesztő karakterek közül, vagy egy minta, idézőjelek közé zárva. A Min, Max a minta előfordulásának mennyiségét jelzi.
Például:
Mivel az indirekcióval megadott minta illeszkedik a szövegre, ezért a parancssor egy 1-est fog az aktuális eszközre írni.