Node:Pred, Next:private, Previous:pow, Up:Reference
function Pred (i: ordinal_type): ordinal_type;or
function Pred (i: ordinal_type; j: Integer): ordinal_type;
or, with extended syntax (--extended-syntax or {$X+}),
function Pred (p: Pointer_type): Pointer_type;or
function Pred (p: Pointer_type; j: Integer): Pointer_type;
Returns the predecessor of the ordinal_type value i,
or, if the second argument j is given, its jth
predecessor. For integer values i, this is i - 1 (or
i - j). (No, Pred does not work faster than
plain subtraction. Both are optimized the same way, often to a
single machine instruction.)
If extended syntax is on, the argument may also be a pointer value.
In this case, the address is decremented by the size of the variable
pointed to, or, if j is given, by j times the size of
the variable pointed to. If p points to an element of an
array, the returned pointer will point to the (jth) previous
element of the array.
The Pred function is defined in ISO 7185 Pascal. The optional
second parameter is defined in ISO 10206 Extended Pascal.
Application of Pred to pointers is defined in Borland Pascal.
The combination of the second argument with application to pointers
is a GNU Pascal extension.
program PredDemo;
type
Metasyntactical = (foo, bar, baz);
var
m: Metasyntactical;
c: Char;
a: array [1 .. 7] of Integer;
p: ^Integer;
begin
m := Pred (bar); { foo }
c := Pred ('Z', 2); { 'X' }
a[1] := 42;
a[4] := Pred (a[1]); { 41 }
a[5] := Pred (a[4], 3); { 38 }
{$X+}
p := @a[5];
p := Pred (p); { now p points to a[4] }
p := Pred (p, 3); { now p points to a[1] }
end.