Patent ID: 7383387

Claim:
A method comprising: as part of a first pass through all values of a source file, populating a cache with values from the source file; and if the cache is full, determining whether a first next value of the source file is to replace a first value in cache, the first value to be replaced with the first next value if the first value in the cache is called-for in a result file subsequent to the first next value, the result file comprising references to values, the values referred to in the result file being called-for values, the first value being called-for in the result file by one of the references, and an order of the called-for values of the result file being different from an order of values in the source file, the source file having more values than entries in the cache; populating the result file with values from the cache from the first pass; as part of subsequent passes through the source file, populating the cache with values from the source file that are called-for in the result file later than values of the cache at the end of the first pass; and if the cache is full, determining whether a second next value of the source file is to replace a second value in the cache, the second value to be replaced with the second next value if the second value in the cache is called-for in a result file subsequent to the second next value; and appending the result file with values from the cache from the subsequent passes.