1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
PROGRAM SetIncl;
{
This program demonstrates a set inclusion test bug.
(After two days passed to track down a very perverse program error....)
(By Louis Jean-Ruichard)
}
TYPE
eAttr = ( e0, e1, e2, e3, e4, e5, e6, e7 );
entityP = ^entity;
entity =
RECORD
attr : SET OF eAttr;
END;
VAR
ep : entityP;
e : entity;
BEGIN
e.attr:=[e2,e4,e7,e1,e0];
WITH e DO
IF ([e1,e0] <= attr)
THEN Writeln('A1: [e1,e0] is included in attr')
;
New(ep);
ep^.attr:=[e2,e4,e7,e1,e0];
WITH ep^ DO
IF ([e1,e0] <= attr)
THEN Writeln('A2: [e1,e0] is included in attr')
ELSE
begin
Writeln('A2 statement incorrectly executed');
Halt(1);
end;
;
END.
|