program pptest3; type pointer = ^arecord; arecord = record firstfield: integer; secondfield: integer; a: array [1 .. 10] of pointer; p: pointer end; bit = 0 .. 1; fourbits = packed record onebit: bit; twobits: packed array [bit] of bit; anotherbit: bit end; var r1: record firstfield: integer; secondfield: integer; a: array [1 .. 10] of record firstfield: integer; secondfield: integer; end end; r2: pointer; r3: fourbits; a: packed array [1 .. 40] of fourbits; i: integer; begin { simple record references } with r1 do ; with r1.a[2] do ; with r1.a[i] do ; with r1, a[i] do ; with r1.a[i] do firstfield := secondfield; { pointer references } with r2^ do secondfield := firstfield; with r2^.a[1]^ do ; with r2^.a[i]^.p^ do ; { part word references } with r3 do anotherbit := onebit; with a[2] do twobits[i] := 1; with a[i] do twobits[i] := 1 end { pptest10 }.