	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 );
	};
