Node:Subrange Types, Next:Array Types, Up:Type Definition Possibilities
GNU Pascal supports Standard Pascal's subrange types:
program SubrangeDemo;
type
MonthInt = 1 .. 12;
Capital = 'A' .. 'Z';
ControlChar = ^A .. ^Z; { `^A' = `Chr (1)' is a BP extension }
begin
end.
Also possible: Subranges of enumerated types:
program EnumSubrangeDemo;
type
{ This is an enumerated type. }
Days = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
{ This is a subrange of `Days'. }
Working = Mon .. Fri;
begin
end.
To increase performance, variables of such a type are aligned in a
way which makes them fastest to access by the CPU. As a result,
1 .. 12 occupies 4 bytes of storage on an IA32 CPU.
For the case you want to save storage at the expense of speed, GPC
provides a packed variant of these as an extension:
program PackedSubrangeDemo; type MonthInt = packed 1 .. 12; begin end.
A variable of this type occupies the shortest possible (i.e., addressable) space in memory - one byte on an IA32 compatible CPU.
See also: packed.