int KeySort( FixedRecordFile& inFile, char* outFileName ) {
RecType obj;
KeyRRN* KEYNODES = new KeyRRN[ inFile.NumRecs( ) ];
// read file and load Keys
for ( int i = 0; i < inFile.NumRecs( ); i++ ) {
inFile.ReadByRRN( obj, i ); // read record i
KEYNODES[i] = KeyRRN( obj.Key( ), i ); // put key and RRN into Keys
}
Sort( KEYNODES, inFile.NumRecs( ) ); // sort Keys
FixedRecordFile outFile; // file to hold records in key order
outFile.Create(outFileName); // create a new file
// write new file in key order
for ( int j = 0; j < inFile.NumRecs( ); j++ ) {
inFile.ReadByRRN( obj, KEYNODES[j].RRN ); // read in key order
outFile.Append ( obj ); // write in key order
}
return 1;
}
|