#!/usr/local/bin/perl
# sort flat file by employee name starting in column 8
#

sub byName { ((substr $a, 8, 12) cmp (substr $b, 8, 12)); }

# initialize loop counter
$i = 0;

# read input file into array of rows
open(F, "out");
while(<F>) { $filerecs[$i++] = $_; }
close(F);
print "unsorted: @filerecs\n";

# sort the array of rows using name sort into sorted_recs array
@sorted_recs = sort sort_by_lob @filerecs;

# write sorted array to standard output
foreach $line (@sorted_recs) { print $line; }


sub sort_by_dctr
{
 %dctrlist=('CON','CH','ACH','CH','DOSC','CH','ELM','CH','ORG','CH','PCS','CH','SAC','CH','BUT','CH','OCSP','CH','BOI','MN','LUB','MN','PHX','MN','RNO','MN','SHN','MN','SHP','MN','SIO','MN','UTA','MN','WLK','MN');
ROW:
	foreach $row (@filerecs)
	{
		($ctr,$dc,$lob,@vals)=split(/\|/, $row, 4);
		foreach $key (%dctrlist)
		{
			if(($dctrlist{$ctr} eq 'CH')&&($ctr ne 'BUT')){ push(@table, $row); next ROW;}
		}
		foreach $key (%dctrlist)
		{
			if(($dctrlist{$ctr} eq 'CH')&&($ctr eq 'BUT')){ push(@table, $row); next ROW; }
		}
		foreach $key (%dctrlist)
		{
			if( $dctrlist{$ctr} eq 'MN'){ push(@table, $row); next ROW; }
		}
		foreach $key (%dctrlist)
		{
			if( $ctr eq 'TOTAL'){ push(@table, $row); next ROW; }
		}
	}
 return @table;
}

sub sort_by_lob
{
 %loblist= ('SAC','NBBC','SHN','NBBC','CON','OCS','UTA','OCS','OCSP','OCS','DOSC','Other','PCS','Other','ACH','Other','ELM','PB','ORG','PB','BUT','PB','BOI','PB','LUB','PB','PHX','PB','RNO','PB','SHP','PB','STPS','PB','SIO','PB','WLK','PB');

	ROW:
  foreach $key (%loblist)
	{
	foreach $row (@filerecs)
			{
			($ctr,$dc,$lob,@vals)=split(/\|/, $row, 4);
					if($loblist{$ctr} eq 'NBBC') { push(@table, $row); next ROW; }
			}
	foreach $row (@filerecs)
			{
			($ctr,$dc,$lob,@vals)=split(/\|/, $row, 4);
					if($loblist{$ctr} eq 'OCS')  { push(@table, $row); next ROW; }
			}
	foreach $row (@filerecs)
			{
			($ctr,$dc,$lob,@vals)=split(/\|/, $row, 4);
					if($loblist{$ctr} eq 'PB' )  { push(@table, $row); next ROW; }
			}
	foreach $row (@filerecs)
			{
			($ctr,$dc,$lob,@vals)=split(/\|/, $row, 4);
					if($loblist{$ctr} eq 'Other'){ push(@table, $row); next ROW; }
			}
	foreach $row (@filerecs)
			{
			($ctr,$dc,$lob,@vals)=split(/\|/, $row, 4);
					if( $ctr eq 'TOTAL'){ push(@table, $row); next ROW; }
			}
	}
 return @table;
}

