For ordinal types:
procedure Dec (var x: ordinal_type);
or
procedure Dec (var x: ordinal_type; Amount: and_integer_type);
For pointer types:
procedure Dec (var p: any_pointer_type);
or
procedure Dec (var p: any_pointer_type; Amount: and_integer_type);
For ordinal types, Dec decreases the value of x by one or by amount if specified.
If the argument p is pointing to a specified type (typed pointer), Dec decreases the address of p by the size of the type p is pointing to or by amount times that size respectively. If p is an untyped pointer (i.e. p is of type Pointer), p is decreased by one, otherwise by amount if specified.
Dec is a Borland Pascal extension. The combination of the second argument with application to pointers is a GNU Pascal extension.
program DecDemo;
var
x: Integer;
y: array [1 .. 5] of Integer;
p: ^Integer;
begin
x := 9;
Dec (x, 10); { yields -1 }
{$X+} { Turn on extended systax }
p := @y[5]; { p points to y[5] }
Dec (p, 3) { p points to y[2] }
end.