If ElemSpec is an atom, it must specify a non-logical variable visible from the caller module.
If ElemSpec is a compound term, it must specify an element visible array. All its arguments must be non negative integer smallers than the bound specified with array/1/2 or variable/1.
Success:
[eclipse]: local(array(a(4), prolog)),
setval(a(0), -2),
decval(a(0)),
getval(a(0),X).
X = -3
yes.
[eclipse]: local(array(g(4, 5), integer)),
decval(g(3, 2)),
getval(g(3, 2), X).
X = -1
yes.
[eclipse]: setval(a, 3),
decval(a),
getval(a, X).
X = 2
yes.
Error:
decval(X). (Error 4).
setval(a, 2.0),
decval(a). (Error 5).
local(array(a(2), float)),
decval(a(1)). (Error 5).
local(array(a(2))),
decval(a(2)). (Error 6).
decval(no_var). (Error 41).
decval(noarray(2, 4)). (Error 41).