PROGRAM setranges10(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 runs for i outside set 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; extra: Boolean = false; start, endr, ext_i: 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 := 32; endr := 95; FOR i:= 0 TO maxN DO flag[i] := false; FOR i IN [start .. endr] DO flag[i] := true; FOR i:= 0 TO maxN DO IF (NOT extra AND ((iendr)) AND (flag[i] = true)) THEN BEGIN extra := true; ext_i := i; END; IF (NOT extra) THEN writeln('OK') ELSE writeln('Failed: ',ext_I,' set but not IN [',start,'..',endr,']'); END.