PROGRAM setranges9(output); { Written by: Mirsad Todorovac Nov 2001; copying by GPL. ------------------------------------------------------------ Stresses setrange construction and using with IN in FOR loop Checks if FOR i IN [..] loop mistakenly skips some i inside [] range. (within 0..maxN range). lasts less than few seconds where I've tested it. t ~ maxN} CONST maxN = 255; VAR flag: ARRAY [0..maxN] OF Boolean; i: Cardinal; missing: Boolean = false; start, endr, misI: 0..maxN; BEGIN {To provoke a bug we use one method to set array, and different to test! (requires integer for loop to work)} start := 0; endr := maxN; FOR i:= 0 TO maxN DO flag[i] := false; FOR i IN [start .. endr] DO flag[i] := true; FOR i:= start TO endr DO IF (NOT missing AND NOT (flag[i] = true)) THEN BEGIN missing := true; misI := i; END; IF (NOT missing) THEN writeln('OK') ELSE writeln('Failed: ',misI,' not set but IN [',0,'..',maxN,']'); END.