Egy változó egy olyan entitás, amelynek változtatható értéke van, amely értéknek a típusa fix.
VariableDefinitionPart = "var" VariableDefinition { VariableDefinition }.
VariableDefinition = VariableGroup ";".
VariableGroup = VariableName { "," VariableNAme } ":" TypeName.
VariableName = Name.
A következõ változó definíció:
v1,v2, ...vn:T;
egy eljárásban bevezeti a v1,v2,...,vn neveket, amelyek a T típus diszjunkt változó-osztályait jelölik. T-nek egy ismert típusnévnek kell lennie. Az eljárás minden aktiválása során ezen változóknak új példányai keletkeznek, definiálatlan kezdõ értékkel.
Példák
Variable Access = NamedVariableAcces | IndexedAccess | FieldAccess .
A változó hivatkozás egy változónak, mint operandusnak a használatát jelöli.
Mikor egy ágensváltozó hivatkozást hajt végre, bármely index kifejezés, amely a változó hivatkozásban szerepel, egyszer értékelődik ki, az előfordulás sorrendjében. Ezt követően az ágens a saját változói között lokalizálja a változót.
NamedVariableAcces = VariableName .
Azokat a változókat, amelyekre egyszerűen a nevükkel hivatkozunk, egyszerű változóknak nevezzük. Egy egyszerű változó típusát a változó- vagy paraméter- definíció során adjuk meg. Egy P ágens eljárás nem hivatkozhat olyan változóra, amely a P számára globális.
Példa
IndexedAccess = ArrayVariableAccess "[" IndexExpression "]".
ArrayVariableAccess = VariableAccess.
IndexExpression = Expression.
Egy változó v:T, amelynek típusa
T = array [min..max] of E;
Egy tömb értekét tárolja. A változó |T| különböző változó kompozíciója, amelyeket indexelt változóknak nevezünk. Mindegyik indexelt változó a tömb értékének egy-egy elemét tartalmazza. A v[e] indexelt hivatkozás a v-nek az e-vel indexelt változóját jelöli. v-nek T típusúnak kell lennie, és az index kifejezés e típusának meg kell egyeznie T index-típusával. Az indexelt hivatkozás típusa a tömb elemeinek E típusa lesz. Ha az e kifejezés kívül esik a min..max tartományon, akkor az indexelt kifejezés értéke definiálatlan lesz.
Példa
FieldAccess = RecordVariableAccess "." FieldName .
RecordVariableAccess = VariableAccess .
Egy v:T típusú változó, ahol
T = record f1:T1; f2:T2; ...fn:Tn end;
Egy rekord értéket tárol. A változó n különböző változó kompozíciója, melyeket mezőváltozóknak nevezünk.
A v.fi mező hivatkozás v-nek azt a mező változóját jelöli, amely az fi mező értékét tartalmazza. v-nek T típusúnak kell lennie, és fi-nek az f1, f2, ..., fn mezőnevek egyikének kell lennie. A mező hivatkozás típusa az fi mező Ti típusa lesz.
Példa
PortAccess = VariableAccess.
Egy v:T típusú változó, ahol
T = [s1(T1), s2(T2), ..., sn(Tn)];
egy port értéket tárol.
Ha v értéke nil T, a v port hivatkozás egy nem létező csatornát jelöl; különben egy olyan csatornát jelöl, amelynek az abc-je T-vel van megadva. A csatorna hivatkozás típusa T lesz.
Maga a csatorna nem egy változó, hanem egy-két vagy több ágens által használt kommunikációs eszköz.