[ Non-logical Variables, Arrays, Bags, Shelves and Stores | Reference Manual | Alphabetic Index ]
incval(++ElemSpec)
Increments the contents of the visible non-logical variable or array element ElemSpec by one.
- ElemSpec
- Atom or ground compound term with non negative integer arguments.
Description
Increments the value of the element ElemSpec that must be of type
integer.
If ElemSpec is an atom, it must specify a non-logical variable visible from
the context module.
If ElemSpec is a compound term, it must specify a visible array element.
all its arguments must be non negative integers smaller than the bounds
specified with array/1/2 or variable/1.
In a multithreaded setting, this operation can be considered atomic.
Modes and Determinism
Modules
This predicate is sensitive to its module context (tool predicate, see @/2).
Exceptions
- (4) instantiation fault
- ElemSpec is not instantiated.
- (5) type error
- ElemSpec is a structure whose arguments are not all integers.
- (5) type error
- ElemSpec is neither an atom nor a ground structure.
- (5) type error
- The value or type of ElemSpec is not integer.
- (6) out of range
- Array index in ElemSpec is out of range.
- (41) array or global variable does not exist
- ElemSpec does not designate an existing array or variable.
Examples
Success:
[eclipse]: local(array(a(4), prolog)),
setval(a(1), -2),
incval(a(1)),
getval(a(1), X).
X = -1
yes.
[eclipse]: local(array(g(4), integer)),
incval(g(1)),
getval(g(1), X).
X = 1
yes.
[eclipse]: setval(count, 0),
repeat,
writeln(hello),
incval(count),
getval(count, X),
X >= 3, !.
hello
hello
hello
X = 3
yes.
Error:
incval(X). (Error 4).
incval(a(2.0)). (Error 5).
setval(a, 2.0), incval(a). (Error 5).
local(array(a(2), float)),
incval(a(1)). (Error 5).
local(array(a(10), integer)),
incval(a(-2)). (Error 6).
incval(no_array(0)). (Error 41).
incval(no_var). (Error 41).
See Also
decval / 1, array / 1, array / 2, variable / 1, getval / 2, setval / 2