sort()
{
int i, runs;
extern int maxfiles, unit;
extern char FilStat[];
extern struct rec LastRec[];
/*** Initialize input/output files ***/
OpenRead( 1 );
for (i=2; i<=maxfiles; i++)
if ( i <= maxfiles/2 ) FilStat[i] = '-';
else OpenWrite( i );
distribute();
do { /*** re-assign files ***/
for (i=1; i<=maxfiles; i++)
if (FilStat[i] == 'o') {
OpenRead( i );
LastRec[i] = ReadFile(i);
}
else OpenWrite( i );
for (runs=1; merge(nextfile()) != 'done'; runs++);
} while (runs>1);
return( unit );
};
|