Думаю так попроще, хотя не уверенна сработает ли foreach
//PascalABC.NET 3.1 сборка 1239
var
m1, m2, m3: set of char;
c: char;
begin
m1 := ['0'..'9'];
m2 := ['.', ',', ':', '?', '!', ';'];
m3 := ['a'..'z'];
writeln('Пересечение множеств:');
foreach c in (m1 * m2 * m3) do
write(c, ' ');
writeln;
writeln('Объединение множеств:');
foreach c in (m1 + m2 + m3) do
write(c, ' ');
writeln;
end.