1{$bitpacking on}
2
3type
4  tenum = (ea,eb,ec,ed,ee,ef,eg,eh);
5  tr = packed record
6         a: 0..3;    // 2 bits
7         w: word;    // 16 bits;
8         b: 0..31;   // 5 bits;
9         c: boolean; // 1 bit
10         d: 0..31;   // 5 bits
11         e: tenum;   // 3 bits
12       end;
13
14procedure t(var r2: tr);
15var
16  r: tr;
17begin
18  r.a := 2;
19  r.w := 32768;
20  r.b := 23;
21  r.c := true;
22  r.d := 5;
23  r.e := ed;
24  r2 := r;
25end;
26
27var
28  r: tr;
29
30begin
31  t(r);
32  if (r.a <> 2) or
33     (r.w <> 32768) or
34     (r.b <> 23) or
35     (not r.c) or
36     (r.d <> 5) or
37     (r.e <> ed) then
38    halt(1);
39end.
40