#
(*$U+ -- enables underscores in identifiers *)

program pascalsets;

type
    charset = set of char;

var
    s : charset;
    i : integer;

procedure finished;
    extern;

procedure fail(line: integer);
    extern;

#define ASSERT(cond) \
    if (not (cond)) then fail(__LINE__)

begin
    s := [];
    for i := 0 to 255 do
        s := s + [chr(i)];

    i := 99; (* to defeat optimisation *)
    ASSERT(chr(42) in s);
    ASSERT(chr(142) in s);
    ASSERT(chr(i) in s);
    s := s - [chr(42)];
    ASSERT(not(chr(42) in s));
    ASSERT(chr(142) in s);
    ASSERT(chr(i) in s);

    finished
end.