Кстати, майкрософтовский вариант у меня выполняется медленнее:## Код:
```
PROCEDURE IncArray;
   VAR dim, j, rank: INTEGER;
   BEGIN
      rank := arrayRank;
      INC(indices[rank - 1]);
      dim := rank - 1;
      WHILE dim >= 0 DO
         IF indices[dim] > upperBound[dim] THEN
            IF dim = 0 THEN
               completed := TRUE;
               RETURN
            END;
            j := dim;
            WHILE j < rank DO
               indices[j] := lowerBound[j];
               INC(j)
            END;
            INC(indices[dim - 1])
         END;
         DEC(dim)
      END
   END IncArray;
```
