eval {

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 (@lines)
	{
		($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 $row (@lines)
	{
			($ctr,$dc,$lob,@vals)=split(/\|/, $row, 4);
			foreach $key (%loblist)
			{
					if($loblist{$ctr} eq 'NBBC') { push(@table, $row); next ROW; }
			}
			foreach $key (%loblist)
			{
					if($loblist{$ctr} eq 'OCS')  { push(@table, $row); next ROW; }
			}
			foreach $key (%loblist)
			{
					if($loblist{$ctr} eq 'PB' )  { push(@table, $row); next ROW; }
			}
			foreach $key (%loblist)
			{
					if($loblist{$ctr} eq 'Other'){ push(@table, $row); next ROW; }
			}
			foreach $key (%loblist)
			{
					if( $ctr eq 'TOTAL'){ push(@table, $row); next ROW; }
			}
	}
 return @table;
}
};

